Skip to content

Commit 8d1e604

Browse files
committed
revert most of level format modifications
1 parent 4e2795e commit 8d1e604

File tree

5 files changed

+30
-294
lines changed

5 files changed

+30
-294
lines changed

Converter/Definitions/FEZ/Level.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@ internal class Level
6565
public string SongName { get; set; }
6666

6767
[XnbProperty]
68-
public int FarAwayPlaceFadeOutStart { get; set; }
68+
public int FAPFadeOutStart { get; set; }
6969

7070
[XnbProperty]
71-
public int FarAwayPlaceFadeOutLength { get; set; }
71+
public int FAPFadeOutLength { get; set; }
7272

7373
[XnbProperty(UseConverter = true)]
7474
public Dictionary<TrileEmplacement, TrileInstance> Triles { get; set; }

Converter/XNB/Formats/Json/CustomStructures/ModifiedArtObjectInstance.cs

-102
This file was deleted.

Converter/XNB/Formats/Json/CustomStructures/ModifiedLevel.cs

+17-24
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,16 @@ internal class ModifiedLevel
4040
public bool LowPass { get; set; }
4141

4242
// these are presumably unused
43-
//public int FarAwayPlaceFadeOutStart { get; set; }
44-
//public int FarAwayPlaceFadeOutLength { get; set; }
43+
// FAP stands for Far Away Place
44+
public int FAPFadeOutStart { get; set; }
45+
public int FAPFadeOutLength { get; set; }
4546

4647
public string TrileSetName { get; set; }
4748
public List<ModifiedTrile> Triles { get; set; }
4849
public Dictionary<int, ModifiedTrileGroup> Groups { get; set; }
49-
public Dictionary<int, ModifiedVolume> Volumes { get; set; }
50+
public Dictionary<int, Volume> Volumes { get; set; }
5051
public Dictionary<int, Script> Scripts { get; set; }
51-
public Dictionary<int, ModifiedArtObjectInstance> ArtObjects { get; set; }
52+
public Dictionary<int, ArtObjectInstance> ArtObjects { get; set; }
5253
public Dictionary<int, BackgroundPlane> BackgroundPlanes { get; set; }
5354
public Dictionary<int, MovementPath> Paths { get; set; }
5455
public Dictionary<int, NpcInstance> NonPlayerCharacters { get; set; }
@@ -96,8 +97,8 @@ public ModifiedLevel(Level level)
9697
WaterHeight = level.WaterHeight;
9798
WaterType = level.WaterType;
9899
SongName = level.SongName;
99-
//FarAwayPlaceFadeOutStart = level.FarAwayPlaceFadeOutStart;
100-
//FarAwayPlaceFadeOutLength = level.FarAwayPlaceFadeOutLength;
100+
FAPFadeOutStart = level.FAPFadeOutStart;
101+
FAPFadeOutLength = level.FAPFadeOutLength;
101102
MutedLoops = level.MutedLoops;
102103
AmbienceTracks = level.AmbienceTracks;
103104
SequenceSamplesPath = level.SequenceSamplesPath;
@@ -107,6 +108,8 @@ public ModifiedLevel(Level level)
107108
BackgroundPlanes = level.BackgroundPlanes;
108109
Paths = level.Paths;
109110
NonPlayerCharacters = level.NonPlayerCharacters;
111+
Volumes = level.Volumes;
112+
ArtObjects = level.ArtObjects;
110113

111114
// sort tiles into modified structures
112115
Triles = new();
@@ -123,12 +126,6 @@ public ModifiedLevel(Level level)
123126

124127
// create groups of modified paths
125128
Groups = level.Groups.ToDictionary(pair=>pair.Key, pair=>new ModifiedTrileGroup(pair.Value));
126-
127-
// convert volumes
128-
Volumes = level.Volumes.ToDictionary(pair => pair.Key, pair => new ModifiedVolume(pair.Value));
129-
130-
// convert art objects
131-
ArtObjects = level.ArtObjects.ToDictionary(pair => pair.Key, pair => new ModifiedArtObjectInstance(pair.Value));
132129
}
133130

134131
public Level ToOriginal()
@@ -155,8 +152,8 @@ public Level ToOriginal()
155152
level.WaterHeight = WaterHeight;
156153
level.WaterType = WaterType;
157154
level.SongName = SongName;
158-
//level.FarAwayPlaceFadeOutStart = FarAwayPlaceFadeOutStart;
159-
//level.FarAwayPlaceFadeOutLength = FarAwayPlaceFadeOutLength;
155+
level.FAPFadeOutStart = FAPFadeOutStart;
156+
level.FAPFadeOutLength = FAPFadeOutLength;
160157
level.MutedLoops = MutedLoops;
161158
level.AmbienceTracks = AmbienceTracks;
162159
level.SequenceSamplesPath = SequenceSamplesPath;
@@ -166,30 +163,26 @@ public Level ToOriginal()
166163
level.BackgroundPlanes = BackgroundPlanes;
167164
level.Paths = Paths;
168165
level.NonPlayerCharacters = NonPlayerCharacters;
166+
level.Volumes = Volumes;
167+
level.ArtObjects = ArtObjects;
169168

170169
// parse triles back into their original structure
171-
foreach(var modTrile in Triles)
170+
foreach (var modTrile in Triles)
172171
{
173172
var trile = modTrile.ToOriginal();
174-
if (!level.Triles.ContainsKey(modTrile.Position))
173+
if (!level.Triles.ContainsKey(modTrile.Emplacement))
175174
{
176-
level.Triles[modTrile.Position] = trile;
175+
level.Triles[modTrile.Emplacement] = trile;
177176
}
178177
else
179178
{
180-
level.Triles[modTrile.Position].OverlappedTriples.Add(trile);
179+
level.Triles[modTrile.Emplacement].OverlappedTriples.Add(trile);
181180
}
182181
}
183182

