Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 86ada44

Browse files
Update to 1.2.3
Added option to remove Invalid CJK characters. Updated TrackDesign class. ColorRemapping Now has ToName extension.
1 parent 25f6ce7 commit 86ada44

File tree

7 files changed

+89
-21
lines changed

7 files changed

+89
-21
lines changed

‎RCT2ObjectData/Drawing/ColorRemapping.cs‎

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,4 +134,55 @@ public enum RemapColors : int {
134134
Pink = 30,
135135
Salmon = 31
136136
}
137+
138+
/**<summary>Extensions for remap colors.</summary>*/
139+
public static class RemapColorsExtensions {
140+
/**<summary>Gets the proper name of the remap color.</summary>*/
141+
public static string ToName(this RemapColors remap) {
142+
switch (remap) {
143+
case RemapColors.None: return "None";
144+
#region Row 1
145+
case RemapColors.Black: return "Black";
146+
case RemapColors.Gray: return "Gray";
147+
case RemapColors.White: return "White";
148+
case RemapColors.Indigo: return "Indigo";
149+
case RemapColors.SlateBlue: return "Slate Blue";
150+
case RemapColors.Purple: return "Purple";
151+
case RemapColors.Blue: return "Blue";
152+
case RemapColors.LightBlue: return "Light Blue";
153+
#endregion
154+
#region Row 2
155+
case RemapColors.Frost: return "Frost";
156+
case RemapColors.Water: return "Water";
157+
case RemapColors.LightWater: return "Light Water";
158+
case RemapColors.Green: return "Green";
159+
case RemapColors.SeaGreen: return "Sea Green";
160+
case RemapColors.DarkOliveGreen: return "Dark Olive Green";
161+
case RemapColors.Lime: return "Lime";
162+
case RemapColors.OliveDrab: return "Olive Drab";
163+
#endregion
164+
#region Row 3
165+
case RemapColors.Olive: return "Olive";
166+
case RemapColors.Yellow: return "Yellow";
167+
case RemapColors.Gold: return "Gold";
168+
case RemapColors.Goldenrod: return "Goldenrod";
169+
case RemapColors.Orange: return "Orange";
170+
case RemapColors.DarkOrange: return "Dark Orange";
171+
case RemapColors.LightBrown: return "Light Brown";
172+
case RemapColors.Brown: return "Brown";
173+
#endregion
174+
#region Row 4
175+
case RemapColors.Bark: return "Bark";
176+
case RemapColors.Tan: return "Tan";
177+
case RemapColors.IndianRed: return "Indian Red";
178+
case RemapColors.DarkRed: return "Dark Red";
179+
case RemapColors.Red: return "Red";
180+
case RemapColors.Magenta: return "Magenta";
181+
case RemapColors.Pink: return "Pink";
182+
case RemapColors.Salmon: return "Salmon";
183+
#endregion
184+
}
185+
return "Invalid";
186+
}
187+
}
137188
}

‎RCT2ObjectData/NuGetIcon.png‎

4.51 KB
Loading[フレーム]

