Skip to content

Commit c6290ce

Browse files
committed
hardcoded assets verifier
1 parent e33b5d4 commit c6290ce

5 files changed

Lines changed: 344 additions & 25 deletions

File tree

src/ModVerify/DefaultGameVerifiersProvider.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using AET.ModVerify.Settings;
1+
using AET.ModVerify.Settings;
42
using AET.ModVerify.Verifiers;
53
using AET.ModVerify.Verifiers.CommandBar;
4+
using AET.ModVerify.Verifiers.Engine;
65
using AET.ModVerify.Verifiers.GameObjects;
76
using AET.ModVerify.Verifiers.GuiDialogs;
87
using AET.ModVerify.Verifiers.SfxEvents;
98
using PG.StarWarsGame.Engine;
9+
using System;
10+
using System.Collections.Generic;
1011

1112
namespace AET.ModVerify;
1213

@@ -19,6 +20,7 @@ public IEnumerable<GameVerifier> GetVerifiers(
1920
{
2021
//yield break;
2122
yield return new SfxEventVerifier(gameEngine, settings, serviceProvider);
23+
yield return new HardcodedAssetsVerifier(gameEngine, settings, serviceProvider);
2224
yield return new GuiDialogsVerifier(gameEngine, settings, serviceProvider);
2325
yield return new GameObjectTypeVerifier(gameEngine, settings, serviceProvider);
2426
yield return new CommandBarVerifier(gameEngine, settings, serviceProvider);

src/ModVerify/ModVerify.csproj.DotSettings

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@
88
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=verifiers_005Ccommons_005Caudio/@EntryIndexedValue">True</s:Boolean>
99
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=verifiers_005Ccommons_005Cduplicates/@EntryIndexedValue">True</s:Boolean>
1010
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=verifiers_005Cdatabaseerror/@EntryIndexedValue">True</s:Boolean>
11-
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=verifiers_005Cengine/@EntryIndexedValue">True</s:Boolean>
11+
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=verifiers_005Cengine/@EntryIndexedValue">False</s:Boolean>
1212
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=verifiers_005Csfxevents/@EntryIndexedValue">False</s:Boolean></wpf:ResourceDictionary>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using System;
2+
using System.Threading;
3+
using AET.ModVerify.Settings;
4+
using AET.ModVerify.Verifiers.Commons;
5+
using PG.StarWarsGame.Engine;
6+
7+
namespace AET.ModVerify.Verifiers.Engine;
8+
9+
public sealed class HardcodedAssetsVerifier : GameVerifier
10+
{
11+
private readonly SingleModelVerifier _modelVerifier;
12+
13+
public HardcodedAssetsVerifier(IStarWarsGameEngine gameEngine, GameVerifySettings settings, IServiceProvider serviceProvider)
14+
: base(gameEngine, settings, serviceProvider)
15+
{
16+
_modelVerifier = new SingleModelVerifier(this);
17+
}
18+
19+
public override void Verify(CancellationToken token)
20+
{
21+
OnProgress(0.0d, "Verifying Hardcoded Models");
22+
VerifyModels(token);
23+
OnProgress(1.0, null);
24+
}
25+
26+
private void VerifyModels(CancellationToken token)
27+
{
28+
var models = HardcodedEngineAssets.GetHardcodedModels(GameEngine.EngineType);
29+
30+
foreach (var model in models)
31+
_modelVerifier.Verify(model, [], token);
32+
33+
foreach (var error in _modelVerifier.VerifyErrors)
34+
AddError(error);
35+
}
36+
}

src/PetroglyphTools/PG.StarWarsGame.Engine/FocHardcodedConstants.cs

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 302 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,302 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
namespace PG.StarWarsGame.Engine;
5+
6+
public static class HardcodedEngineAssets
7+
{
8+
/// <summary>
9+
/// These models / particles are hardcoded into StarWarsG.exe.
10+
/// </summary>
11+
public static IList<string> HardcodedFocModels { get; } = new List<string>
12+
{
13+
"i_tutorial_arrow.alo",
14+
"p_hero_empire_fx.alo",
15+
"i_tactical_corrupt.alo",
16+
"p_icon_corrupt.alo",
17+
"w_planet_select_neutral.alo",
18+
"i_game_arrow.alo",
19+
"i_galactic_radar.alo",
20+
"W_TextScroll.alo"
21+
};
22+
23+
24+
/// <summary>
25+
/// These models / particles are hardcoded into StarWarsG.exe.
26+
/// </summary>
27+
public static IList<string> HardcodedEawModels { get; } = new List<string>
28+
{
29+
"i_tutorial_arrow.alo",
30+
"p_hero_empire_fx.alo",
31+
"w_planet_select_neutral.alo",
32+
"i_game_arrow.alo",
33+
"i_galactic_radar.alo",
34+
"W_TextScroll.alo"
35+
};
36+
37+
public static IList<string> HardcodedFocTextures { get; } = new List<string>
38+
{
39+
"splash.tga",
40+
"SPLASH_E3.tga",
41+
"i_button_temporary.tga",
42+
"i_attention00.tga",
43+
"i_tree_arrow_right.tga",
44+
"load_overlay.tga",
45+
"i_pa_weather_sun.tga",
46+
"i_pa_weather_fire.tga",
47+
"i_pa_weather_snow.tga",
48+
"i_pa_weather_rain.tga",
49+
"i_pa_weather_wind.tga",
50+
"Menuback_Overlay.TGA",
51+
"i_button_space_station.tga",
52+
"i_button_ground_base.tga",
53+
"i_button_space_unitcount.tga",
54+
"i_button_ground_unitcount.tga",
55+
"i_dialogue_blank.tga",
56+
"checked_box.tga",
57+
"Galactic_Back.tga",
58+
"Generic_Space.tga",
59+
"Generic_Land.tga",
60+
"red_dot.tga",
61+
"yellow_dot.tga",
62+
"green_dot.tga",
63+
"i_tree_arrow_2right.tga",
64+
"i_tree_arrow_3right.tga",
65+
"i_tree_arrow_down.tga",
66+
"Generic_Flat_B.tga",
67+
"w_generic_white.tga",
68+
"w_shadow_blob.tga",
69+
"w_light_blob.tga",
70+
"p_particle_master.tga",
71+
"missing_texture_xxx.tga",
72+
"D_master_decal.tga",
73+
"p_particle_depth_master.tga",
74+
"MT_CommandBar.tga",
75+
"MT_CommandBarCompressed.dds",
76+
"DEFAULTPOINTER_00.TGA",
77+
"tractor_beam00.tga",
78+
"i_button_unknown.tga",
79+
"i_icon_stealth.tga",
80+
"e_line2.tga",
81+
"e_line.tga",
82+
"i_bar_icons_space.tga",
83+
"i_bar_icons_land.tga",
84+
"e_topbar2.tga",
85+
"e_topbar.tga",
86+
"e_against_frame.tga",
87+
"missing.tga",
88+
"i_encyclopedia_border.tga",
89+
"i_radar_default_blip.tga",
90+
"select_overlay.tga",
91+
"i_icon_raid.tga",
92+
"maptemp.tga",
93+
"shield_range.tga",
94+
"W_galaxy_line.tga",
95+
"W_galaxy_line_alpha.tga",
96+
"W_galaxy_dot.tga",
97+
"i_sa_defend_mode.tga",
98+
"i_sa_deploy.tga",
99+
"i_sa_interdict.tga",
100+
"i_sa_barrage_area.tga",
101+
"i_sa_capture_vehicles.tga",
102+
"i_sa_spread_out.tga",
103+
"i_sa_power_to_engines.tga",
104+
"i_sa_rocket_attack.tga",
105+
"i_sa_power_to_weapons.tga",
106+
"i_sa_tractor_beam.tga",
107+
"i_sa_fire_energy_weapon.tga",
108+
"i_sa_missile_jammer.tga",
109+
"i_sa_evasive_maneuvers.tga",
110+
"i_sa_all_ships_concentrate_fire.tga",
111+
"i_sa_sprint.tga",
112+
"i_sa_stim_pack.tga",
113+
"i_sa_s_foil_mode.tga",
114+
"i_sa_maximum_firepower.tga",
115+
"i_sa_swap_weapons.tga",
116+
"i_sa_full_salvo.tga",
117+
"i_sa_force_cloak.tga",
118+
"i_sa_sensor_jamming.tga",
119+
"i_sa_force_crush.tga",
120+
"i_sa_force_push.tga",
121+
"i_sa_force_lighting.tga",
122+
"i_sa_flame_thrower.tga",
123+
"i_sa_jetpack_jump.tga",
124+
"i_sa_force_protect.tga",
125+
"i_sa_hack_turret.tga",
126+
"i_sa_repair_vehicle.tga",
127+
"i_sa_sticky_bomb.tga",
128+
"i_sa_electronic_scramble.tga",
129+
"i_sa_area_heal.tga",
130+
"i_sa_join_me.tga",
131+
"i_sa_tow_cable_attack.tga",
132+
"i_sa_sensor_ping.tga",
133+
"i_sa_cover_me.tga",
134+
"i_sa_Harmonic_bomb.tga",
135+
"i_sa_drop_bomb.tga",
136+
"i_sa_weaken_enemy.tga",
137+
"i_sa_drain_life.tga",
138+
"i_sa_blast.tga",
139+
"i_sa_shield_flare.tga",
140+
"i_sa_deploy_squad.tga",
141+
"i_sa_stun.tga",
142+
"i_sa_contaminate.tga",
143+
"i_sa_berserker.tga",
144+
"i_sa_force_sight.tga",
145+
"i_sa_saber_throw.tga",
146+
"i_sa_laser_defense.tga",
147+
"i_sa_force_confuse.tga",
148+
"i_sa_leech_shields.tga",
149+
"i_sa_tactical_bribe.tga",
150+
"i_sa_cluster_bomb.tga",
151+
"i_sa_place_remote_bomb.tga",
152+
"i_sa_detonate_remote_bomb.tga",
153+
"i_sa_infection.tga",
154+
"i_sa_proximity_mines.tga",
155+
"i_sa_buzz_droids.tga",
156+
"i_sa_summon.tga",
157+
"i_sa_corrupt_systems.tga",
158+
"i_sa_hunt.tga",
159+
"i_sa_lure.tga",
160+
"i_sa_self_destruct.tga",
161+
"i_sa_deploy_stormtroopers.tga",
162+
"i_sa_ion_cannon_shot.tga",
163+
"i_sa_lucky_shot.tga",
164+
"lightning_default.tga",
165+
"Mon_Mothma.tga",
166+
"Tarkin.tga",
167+
"W_Cable.tga",
168+
"i_information00.tga",
169+
"W_Laser_Pill.tga",
170+
"lensflare.tga",
171+
"W_Space_FOW_Grid.tga",
172+
"W_Space_Reinforce_FOW_Grid.tga",
173+
};
174+
175+
public static IList<string> HardcodedEawTextures { get; } = new List<string>
176+
{
177+
"splash.tga",
178+
"i_button_temporary.tga",
179+
"i_attention00.tga",
180+
"i_tree_arrow_right.tga",
181+
"load_overlay.tga",
182+
"i_pa_weather_sun.tga",
183+
"i_pa_weather_fire.tga",
184+
"i_pa_weather_snow.tga",
185+
"i_pa_weather_rain.tga",
186+
"i_pa_weather_wind.tga",
187+
"Menuback_Overlay.TGA",
188+
"i_button_space_station.tga",
189+
"i_button_ground_base.tga",
190+
"i_button_space_unitcount.tga",
191+
"i_button_ground_unitcount.tga",
192+
"i_dialogue_blank.tga",
193+
"checked_box.tga",
194+
"Galactic_Back.tga",
195+
"Generic_Space.tga",
196+
"Generic_Land.tga",
197+
"red_dot.tga",
198+
"yellow_dot.tga",
199+
"green_dot.tga",
200+
"i_tree_arrow_2right.tga",
201+
"i_tree_arrow_3right.tga",
202+
"i_tree_arrow_down.tga",
203+
"Generic_Flat_B.tga",
204+
"w_generic_white.tga",
205+
"w_shadow_blob.tga",
206+
"w_light_blob.tga",
207+
"p_particle_master.tga",
208+
"missing_texture_xxx.tga",
209+
"D_master_decal.tga",
210+
"p_particle_depth_master.tga",
211+
"MT_CommandBar.tga",
212+
"MT_CommandBarCompressed.dds",
213+
"DEFAULTPOINTER_00.TGA",
214+
"tractor_beam00.tga",
215+
"i_button_unknown.tga",
216+
"i_icon_stealth.tga",
217+
"e_line2.tga",
218+
"e_line.tga",
219+
"i_bar_icons_space.tga",
220+
"i_bar_icons_land.tga",
221+
"e_topbar2.tga",
222+
"e_topbar.tga",
223+
"e_against_frame.tga",
224+
"missing.tga",
225+
"i_encyclopedia_border.tga",
226+
"i_radar_default_blip.tga",
227+
"select_overlay.tga",
228+
"i_icon_raid.tga",
229+
"W_galaxy_line.tga",
230+
"W_galaxy_line_alpha.tga",
231+
"W_galaxy_dot.tga",
232+
"i_sa_defend_mode.tga",
233+
"i_sa_deploy.tga",
234+
"i_sa_interdict.tga",
235+
"i_sa_barrage_area.tga",
236+
"i_sa_capture_vehicles.tga",
237+
"i_sa_spread_out.tga",
238+
"i_sa_power_to_engines.tga",
239+
"i_sa_rocket_attack.tga",
240+
"i_sa_power_to_weapons.tga",
241+
"i_sa_tractor_beam.tga",
242+
"i_sa_fire_energy_weapon.tga",
243+
"i_sa_missile_jammer.tga",
244+
"i_sa_evasive_maneuvers.tga",
245+
"i_sa_all_ships_concentrate_fire.tga",
246+
"i_sa_sprint.tga",
247+
"i_sa_s_foil_mode.tga",
248+
"i_sa_maximum_firepower.tga",
249+
"i_sa_force_crush.tga",
250+
"i_sa_force_push.tga",
251+
"i_sa_force_lighting.tga",
252+
"i_sa_flame_thrower.tga",
253+
"i_sa_jetpack_jump.tga",
254+
"i_sa_force_protect.tga",
255+
"i_sa_hack_turret.tga",
256+
"i_sa_repair_vehicle.tga",
257+
"i_sa_sticky_bomb.tga",
258+
"i_sa_electronic_scramble.tga",
259+
"i_sa_area_heal.tga",
260+
"i_sa_join_me.tga",
261+
"i_sa_tow_cable_attack.tga",
262+
"i_sa_sensor_ping.tga",
263+
"i_sa_cover_me.tga",
264+
"i_sa_Harmonic_bomb.tga",
265+
"i_sa_drop_bomb.tga",
266+
"i_sa_weaken_enemy.tga",
267+
"i_sa_hunt.tga",
268+
"i_sa_lure.tga",
269+
"i_sa_self_destruct.tga",
270+
"i_sa_deploy_stormtroopers.tga",
271+
"i_sa_ion_cannon_shot.tga",
272+
"i_sa_lucky_shot.tga",
273+
"lightning_default.tga",
274+
"Mon_Mothma.tga",
275+
"Tarkin.tga",
276+
"W_Cable.tga",
277+
"i_information00.tga",
278+
"W_Laser_Pill.tga",
279+
"W_Space_FOW_Grid.tga",
280+
"W_Space_Reinforce_FOW_Grid.tga",
281+
};
282+
283+
public static IList<string> GetHardcodedModels(GameEngineType engine)
284+
{
285+
return engine switch
286+
{
287+
GameEngineType.Eaw => HardcodedEawModels,
288+
GameEngineType.Foc => HardcodedFocModels,
289+
_ => throw new ArgumentOutOfRangeException(nameof(engine), engine, null)
290+
};
291+
}
292+
293+
public static IList<string> GetHardcodedTextures(GameEngineType engine)
294+
{
295+
return engine switch
296+
{
297+
GameEngineType.Eaw => HardcodedEawTextures,
298+
GameEngineType.Foc => HardcodedFocTextures,
299+
_ => throw new ArgumentOutOfRangeException(nameof(engine), engine, null)
300+
};
301+
}
302+
}

0 commit comments

Comments
 (0)