184183
// put trile instances back into groups
185184
level.Groups = Groups.ToDictionary(pair => pair.Key, pair => pair.Value.ToOriginal(level));
186185

187-
// convert volumes back
188-
level.Volumes = Volumes.ToDictionary(pair => pair.Key, pair => pair.Value.ToOriginal());
189-
190-
// convert art objects back
191-
level.ArtObjects = ArtObjects.ToDictionary(pair => pair.Key, pair => pair.Value.ToOriginal());
192-
193186
return level;
194187
}
195188
}

Converter/XNB/Formats/Json/CustomStructures/ModifiedTrile.cs

+11-95
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,11 @@ namespace FEZRepacker.Converter.XNB.Formats.Json.CustomStructures
88
// since in most cases only these are actually changing
99
internal class ModifiedTrile
1010
{
11-
public TrileEmplacement Position { get; set; }
12-
public FaceOrientation Orientation { get; set; }
11+
public TrileEmplacement Emplacement { get; set; }
12+
public Vector3 Position { get; set; }
13+
public byte Phi { get; set; }
1314
public int Id { get; set; }
14-
public ModifiedTrileInstanceSettings? Settings { get; set; }
15-
16-
private static FaceOrientation[] OrientationLookup = new FaceOrientation[4]
17-
{
18-
FaceOrientation.Back,
19-
FaceOrientation.Left,
20-
FaceOrientation.Front,
21-
FaceOrientation.Right
22-
};
15+
public TrileInstanceActorSettings? ActorSettings { get; set; }
2316

2417
public ModifiedTrile()
2518
{
@@ -28,100 +21,23 @@ public ModifiedTrile()
2821

2922
public ModifiedTrile(TrileEmplacement position, TrileInstance instance)
3023
{
31-
Position = position;
24+
Emplacement = position;
25+
Position = instance.Position;
3226
Id = instance.TrileId;
33-
Orientation = OrientationLookup[instance.PhiLight];
34-
Settings = new ModifiedTrileInstanceSettings(position, instance);
35-
if (Settings.IsUnnecessary(true)) Settings = null;
27+
Phi = instance.PhiLight;
28+
ActorSettings = instance.ActorSettings;
3629
}
3730

3831
public TrileInstance ToOriginal()
3932
{
4033
TrileInstance instance = new TrileInstance();
4134

42-
instance.Position = new Vector3(Position.X, Position.Y, Position.Z);
43-
instance.PhiLight = (byte)Array.IndexOf(OrientationLookup, Orientation);
35+
instance.Position = Position;
36+
instance.PhiLight = Phi;
4437
instance.TrileId = Id;
45-
46-
if (Settings != null)
47-
{
48-
instance.Position += Settings.Offset;
49-
instance.ActorSettings = Settings.ToOriginal();
50-
}
38+
instance.ActorSettings = ActorSettings;
5139

5240
return instance;
5341
}
5442
}
55-
56-
class ModifiedTrileInstanceSettings
57-
{
58-
public Vector3 Offset { get; set; }
59-
60-
// Assuming it's unused, haven't seen it used anywhere in the
61-
// decompiled source code, and in all maps it has a value of null.
62-
//public int? ContainedTrile { get; set; }
63-
64-
public string SignText { get; set; }
65-
public bool[] Sequence { get; set; }
66-
public string SequenceSampleName { get; set; }
67-
public string SequenceAlternateSampleName { get; set; }
68-
public int? HostVolume { get; set; }
69-
70-
public ModifiedTrileInstanceSettings()
71-
{
72-
SignText = "";
73-
Sequence = new bool[0];
74-
SequenceSampleName = "";
75-
SequenceAlternateSampleName = "";
76-
}
77-
78-
public ModifiedTrileInstanceSettings(TrileEmplacement position, TrileInstance instance)
79-
{
80-
Vector3 trilePos = new Vector3(position.X, position.Y, position.Z);
81-
Offset = instance.Position - trilePos;
82-
83-
if (instance.ActorSettings != null)
84-
{
85-
SignText = instance.ActorSettings.SignText;
86-
Sequence = instance.ActorSettings.Sequence;
87-
SequenceSampleName = instance.ActorSettings.SequenceSampleName;
88-
SequenceAlternateSampleName = instance.ActorSettings.SequenceAlternateSampleName;
89-
}
90-
else
91-
{
92-
SignText = "";
93-
Sequence = new bool[0];
94-
SequenceSampleName = "";
95-
SequenceAlternateSampleName = "";
96-
}
97-
}
98-
99-
public bool IsUnnecessary(bool includingOffset = false)
100-
{
101-
return
102-
(Offset.Length() == 0 || !includingOffset) &&
103-
SignText.Length == 0 &&
104-
Sequence.Length == 0 &&
105-
SequenceSampleName.Length == 0 &&
106-
SequenceAlternateSampleName.Length == 0 &&
107-
!HostVolume.HasValue;
108-
}
109-
110-
public TrileInstanceActorSettings? ToOriginal()
111-
{
112-
if (!IsUnnecessary())
113-
{
114-
var actorSettings = new TrileInstanceActorSettings();
115-
116-
actorSettings.SignText = SignText;
117-
actorSettings.Sequence = Sequence;
118-
actorSettings.SequenceSampleName = SequenceSampleName;
119-
actorSettings.SequenceAlternateSampleName = SequenceAlternateSampleName;
120-
actorSettings.HostVolume = HostVolume;
121-
122-
return actorSettings;
123-
}
124-
else return null;
125-
}
126-
}
12743
}

0 commit comments

Comments
 (0)