Skip to content

Commit 2f16392

Browse files
Cervatorclaude
andcommitted
refactor: use addAndTrack consistently for all load process registration
Use addAndTrack() in initHost() and initClient() as well, not just the post-context-switch steps. This makes maxProgress tracking consistent across all phases and removes the now-redundant loop in init() that was double-counting. BSA review feedback on PR #5313. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 70a8e95 commit 2f16392

1 file changed

Lines changed: 36 additions & 40 deletions

File tree

engine/src/main/java/org/terasology/engine/core/modes/StateLoading.java

Lines changed: 36 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,6 @@ public void init(GameEngine engine) {
145145
}
146146

147147
progress = 0;
148-
maxProgress = 0;
149-
for (LoadProcess process : loadProcesses) {
150-
maxProgress += process.getExpectedCost();
151-
}
152148

153149
popStep();
154150
if (nuiManager != null) {
@@ -159,54 +155,54 @@ public void init(GameEngine engine) {
159155
}
160156

161157
private void initClient(GameEngine engine, ServiceRegistry serviceRegistry) {
162-
loadProcesses.add(new JoinServer(context, gameManifest, joinStatus));
158+
addAndTrack(new JoinServer(context, gameManifest, joinStatus));
163159
if (!headless) {
164-
loadProcesses.add(new InitialiseRendering(serviceRegistry));
160+
addAndTrack(new InitialiseRendering(serviceRegistry));
165161
}
166-
loadProcesses.add(new InitialiseEntitySystem(context, serviceRegistry));
167-
loadProcesses.add(new RegisterBlocks(context, serviceRegistry));
162+
addAndTrack(new InitialiseEntitySystem(context, serviceRegistry));
163+
addAndTrack(new RegisterBlocks(context, serviceRegistry));
168164
if (!headless) {
169-
loadProcesses.add(new InitialiseGraphics(context));
165+
addAndTrack(new InitialiseGraphics(context));
170166
}
171-
// loadProcesses.add(new LoadPrefabs(context));
172-
// loadProcesses.add(new ProcessBlockPrefabs(context));
173-
loadProcesses.add(new LoadExtraBlockData(serviceRegistry));
174-
loadProcesses.add(new InitialiseComponentSystemManager(serviceRegistry));
175-
// loadProcesses.add(new RegisterSystems(context, netMode));
176-
// loadProcesses.add(new RegisterWorldSystems(gameManifest, context));
177-
loadProcesses.add(new InitialiseCommandSystem(serviceRegistry));
178-
loadProcesses.add(new InitialiseRemoteWorld(context, serviceRegistry, gameManifest));
179-
loadProcesses.add(new InitialisePhysics(context, serviceRegistry));
180-
// loadProcesses.add(new InitialiseSystems(context));
181-
// loadProcesses.add(new PreBeginSystems(context));
182-
// loadProcesses.add(new CreateRemoteWorldEntity(context));
183-
// loadProcesses.add(new PostBeginSystems(context));
184-
// loadProcesses.add(new SetupRemotePlayer(context));
185-
// loadProcesses.add(new AwaitCharacterSpawn(context));
186-
// loadProcesses.add(new RegisterBlockFamilies(context));
187-
// loadProcesses.add(new PrepareWorld(context));
188-
loadProcesses.add(new SwitchToContextStep(engine));
189-
loadProcesses.add(new AddClientPostLoadProcessesStep());
167+
// addAndTrack(new LoadPrefabs(context));
168+
// addAndTrack(new ProcessBlockPrefabs(context));
169+
addAndTrack(new LoadExtraBlockData(serviceRegistry));
170+
addAndTrack(new InitialiseComponentSystemManager(serviceRegistry));
171+
// addAndTrack(new RegisterSystems(context, netMode));
172+
// addAndTrack(new RegisterWorldSystems(gameManifest, context));
173+
addAndTrack(new InitialiseCommandSystem(serviceRegistry));
174+
addAndTrack(new InitialiseRemoteWorld(context, serviceRegistry, gameManifest));
175+
addAndTrack(new InitialisePhysics(context, serviceRegistry));
176+
// addAndTrack(new InitialiseSystems(context));
177+
// addAndTrack(new PreBeginSystems(context));
178+
// addAndTrack(new CreateRemoteWorldEntity(context));
179+
// addAndTrack(new PostBeginSystems(context));
180+
// addAndTrack(new SetupRemotePlayer(context));
181+
// addAndTrack(new AwaitCharacterSpawn(context));
182+
// addAndTrack(new RegisterBlockFamilies(context));
183+
// addAndTrack(new PrepareWorld(context));
184+
addAndTrack(new SwitchToContextStep(engine));
185+
addAndTrack(new AddClientPostLoadProcessesStep());
190186
}
191187

192188
private void initHost(GameEngine engine, ServiceRegistry serviceRegistry) {
193-
loadProcesses.add(new RegisterMods(context, serviceRegistry, gameManifest));
189+
addAndTrack(new RegisterMods(context, serviceRegistry, gameManifest));
194190
if (!headless) {
195-
loadProcesses.add(new InitialiseRendering(serviceRegistry));
191+
addAndTrack(new InitialiseRendering(serviceRegistry));
196192
}
197-
loadProcesses.add(new InitialiseEntitySystem(context, serviceRegistry));
198-
loadProcesses.add(new RegisterBlocks(context, serviceRegistry));
193+
addAndTrack(new InitialiseEntitySystem(context, serviceRegistry));
194+
addAndTrack(new RegisterBlocks(context, serviceRegistry));
199195
if (!headless) {
200-
loadProcesses.add(new InitialiseGraphics(context));
196+
addAndTrack(new InitialiseGraphics(context));
201197
}
202-
loadProcesses.add(new InitialiseComponentSystemManager(serviceRegistry));
203-
loadProcesses.add(new InitialiseCommandSystem(serviceRegistry));
204-
loadProcesses.add(new LoadExtraBlockData(serviceRegistry));
205-
loadProcesses.add(new InitialiseWorld(gameManifest, context, serviceRegistry));
206-
loadProcesses.add(new InitialisePhysics(context, serviceRegistry));
207-
loadProcesses.add(new SwitchToContextStep(engine));
198+
addAndTrack(new InitialiseComponentSystemManager(serviceRegistry));
199+
addAndTrack(new InitialiseCommandSystem(serviceRegistry));
200+
addAndTrack(new LoadExtraBlockData(serviceRegistry));
201+
addAndTrack(new InitialiseWorld(gameManifest, context, serviceRegistry));
202+
addAndTrack(new InitialisePhysics(context, serviceRegistry));
203+
addAndTrack(new SwitchToContextStep(engine));
208204
// Post-Init processes
209-
loadProcesses.add(new AddHostPostLoadProcessesStep());
205+
addAndTrack(new AddHostPostLoadProcessesStep());
210206
}
211207

212208
private void addAndTrack(LoadProcess process) {

0 commit comments

Comments
 (0)