Skip to content

Commit

Permalink
Refactor to try to reduce complexity
Browse files Browse the repository at this point in the history
  • Loading branch information
tonihele committed Jul 5, 2024
1 parent 0221603 commit 62029d5
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 72 deletions.
103 changes: 52 additions & 51 deletions src/toniarts/openkeeper/game/controller/RoomControllerFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,69 +55,70 @@ private RoomControllerFactory() {

public static IRoomController constructRoom(KwdFile kwdFile, RoomInstance roomInstance, IObjectsController objectsController,
Map<Variable.MiscVariable.MiscType, Variable.MiscVariable> gameSettings, IGameTimer gameTimer) {

String roomName = roomInstance.getRoom().getName();

switch (roomInstance.getRoom().getTileConstruction()) {
case _3_BY_3:
case _3_BY_3 -> {
return new ThreeByThreeController(kwdFile, roomInstance, objectsController);

case HERO_GATE:
//return new HeroGateConstructor(assetManager, roomInstance);
case HERO_GATE_FRONT_END:
}
case HERO_GATE, HERO_GATE_FRONT_END -> {
return new HeroGateFrontEndController(kwdFile, roomInstance, objectsController);
case HERO_GATE_2_BY_2:
//return new HeroGateTwoByTwoConstructor(assetManager, roomInstance);
// case HERO_GATE_3_BY_1:
}
case HERO_GATE_2_BY_2 -> {
return new NormalRoomController(kwdFile, roomInstance, objectsController);
//return new HeroGateThreeByOneConstructor(assetManager, roomInstance);
case _5_BY_5_ROTATED:
}
case _5_BY_5_ROTATED -> {
return new FiveByFiveRotatedController(kwdFile, roomInstance, objectsController, gameSettings, gameTimer);
}
case NORMAL -> {
return constructNormal(roomName, kwdFile, roomInstance, objectsController, gameTimer, gameSettings);
}
case DOUBLE_QUAD -> {
return constructDoubleQuad(roomName, kwdFile, roomInstance, objectsController, gameTimer);
}
default -> {
// TODO
logger.log(Level.WARNING, "Room {0} not exist", roomName);
return new NormalRoomController(kwdFile, roomInstance, objectsController);
}
}
}

private static IRoomController constructDoubleQuad(String roomName, KwdFile kwdFile, RoomInstance roomInstance, IObjectsController objectsController, IGameTimer gameTimer) {
if (roomName.equalsIgnoreCase("Prison")) {
return new PrisonController(kwdFile, roomInstance, objectsController, gameTimer);
} else if (roomName.equalsIgnoreCase("Combat Pit")) {
return new CombatPitController(kwdFile, roomInstance, objectsController);
} else if (roomName.equalsIgnoreCase("Temple")) {
return new TempleController(kwdFile, roomInstance, objectsController);
}

case NORMAL:
if (roomName.equalsIgnoreCase("Lair")) {
return new LairController(kwdFile, roomInstance, objectsController, gameTimer);
} else if (roomName.equalsIgnoreCase("Library")) {
return new LibraryController(kwdFile, roomInstance, objectsController, gameTimer);
} else if (roomName.equalsIgnoreCase("Training Room")) {
return new TrainingRoomController(kwdFile, roomInstance, objectsController, gameTimer);
} else if (roomName.equalsIgnoreCase("Work Shop")) {
return new WorkshopController(kwdFile, roomInstance, objectsController);
return new DoubleQuadController(kwdFile, roomInstance, objectsController);
}

private static IRoomController constructNormal(String roomName, KwdFile kwdFile, RoomInstance roomInstance, IObjectsController objectsController, IGameTimer gameTimer, Map<Variable.MiscVariable.MiscType, Variable.MiscVariable> gameSettings) {
if (roomName.equalsIgnoreCase("Lair")) {
return new LairController(kwdFile, roomInstance, objectsController, gameTimer);
} else if (roomName.equalsIgnoreCase("Library")) {
return new LibraryController(kwdFile, roomInstance, objectsController, gameTimer);
} else if (roomName.equalsIgnoreCase("Training Room")) {
return new TrainingRoomController(kwdFile, roomInstance, objectsController, gameTimer);
} else if (roomName.equalsIgnoreCase("Work Shop")) {
return new WorkshopController(kwdFile, roomInstance, objectsController);
// } else if (roomName.equalsIgnoreCase("Guard Room")) {
// return new GuardRoom(assetManager, roomInstance, objectLoader, worldState, effectManager);
} else if (roomName.equalsIgnoreCase("Casino")) {
return new CasinoController(kwdFile, roomInstance, objectsController);
} else if (roomName.equalsIgnoreCase("Casino")) {
return new CasinoController(kwdFile, roomInstance, objectsController);
// } else if (roomName.equalsIgnoreCase("Graveyard")) {
// return new Graveyard(assetManager, roomInstance, objectLoader, worldState, effectManager);
} else if (roomName.equalsIgnoreCase("Torture Chamber")) {
return new TortureChamberController(kwdFile, roomInstance, objectsController, gameTimer);
} else if (roomName.equalsIgnoreCase("Treasury")) {
return new TreasuryController(kwdFile, roomInstance, objectsController, gameSettings, gameTimer);
} else if (roomName.equalsIgnoreCase("Hatchery")) {
return new HatcheryController(kwdFile, roomInstance, objectsController, gameTimer);
}
return new NormalRoomController(kwdFile, roomInstance, objectsController);

// case QUAD:
// if (roomName.equalsIgnoreCase("Hero Stone Bridge") || roomName.equalsIgnoreCase("Stone Bridge")) {
// return new StoneBridge(assetManager, roomInstance, objectLoader, worldState, effectManager);
// }
// return new QuadConstructor(assetManager, roomInstance);
//
case DOUBLE_QUAD:
if (roomName.equalsIgnoreCase("Prison")) {
return new PrisonController(kwdFile, roomInstance, objectsController, gameTimer);
} else if (roomName.equalsIgnoreCase("Combat Pit")) {
return new CombatPitController(kwdFile, roomInstance, objectsController);
} else if (roomName.equalsIgnoreCase("Temple")) {
return new TempleController(kwdFile, roomInstance, objectsController);
}
return new DoubleQuadController(kwdFile, roomInstance, objectsController);
default:

// TODO
logger.log(Level.WARNING, "Room {0} not exist", roomName);
return new NormalRoomController(kwdFile, roomInstance, objectsController);
} else if (roomName.equalsIgnoreCase("Torture Chamber")) {
return new TortureChamberController(kwdFile, roomInstance, objectsController, gameTimer);
} else if (roomName.equalsIgnoreCase("Treasury")) {
return new TreasuryController(kwdFile, roomInstance, objectsController, gameSettings, gameTimer);
} else if (roomName.equalsIgnoreCase("Hatchery")) {
return new HatcheryController(kwdFile, roomInstance, objectsController, gameTimer);
}

return new NormalRoomController(kwdFile, roomInstance, objectsController);
}
}
60 changes: 39 additions & 21 deletions src/toniarts/openkeeper/view/text/CreatureTextParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -137,50 +137,68 @@ private static String getStatusText(Entity entity, CreatureAi creatureAi,

private static String getTaskTooltip(TaskComponent taskComponent, IMapInformation mapInformation) {
switch (taskComponent.taskType) {
case CLAIM_LAIR:
case CLAIM_LAIR -> {
return Utils.getMainTextResourceBundle().getString("2627");
case CAPTURE_ENEMY_CREATURE:
}
case CAPTURE_ENEMY_CREATURE -> {
return Utils.getMainTextResourceBundle().getString("2621");
case CARRY_CREATURE_TO_JAIL:
}
case CARRY_CREATURE_TO_JAIL -> {
return Utils.getMainTextResourceBundle().getString("2619");
case CARRY_CREATURE_TO_LAIR:
}
case CARRY_CREATURE_TO_LAIR -> {
return Utils.getMainTextResourceBundle().getString("2619");
case CARRY_GOLD_TO_TREASURY:
}
case CARRY_GOLD_TO_TREASURY -> {
return Utils.getMainTextResourceBundle().getString("2786");
case CARRY_OBJECT_TO_STORAGE:
}
case CARRY_OBJECT_TO_STORAGE -> {
return Utils.getMainTextResourceBundle().getString("2609"); // TODO: these are really awfully specific, we need to fine grain this
case CLAIM_ROOM:
}
case CLAIM_ROOM -> {
return Utils.getMainTextResourceBundle().getString("2602");
case CLAIM_TILE:
}
case CLAIM_TILE -> {
return Utils.getMainTextResourceBundle().getString("2601");
case CLAIM_WALL:
}
case CLAIM_WALL -> {
return Utils.getMainTextResourceBundle().getString("2603");
case DIG_TILE:
}
case DIG_TILE -> {
IMapTileInformation tile = mapInformation.getMapData().getTile(taskComponent.targetLocation);
return Utils.getMainTextResourceBundle().getString(tile.getGold() > 0 ? "2605" : "2600");
case FETCH_OBJECT:
}
case FETCH_OBJECT -> {
return Utils.getMainTextResourceBundle().getString("2608");
case GO_TO_LOCATION:
}
case GO_TO_LOCATION -> {
return Utils.getMainTextResourceBundle().getString("2670");
case GO_TO_SLEEP:
}
case GO_TO_SLEEP -> {
return Utils.getMainTextResourceBundle().getString("2671");
case KILL_PLAYER:
}
case KILL_PLAYER -> {
return Utils.getMainTextResourceBundle().getString("2645");
case REPAIR_WALL:
}
case REPAIR_WALL -> {
return Utils.getMainTextResourceBundle().getString("2604");
case RESCUE_CREATURE:
}
case RESCUE_CREATURE -> {
return Utils.getMainTextResourceBundle().getString("2617");
case RESEARCH:
}
case RESEARCH -> {
return Utils.getMainTextResourceBundle().getString("2625");
case GO_TO_EAT: {
}
case GO_TO_EAT -> {
return Utils.getMainTextResourceBundle().getString("2668");
}
case TRAIN: {
case TRAIN -> {
return Utils.getMainTextResourceBundle().getString("2633");
}
default -> {
return "";
}
}

return "";
}

@Override
Expand Down

0 comments on commit 62029d5

Please sign in to comment.