‎RCT2ObjectData/Objects/ObjectData.cs‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,14 @@ public class ObjectData {
272272
/**<summary>The initial value of the checksum before rotation.</summary>*/
273273
public const uint InitialChecksum = 0xF369A75B;
274274

275+
#endregion
276+
//=========== SETTINGS ===========
277+
#region Settings
278+
279+
/**<summary>If set. Characters with the code of 255 in Chinese/Japanese/Korean will be removed when converting to string
280+
* as they map to invalid characters.</summary>*/
281+
public static bool IgnoreInvalidCJKCharacters { get; set; } = false;
282+
275283
#endregion
276284
//=========== MEMBERS ============
277285
#region Members

‎RCT2ObjectData/Objects/StringTable.cs‎

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,13 @@ static RCTString() {
6363
ReplaceLatin(184, "\u2248"); // '≈'
6464
ReplaceLatin(185, "\u207B\u00B9"); // '−1'
6565
ReplaceLatin(186, "\u2022"); // '•'
66+
6667
ReplaceLatin(188, "\u25B4"); // '▴'
6768
ReplaceLatin(189, "\u25BE"); // '▾'
6869
ReplaceLatin(190, "\u25C0"); // '◀'
6970

7071
ReplaceLatin(198, "\u0143"); // 'Ń'
72+
7173
ReplaceLatin(208, "\u015A"); // 'Ś'
7274

7375
ReplaceLatin(215, "\u0179"); // 'Ź'
@@ -135,6 +137,7 @@ public RCTString(Languages language, string str) {
135137
/**<summary>Converts the RCT string to a real string.</summary>*/
136138
public override string ToString() {
137139
string str = "";
140+
Encoding cjkCodePage = null;
138141
switch (Language) {
139142
case Languages.British:
140143
case Languages.American:
@@ -154,18 +157,31 @@ public override string ToString() {
154157
}
155158
break;
156159
case Languages.Japanese:
157-
str = JapaneseCodePage.GetString(Data.ToArray());
160+
cjkCodePage = JapaneseCodePage;
158161
break;
159162
case Languages.Korean:
160-
str = KoreanCodePage.GetString(Data.ToArray());
163+
cjkCodePage = KoreanCodePage;
161164
break;
162165
case Languages.ChineseSimplified:
163-
str = ChineseSimplifiedCodePage.GetString(Data.ToArray());
166+
cjkCodePage = ChineseSimplifiedCodePage;
164167
break;
165168
case Languages.ChineseTraditional:
166-
str = ChineseTraditionalCodePage.GetString(Data.ToArray());
169+
cjkCodePage = ChineseTraditionalCodePage;
167170
break;
168171
}
172+
if (cjkCodePage != null) {
173+
if (ObjectData.IgnoreInvalidCJKCharacters) {
174+
List<byte> newData = new List<byte>();
175+
foreach (byte b in Data) {
176+
if (b != 255)
177+
newData.Add(b);
178+
}
179+
str = cjkCodePage.GetString(newData.ToArray());
180+
}
181+
else {
182+
str = cjkCodePage.GetString(Data);
183+
}
184+
}
169185
return str;
170186
}
171187
/**<summary>Converts the RCT string to a real string.</summary>*/

‎RCT2ObjectData/RCT2ObjectData.nuspec‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@
1111
<description>Library for reading and writing RCT2 data files.</description>
1212
<copyright>Copyright Robert Jordan 2017</copyright>
1313
<tags>RollerCoaster Tycoon RCT2</tags>
14+
<iconUrl>https://github.com/trigger-death/RCT2ObjectData/RCT2ObjectData/NuGetIcon.png</iconUrl>
1415
</metadata>
1516
</package>

‎RCT2ObjectData/Track/TrackDesign.cs‎

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public class TrackDesign {
2929
public byte VehicleColorScheme;
3030
public RemapColors[] VehicleColorSpecifiers;
3131

32-
public byte Unknown0x48;
32+
public byte Padding0x48;
3333
public EntranceTypes EntranceType;
3434

3535
public byte AirTime;
@@ -51,9 +51,7 @@ public class TrackDesign {
5151
public byte Excitement;
5252
public byte Intensity;
5353
public byte Nausea;
54-
55-
public byte Unknown0x5E;
56-
public byte Unknown0x5F;
54+
public short UpkeepCost;
5755

5856
public RemapColors[] TrackSpineColors;
5957
public RemapColors[] TrackRailColors;
@@ -89,7 +87,7 @@ public TrackDesign() {
8987
this.VehicleColorScheme = 0;
9088
this.VehicleColorSpecifiers = new RemapColors[64];
9189

92-
this.Unknown0x48 = 0;
90+
this.Padding0x48 = 0;
9391

9492
this.EntranceType = EntranceTypes.Plain;
9593
this.AirTime = 0;
@@ -111,9 +109,7 @@ public TrackDesign() {
111109
this.Excitement = 0;
112110
this.Intensity = 0;
113111
this.Nausea = 0;
114-
115-
this.Unknown0x5E = 0;
116-
this.Unknown0x5F = 0;
112+
this.UpkeepCost = 0;
117113

118114
this.TrackSpineColors = new RemapColors[4];
119115
this.TrackRailColors = new RemapColors[4];
@@ -177,7 +173,7 @@ public void Read(BinaryReader reader) {
177173
for (int i = 0; i < this.VehicleColorSpecifiers.Length; i++)
178174
this.VehicleColorSpecifiers[i] = (RemapColors)reader.ReadByte();
179175

180-
this.Unknown0x48 = reader.ReadByte();
176+
this.Padding0x48 = reader.ReadByte();
181177
this.EntranceType = (EntranceTypes)reader.ReadByte();
182178
this.AirTime = reader.ReadByte();
183179
this.DepartureControlFlags = (DepartureControlFlags)reader.ReadByte();
@@ -198,9 +194,7 @@ public void Read(BinaryReader reader) {
198194
this.Excitement = reader.ReadByte();
199195
this.Intensity = reader.ReadByte();
200196
this.Nausea = reader.ReadByte();
201-
202-
this.Unknown0x5E = reader.ReadByte();
203-
this.Unknown0x5F = reader.ReadByte();
197+
this.UpkeepCost = reader.ReadInt16();
204198

205199
for (int i = 0; i < this.TrackSpineColors.Length; i++)
206200
this.TrackSpineColors[i] = (RemapColors)reader.ReadByte();
@@ -264,7 +258,7 @@ public void Write(BinaryWriter writer) {
264258
for (int i = 0; i < this.VehicleColorSpecifiers.Length; i++)
265259
writer.Write((byte)this.VehicleColorSpecifiers[i]);
266260

267-
writer.Write(this.Unknown0x48);
261+
writer.Write(this.Padding0x48);
268262
writer.Write((byte)this.EntranceType);
269263
writer.Write(this.AirTime);
270264
writer.Write((byte)this.DepartureControlFlags);
@@ -285,9 +279,7 @@ public void Write(BinaryWriter writer) {
285279
writer.Write(this.Excitement);
286280
writer.Write(this.Intensity);
287281
writer.Write(this.Nausea);
288-
289-
writer.Write(this.Unknown0x5E);
290-
writer.Write(this.Unknown0x5F);
282+
writer.Write(this.UpkeepCost);
291283

292284
for (int i = 0; i < this.TrackSpineColors.Length; i++)
293285
writer.Write((byte)this.TrackSpineColors[i]);

‎appveyor.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version: 1.2.2-{build}
1+
version: 1.2.3-{build}
22
image:
33
- Visual Studio 2017
44
assembly_info:

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /