From a75e7f48c4f7fac99b89830b83a7598acc73cf0e Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Wed, 26 Jul 2023 14:09:50 +0300 Subject: [PATCH 01/47] Simple training task --- .../game/controller/GameController.java | 2 +- .../controller/RoomControllerFactory.java | 6 +- .../room/AbstractRoomController.java | 2 +- .../room/TrainingRoomController.java | 45 +++++++++ .../room/storage/RoomTraineeControl.java | 91 ++++++++++++++++++ .../game/logic/CreatureExperienceSystem.java | 1 + .../openkeeper/game/task/TaskManager.java | 18 +++- .../openkeeper/game/task/TaskType.java | 3 +- .../openkeeper/game/task/creature/Train.java | 94 +++++++++++++++++++ .../view/control/CreatureFlowerControl.java | 2 + .../view/text/CreatureTextParser.java | 3 + 11 files changed, 258 insertions(+), 9 deletions(-) create mode 100644 src/toniarts/openkeeper/game/controller/room/TrainingRoomController.java create mode 100644 src/toniarts/openkeeper/game/controller/room/storage/RoomTraineeControl.java create mode 100644 src/toniarts/openkeeper/game/task/creature/Train.java diff --git a/src/toniarts/openkeeper/game/controller/GameController.java b/src/toniarts/openkeeper/game/controller/GameController.java index 7652d8d67..653e50266 100644 --- a/src/toniarts/openkeeper/game/controller/GameController.java +++ b/src/toniarts/openkeeper/game/controller/GameController.java @@ -223,7 +223,7 @@ public void createNewGame() { navigationService = new NavigationService(gameWorldController.getMapController(), positionSystem); // Initialize tasks - taskManager = new TaskManager(entityData, gameWorldController, gameWorldController.getMapController(), gameWorldController.getObjectsController(), gameWorldController.getCreaturesController(), navigationService, playerControllers.values(), this, positionSystem); + taskManager = new TaskManager(entityData, gameWorldController, gameWorldController.getMapController(), gameWorldController.getObjectsController(), gameWorldController.getCreaturesController(), navigationService, playerControllers.values(), this, positionSystem, gameSettings); // The triggers partyTriggerState = new PartyTriggerLogicController(this, this, this, gameWorldController.getMapController(), gameWorldController.getCreaturesController()); diff --git a/src/toniarts/openkeeper/game/controller/RoomControllerFactory.java b/src/toniarts/openkeeper/game/controller/RoomControllerFactory.java index 03caf90e5..0806c40cb 100644 --- a/src/toniarts/openkeeper/game/controller/RoomControllerFactory.java +++ b/src/toniarts/openkeeper/game/controller/RoomControllerFactory.java @@ -34,6 +34,7 @@ import toniarts.openkeeper.game.controller.room.TempleController; import toniarts.openkeeper.game.controller.room.ThreeByThreeController; import toniarts.openkeeper.game.controller.room.TortureChamberController; +import toniarts.openkeeper.game.controller.room.TrainingRoomController; import toniarts.openkeeper.game.controller.room.TreasuryController; import toniarts.openkeeper.game.controller.room.WorkshopController; import toniarts.openkeeper.tools.convert.map.KwdFile; @@ -78,9 +79,8 @@ public static IRoomController constructRoom(KwdFile kwdFile, RoomInstance roomIn 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 TrainingRoom(assetManager, roomInstance, objectLoader, worldState, effectManager); -// } else + } 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")) { diff --git a/src/toniarts/openkeeper/game/controller/room/AbstractRoomController.java b/src/toniarts/openkeeper/game/controller/room/AbstractRoomController.java index 80dd468e9..79285a813 100644 --- a/src/toniarts/openkeeper/game/controller/room/AbstractRoomController.java +++ b/src/toniarts/openkeeper/game/controller/room/AbstractRoomController.java @@ -42,7 +42,7 @@ public abstract class AbstractRoomController implements IRoomController { */ public enum ObjectType { - GOLD, LAIR, SPELL_BOOK, SPECIAL, RESEARCHER, PRISONER, TORTUREE, FOOD; + GOLD, LAIR, SPELL_BOOK, SPECIAL, RESEARCHER, PRISONER, TORTUREE, FOOD, TRAINEE; }; diff --git a/src/toniarts/openkeeper/game/controller/room/TrainingRoomController.java b/src/toniarts/openkeeper/game/controller/room/TrainingRoomController.java new file mode 100644 index 000000000..78691e5cd --- /dev/null +++ b/src/toniarts/openkeeper/game/controller/room/TrainingRoomController.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2014-2023 OpenKeeper + * + * OpenKeeper is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenKeeper is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenKeeper. If not, see . + */ +package toniarts.openkeeper.game.controller.room; + +import toniarts.openkeeper.common.RoomInstance; +import toniarts.openkeeper.game.controller.IGameTimer; +import toniarts.openkeeper.game.controller.IObjectsController; +import toniarts.openkeeper.game.controller.room.storage.RoomTraineeControl; +import toniarts.openkeeper.tools.convert.map.KwdFile; + +/** + * The training room + * + * @author Toni Helenius + */ +public class TrainingRoomController extends NormalRoomController { + + public TrainingRoomController(KwdFile kwdFile, RoomInstance roomInstance, IObjectsController objectsController, + IGameTimer gameTimer) { + super(kwdFile, roomInstance, objectsController); + + addObjectControl(new RoomTraineeControl(kwdFile, this, objectsController, gameTimer) { + + @Override + protected int getNumberOfAccessibleTiles() { + return getFurnitureCount(); + } + }); + } + +} diff --git a/src/toniarts/openkeeper/game/controller/room/storage/RoomTraineeControl.java b/src/toniarts/openkeeper/game/controller/room/storage/RoomTraineeControl.java new file mode 100644 index 000000000..a0f23c398 --- /dev/null +++ b/src/toniarts/openkeeper/game/controller/room/storage/RoomTraineeControl.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2014-2023 OpenKeeper + * + * OpenKeeper is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenKeeper is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenKeeper. If not, see . + */ +package toniarts.openkeeper.game.controller.room.storage; + +import com.simsilica.es.EntityId; +import java.awt.Point; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import toniarts.openkeeper.game.component.Position; +import toniarts.openkeeper.game.controller.IGameTimer; +import toniarts.openkeeper.game.controller.IObjectsController; +import toniarts.openkeeper.game.controller.room.AbstractRoomController.ObjectType; +import toniarts.openkeeper.game.controller.room.IRoomController; +import toniarts.openkeeper.tools.convert.map.KwdFile; +import toniarts.openkeeper.utils.WorldUtils; + +/** + * Holds out the trainees populating a room + * + * @author Toni Helenius + */ +public abstract class RoomTraineeControl extends AbstractRoomObjectControl { + + public RoomTraineeControl(KwdFile kwdFile, IRoomController parent, IObjectsController objectsController, IGameTimer gameTimer) { + super(kwdFile, parent, objectsController, gameTimer); + } + + @Override + public int getCurrentCapacity() { + return objectsByCoordinate.size(); + } + + @Override + protected int getObjectsPerTile() { + return 1; + } + + @Override + public ObjectType getObjectType() { + return ObjectType.TRAINEE; + } + + @Override + public EntityId addItem(EntityId trainee, Point p) { + setRoomStorageToItem(trainee, false); + + return trainee; + } + + @Override + public void destroy() { + + // TODO: The trainee can't do his/her job + } + + @Override + public void captured(short playerId) { + + } + + @Override + protected Collection getCoordinates() { + + // Only furniture + List coordinates = new ArrayList<>(parent.getFloorFurnitureCount() + parent.getWallFurnitureCount()); + for (EntityId oc : parent.getFloorFurniture()) { + coordinates.add(WorldUtils.vectorToPoint(objectsController.getEntityData().getComponent(oc, Position.class).position)); + } + for (EntityId oc : parent.getWallFurniture()) { + coordinates.add(WorldUtils.vectorToPoint(objectsController.getEntityData().getComponent(oc, Position.class).position)); + } + + return coordinates; + } + +} diff --git a/src/toniarts/openkeeper/game/logic/CreatureExperienceSystem.java b/src/toniarts/openkeeper/game/logic/CreatureExperienceSystem.java index d332b1d51..807d3babb 100644 --- a/src/toniarts/openkeeper/game/logic/CreatureExperienceSystem.java +++ b/src/toniarts/openkeeper/game/logic/CreatureExperienceSystem.java @@ -151,6 +151,7 @@ public void start() { public void stop() { experienceEntities.release(); timeWorkingByEntityId.clear(); + entityIds.clear(); } } diff --git a/src/toniarts/openkeeper/game/task/TaskManager.java b/src/toniarts/openkeeper/game/task/TaskManager.java index c84f6090f..bc5fdc126 100644 --- a/src/toniarts/openkeeper/game/task/TaskManager.java +++ b/src/toniarts/openkeeper/game/task/TaskManager.java @@ -72,6 +72,7 @@ import toniarts.openkeeper.game.task.creature.GoToEat; import toniarts.openkeeper.game.task.creature.GoToSleep; import toniarts.openkeeper.game.task.creature.Research; +import toniarts.openkeeper.game.task.creature.Train; import toniarts.openkeeper.game.task.objective.AbstractObjectiveTask; import toniarts.openkeeper.game.task.objective.KillPlayer; import toniarts.openkeeper.game.task.objective.SendToActionPoint; @@ -91,6 +92,7 @@ import toniarts.openkeeper.tools.convert.map.Room; import toniarts.openkeeper.tools.convert.map.Terrain; import toniarts.openkeeper.tools.convert.map.Thing; +import toniarts.openkeeper.tools.convert.map.Variable; import toniarts.openkeeper.utils.Utils; import toniarts.openkeeper.utils.WorldUtils; @@ -110,6 +112,7 @@ public class TaskManager implements ITaskManager, IGameLogicUpdatable { private final INavigationService navigationService; private final ILevelInfo levelInfo; private final IEntityPositionLookup entityPositionLookup; + private final Map gameSettings; private final EntityData entityData; private final EntitySet taskEntities; private final EntitySet unconsciousEntities; @@ -123,7 +126,8 @@ public class TaskManager implements ITaskManager, IGameLogicUpdatable { public TaskManager(EntityData entityData, IGameWorldController gameWorldController, IMapController mapController, IObjectsController objectsController, ICreaturesController creaturesController, INavigationService navigationService, - Collection players, ILevelInfo levelInfo, IEntityPositionLookup entityPositionLookup) { + Collection players, ILevelInfo levelInfo, IEntityPositionLookup entityPositionLookup, + Map gameSettings) { this.entityData = entityData; this.mapController = mapController; this.gameWorldController = gameWorldController; @@ -132,6 +136,7 @@ public TaskManager(EntityData entityData, IGameWorldController gameWorldControll this.navigationService = navigationService; this.levelInfo = levelInfo; this.entityPositionLookup = entityPositionLookup; + this.gameSettings = gameSettings; // Set the players // Create a queue for each managed player (everybody except Good & Neutral) @@ -616,15 +621,16 @@ private boolean assignClosestRoomTask(ICreatureController creature, ObjectType o return task.isValid(creature); } - if (task instanceof AbstractCapacityCriticalRoomTask) { + if (task instanceof AbstractCapacityCriticalRoomTask abstractCapacityCriticalRoomTask) { if (taskPoints == null) { taskPoints = new HashMap<>(); } - taskPoints.put(target, (AbstractCapacityCriticalRoomTask) task); + taskPoints.put(target, abstractCapacityCriticalRoomTask); roomTasks.put(room, taskPoints); } task.assign(creature, true); tasksByIds.put(task.getId(), task); + return true; } } @@ -663,6 +669,9 @@ private AbstractTask getRoomTask(ObjectType objectType, Point target, EntityId t case SPELL_BOOK: { return new CarryObjectToStorageTask(navigationService, mapController, target, creature.getOwnerId(), room, this, objectsController.createController(targetEntity)); } + case TRAINEE: { + return new Train(navigationService, mapController, target, creature.getOwnerId(), room, this, gameWorldController, gameSettings, playerControllers.get(creature.getOwnerId())); + } } return null; } @@ -722,6 +731,9 @@ private boolean assignTask(ICreatureController creature, Creature.JobType jobTyp case RESEARCH: { return assignClosestRoomTask(creature, ObjectType.RESEARCHER, null, assign); } + case TRAIN: { + return assignClosestRoomTask(creature, ObjectType.TRAINEE, null, assign); + } default: return false; } diff --git a/src/toniarts/openkeeper/game/task/TaskType.java b/src/toniarts/openkeeper/game/task/TaskType.java index a2f10b49e..262f11a4c 100644 --- a/src/toniarts/openkeeper/game/task/TaskType.java +++ b/src/toniarts/openkeeper/game/task/TaskType.java @@ -40,5 +40,6 @@ public enum TaskType { FETCH_OBJECT, REPAIR_WALL, RESCUE_CREATURE, - GO_TO_EAT + GO_TO_EAT, + TRAIN } diff --git a/src/toniarts/openkeeper/game/task/creature/Train.java b/src/toniarts/openkeeper/game/task/creature/Train.java new file mode 100644 index 000000000..9ea327f71 --- /dev/null +++ b/src/toniarts/openkeeper/game/task/creature/Train.java @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2014-2023 OpenKeeper + * + * OpenKeeper is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenKeeper is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenKeeper. If not, see . + */ +package toniarts.openkeeper.game.task.creature; + +import com.jme3.math.Vector2f; +import java.awt.Point; +import java.util.Map; +import toniarts.openkeeper.game.controller.IGameWorldController; +import toniarts.openkeeper.game.controller.IMapController; +import toniarts.openkeeper.game.controller.IPlayerController; +import toniarts.openkeeper.game.controller.creature.ICreatureController; +import toniarts.openkeeper.game.controller.room.AbstractRoomController.ObjectType; +import toniarts.openkeeper.game.controller.room.IRoomController; +import toniarts.openkeeper.game.navigation.INavigationService; +import toniarts.openkeeper.game.task.AbstractCapacityCriticalRoomTask; +import toniarts.openkeeper.game.task.TaskManager; +import toniarts.openkeeper.game.task.TaskType; +import toniarts.openkeeper.tools.convert.map.Variable; +import toniarts.openkeeper.tools.convert.map.Variable.MiscVariable; +import toniarts.openkeeper.tools.convert.map.Variable.MiscVariable.MiscType; +import toniarts.openkeeper.utils.WorldUtils; + +/** + * Trains creature + * + * @author Toni Helenius + */ +public class Train extends AbstractCapacityCriticalRoomTask { + + private final IGameWorldController gameWorldController; + private final IPlayerController playerController; + private final int trainingRoomMaxExperienceLevel; + private final int trainingCost; + + public Train(final INavigationService navigationService, final IMapController mapController, + Point p, short playerId, IRoomController room, TaskManager taskManager, + IGameWorldController gameWorldController, Map gameSettings, + IPlayerController playerController) { + super(navigationService, mapController, p, playerId, room, taskManager); + + this.gameWorldController = gameWorldController; + this.playerController = playerController; + + trainingRoomMaxExperienceLevel = (int) gameSettings.get(Variable.MiscVariable.MiscType.TRAINING_ROOM_MAX_EXPERIENCE_LEVEL).getValue(); + trainingCost = Math.abs((int) gameSettings.get(Variable.MiscVariable.MiscType.MODIFY_PLAYER_GOLD_WHILE_TRAINING_PER_SECOND).getValue()); + } + + @Override + public boolean isValid(ICreatureController creature) { + return playerController.getKeeper().getGold() >= trainingCost && creature.getLevel() < trainingRoomMaxExperienceLevel && super.isValid(creature); + } + + @Override + public Vector2f getTarget(ICreatureController creature) { + return WorldUtils.pointToVector2f(getTaskLocation()); // FIXME 0.5f not needed? + } + + @Override + protected ObjectType getRoomObjectType() { + return ObjectType.TRAINEE; + } + + @Override + public void executeTask(ICreatureController creature, float executionDuration) { + + // TODO: is this a general case or even smart to do this like this...? + if (executionDuration - getExecutionDuration(creature) < 1.0f) { + return; + } + + setExecutionDuration(creature, executionDuration - getExecutionDuration(creature)); + gameWorldController.substractGold(trainingCost, playerId); + } + + @Override + public TaskType getTaskType() { + return TaskType.TRAIN; + } + +} diff --git a/src/toniarts/openkeeper/view/control/CreatureFlowerControl.java b/src/toniarts/openkeeper/view/control/CreatureFlowerControl.java index b4f67deb0..bb9713129 100644 --- a/src/toniarts/openkeeper/view/control/CreatureFlowerControl.java +++ b/src/toniarts/openkeeper/view/control/CreatureFlowerControl.java @@ -202,6 +202,8 @@ private static String getTaskIcon(TaskType taskType) { return "Textures/GUI/moods/SJ-Library.png"; case GO_TO_EAT: return "Textures/GUI/moods/SJ-Hungry.png"; + case TRAIN: + return "Textures/GUI/moods/SJ-Training.png"; default: return null; } diff --git a/src/toniarts/openkeeper/view/text/CreatureTextParser.java b/src/toniarts/openkeeper/view/text/CreatureTextParser.java index db145b671..c81d9f5f6 100644 --- a/src/toniarts/openkeeper/view/text/CreatureTextParser.java +++ b/src/toniarts/openkeeper/view/text/CreatureTextParser.java @@ -175,6 +175,9 @@ private static String getTaskTooltip(TaskComponent taskComponent, IMapInformatio case GO_TO_EAT: { return Utils.getMainTextResourceBundle().getString("2668"); } + case TRAIN: { + return Utils.getMainTextResourceBundle().getString("2633"); + } } return ""; From c541382bd1439dce3b237a4446eba720294fbc4a Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Fri, 20 Oct 2023 22:06:32 +0300 Subject: [PATCH 02/47] Also do the animation in single pass lighting --- assets/MatDefs/LightingSprite.j3md | 4 +- assets/Shaders/SPLightingSprite.frag | 265 +++++++++++++++++++++++++++ assets/Shaders/SPLightingSprite.vert | 216 ++++++++++++++++++++++ 3 files changed, 483 insertions(+), 2 deletions(-) create mode 100644 assets/Shaders/SPLightingSprite.frag create mode 100644 assets/Shaders/SPLightingSprite.vert diff --git a/assets/MatDefs/LightingSprite.j3md b/assets/MatDefs/LightingSprite.j3md index ac420d931..7fb0b6416 100644 --- a/assets/MatDefs/LightingSprite.j3md +++ b/assets/MatDefs/LightingSprite.j3md @@ -136,8 +136,8 @@ MaterialDef Phong Lighting { Technique { LightMode SinglePass - VertexShader GLSL310 GLSL300 GLSL100 GLSL150: Common/MatDefs/Light/SPLighting.vert - FragmentShader GLSL310 GLSL300 GLSL100 GLSL150: Common/MatDefs/Light/SPLighting.frag + VertexShader GLSL310 GLSL300 GLSL100 GLSL150: Shaders/SPLightingSprite.vert + FragmentShader GLSL310 GLSL300 GLSL100 GLSL150: Shaders/SPLightingSprite.frag WorldParameters { WorldViewProjectionMatrix diff --git a/assets/Shaders/SPLightingSprite.frag b/assets/Shaders/SPLightingSprite.frag new file mode 100644 index 000000000..f8a3310b0 --- /dev/null +++ b/assets/Shaders/SPLightingSprite.frag @@ -0,0 +1,265 @@ +#import "Common/ShaderLib/GLSLCompat.glsllib" +#import "Common/ShaderLib/Parallax.glsllib" +#import "Common/ShaderLib/Optics.glsllib" +#ifndef VERTEX_LIGHTING + #import "Common/ShaderLib/BlinnPhongLighting.glsllib" + #import "Common/ShaderLib/Lighting.glsllib" +#endif + +// fog - jayfella +#ifdef USE_FOG +#import "Common/ShaderLib/MaterialFog.glsllib" +varying float fog_distance; +uniform vec4 m_FogColor; + +#ifdef FOG_LINEAR +uniform vec2 m_LinearFog; +#endif + +#ifdef FOG_EXP +uniform float m_ExpFog; +#endif + +#ifdef FOG_EXPSQ +uniform float m_ExpSqFog; +#endif + +#endif // end fog + +varying vec2 texCoord; +#ifdef SEPARATE_TEXCOORD + varying vec2 texCoord2; +#endif + +varying vec3 AmbientSum; +varying vec4 DiffuseSum; +varying vec3 SpecularSum; + +#ifndef VERTEX_LIGHTING + uniform mat4 g_ViewMatrix; + uniform vec4 g_LightData[NB_LIGHTS]; + varying vec3 vPos; +#endif + +#ifdef DIFFUSEMAP + uniform sampler2D m_DiffuseMap; +#endif + +#ifdef SPECULARMAP + uniform sampler2D m_SpecularMap; +#endif + +#ifdef PARALLAXMAP + uniform sampler2D m_ParallaxMap; +#endif +#if (defined(PARALLAXMAP) || (defined(NORMALMAP_PARALLAX) && defined(NORMALMAP))) && !defined(VERTEX_LIGHTING) + uniform float m_ParallaxHeight; +#endif + +#ifdef LIGHTMAP + uniform sampler2D m_LightMap; +#endif + +#ifdef NORMALMAP + uniform sampler2D m_NormalMap; + varying vec4 vTangent; +#endif +varying vec3 vNormal; + +#ifdef ALPHAMAP + uniform sampler2D m_AlphaMap; +#endif + +#ifdef COLORRAMP + uniform sampler2D m_ColorRamp; +#endif + +uniform float m_AlphaDiscardThreshold; + +#ifndef VERTEX_LIGHTING +uniform float m_Shininess; + + #ifdef USE_REFLECTION + uniform float m_ReflectionPower; + uniform float m_ReflectionIntensity; + varying vec4 refVec; + + uniform ENVMAP m_EnvMap; + #endif +#endif + +void main(){ + #if !defined(VERTEX_LIGHTING) + #if defined(NORMALMAP) + mat3 tbnMat = mat3(vTangent.xyz, vTangent.w * cross( (vNormal), (vTangent.xyz)), vNormal.xyz); + + if (!gl_FrontFacing) + { + tbnMat[2] = -tbnMat[2]; + } + + vec3 viewDir = normalize(-vPos.xyz * tbnMat); + #else + vec3 viewDir = normalize(-vPos.xyz); + #endif + #endif + + vec2 newTexCoord; + + #if (defined(PARALLAXMAP) || (defined(NORMALMAP_PARALLAX) && defined(NORMALMAP))) && !defined(VERTEX_LIGHTING) + + #ifdef STEEP_PARALLAX + #ifdef NORMALMAP_PARALLAX + //parallax map is stored in the alpha channel of the normal map + newTexCoord = steepParallaxOffset(m_NormalMap, viewDir, texCoord, m_ParallaxHeight); + #else + //parallax map is a texture + newTexCoord = steepParallaxOffset(m_ParallaxMap, viewDir, texCoord, m_ParallaxHeight); + #endif + #else + #ifdef NORMALMAP_PARALLAX + //parallax map is stored in the alpha channel of the normal map + newTexCoord = classicParallaxOffset(m_NormalMap, viewDir, texCoord, m_ParallaxHeight); + #else + //parallax map is a texture + newTexCoord = classicParallaxOffset(m_ParallaxMap, viewDir, texCoord, m_ParallaxHeight); + #endif + #endif + #else + newTexCoord = texCoord; + #endif + + #ifdef DIFFUSEMAP + vec4 diffuseColor = texture2D(m_DiffuseMap, newTexCoord); + #else + vec4 diffuseColor = vec4(1.0); + #endif + + float alpha = DiffuseSum.a * diffuseColor.a; + + #ifdef ALPHAMAP + alpha = alpha * texture2D(m_AlphaMap, newTexCoord).r; + #endif + + #ifdef DISCARD_ALPHA + if(alpha < m_AlphaDiscardThreshold){ + discard; + } + #endif + + // *********************** + // Read from textures + // *********************** + #if defined(NORMALMAP) && !defined(VERTEX_LIGHTING) + vec4 normalHeight = texture2D(m_NormalMap, newTexCoord); + //Note the -2.0 and -1.0. We invert the green channel of the normal map, + //as it's compliant with normal maps generated with blender. + //see http://hub.jmonkeyengine.org/forum/topic/parallax-mapping-fundamental-bug/#post-256898 + //for more explanation. + vec3 normal = normalize((normalHeight.xyz * vec3(2.0,-2.0,2.0) - vec3(1.0,-1.0,1.0))); + #elif !defined(VERTEX_LIGHTING) + vec3 normal = normalize(vNormal); + + if (!gl_FrontFacing) + { + normal = -normal; + } + #endif + + #ifdef SPECULARMAP + vec4 specularColor = texture2D(m_SpecularMap, newTexCoord); + #else + vec4 specularColor = vec4(1.0); + #endif + + #ifdef LIGHTMAP + vec3 lightMapColor; + #ifdef SEPARATE_TEXCOORD + lightMapColor = texture2D(m_LightMap, texCoord2).rgb; + #else + lightMapColor = texture2D(m_LightMap, texCoord).rgb; + #endif + specularColor.rgb *= lightMapColor; + diffuseColor.rgb *= lightMapColor; + #endif + + #ifdef VERTEX_LIGHTING + gl_FragColor.rgb = AmbientSum.rgb * diffuseColor.rgb + + DiffuseSum.rgb * diffuseColor.rgb + + SpecularSum.rgb * specularColor.rgb; + #else + + int i = 0; + gl_FragColor.rgb = AmbientSum * diffuseColor.rgb; + + #ifdef USE_REFLECTION + vec4 refColor = Optics_GetEnvColor(m_EnvMap, refVec.xyz); + #endif + + for( int i = 0;i < NB_LIGHTS; i+=3){ + vec4 lightColor = g_LightData[i]; + vec4 lightData1 = g_LightData[i+1]; + vec4 lightDir; + vec3 lightVec; + lightComputeDir(vPos, lightColor.w, lightData1, lightDir,lightVec); + + float spotFallOff = 1.0; + #if __VERSION__ >= 110 + // allow use of control flow + if(lightColor.w > 1.0){ + #endif + spotFallOff = computeSpotFalloff(g_LightData[i+2], lightVec); + #if __VERSION__ >= 110 + } + #endif + + #ifdef NORMALMAP + //Normal map -> lighting is computed in tangent space + lightDir.xyz = normalize(lightDir.xyz * tbnMat); + #else + //no Normal map -> lighting is computed in view space + lightDir.xyz = normalize(lightDir.xyz); + #endif + + vec2 light = computeLighting(normal, viewDir, lightDir.xyz, lightDir.w * spotFallOff , m_Shininess); + + // Workaround, since it is not possible to modify varying variables + vec4 SpecularSum2 = vec4(SpecularSum, 1.0); + #ifdef USE_REFLECTION + // Interpolate light specularity toward reflection color + // Multiply result by specular map + specularColor = mix(SpecularSum2 * light.y, refColor, refVec.w) * specularColor; + + SpecularSum2 = vec4(1.0); + light.y = 1.0; + #endif + + vec3 DiffuseSum2 = DiffuseSum.rgb; + #ifdef COLORRAMP + DiffuseSum2.rgb *= texture2D(m_ColorRamp, vec2(light.x, 0.0)).rgb; + SpecularSum2.rgb *= texture2D(m_ColorRamp, vec2(light.y, 0.0)).rgb; + light.xy = vec2(1.0); + #endif + + gl_FragColor.rgb += DiffuseSum2.rgb * lightColor.rgb * diffuseColor.rgb * vec3(light.x) + + SpecularSum2.rgb * lightColor.rgb * specularColor.rgb * vec3(light.y); + } + + #endif + + // add fog after the lighting because shadows will cause the fog to darken + // which just results in the geometry looking like it's changed color + #ifdef USE_FOG + #ifdef FOG_LINEAR + gl_FragColor = getFogLinear(gl_FragColor, m_FogColor, m_LinearFog.x, m_LinearFog.y, fog_distance); + #endif + #ifdef FOG_EXP + gl_FragColor = getFogExp(gl_FragColor, m_FogColor, m_ExpFog, fog_distance); + #endif + #ifdef FOG_EXPSQ + gl_FragColor = getFogExpSquare(gl_FragColor, m_FogColor, m_ExpSqFog, fog_distance); + #endif + #endif // end fog + + gl_FragColor.a = alpha; +} \ No newline at end of file diff --git a/assets/Shaders/SPLightingSprite.vert b/assets/Shaders/SPLightingSprite.vert new file mode 100644 index 000000000..cc7813a42 --- /dev/null +++ b/assets/Shaders/SPLightingSprite.vert @@ -0,0 +1,216 @@ +#import "Common/ShaderLib/GLSLCompat.glsllib" +#import "Common/ShaderLib/Instancing.glsllib" +#import "Common/ShaderLib/Skinning.glsllib" +#import "Common/ShaderLib/Lighting.glsllib" +#import "Common/ShaderLib/MorphAnim.glsllib" + +#ifdef VERTEX_LIGHTING + #import "Common/ShaderLib/BlinnPhongLighting.glsllib" +#endif + +// fog - jayfella +#ifdef USE_FOG +varying float fog_distance; +uniform vec3 g_CameraPosition; +#endif + +// Animation +uniform float g_Time; +uniform int m_NumberOfTiles; +uniform int m_Speed; + +uniform vec4 m_Ambient; +uniform vec4 m_Diffuse; +uniform vec4 m_Specular; +uniform float m_Shininess; + +#if defined(VERTEX_LIGHTING) + uniform vec4 g_LightData[NB_LIGHTS]; +#endif +uniform vec4 g_AmbientLightColor; +varying vec2 texCoord; + +#ifdef SEPARATE_TEXCOORD + varying vec2 texCoord2; + attribute vec2 inTexCoord2; +#endif + +varying vec3 AmbientSum; +varying vec4 DiffuseSum; +varying vec3 SpecularSum; + +attribute vec3 inPosition; +attribute vec2 inTexCoord; +attribute vec3 inNormal; + +#ifdef VERTEX_COLOR + attribute vec4 inColor; +#endif + +#ifndef VERTEX_LIGHTING + varying vec3 vNormal; + varying vec3 vPos; + #ifdef NORMALMAP + attribute vec4 inTangent; + varying vec4 vTangent; + #endif +#else + #ifdef COLORRAMP + uniform sampler2D m_ColorRamp; + #endif +#endif + +#ifdef USE_REFLECTION + uniform vec3 g_CameraPosition; + uniform vec3 m_FresnelParams; + varying vec4 refVec; + + /** + * Input: + * attribute inPosition + * attribute inNormal + * uniform g_WorldMatrix + * uniform g_CameraPosition + * + * Output: + * varying refVec + */ + void computeRef(in vec4 modelSpacePos){ + // vec3 worldPos = (g_WorldMatrix * modelSpacePos).xyz; + vec3 worldPos = TransformWorld(modelSpacePos).xyz; + + vec3 I = normalize( g_CameraPosition - worldPos ).xyz; + // vec3 N = normalize( (g_WorldMatrix * vec4(inNormal, 0.0)).xyz ); + vec3 N = normalize( TransformWorld(vec4(inNormal, 0.0)).xyz ); + + refVec.xyz = reflect(I, N); + refVec.w = m_FresnelParams.x + m_FresnelParams.y * pow(1.0 + dot(I, N), m_FresnelParams.z); + } +#endif + +void main(){ + vec4 modelSpacePos = vec4(inPosition, 1.0); + vec3 modelSpaceNorm = inNormal; + + #if defined(NORMALMAP) && !defined(VERTEX_LIGHTING) + vec3 modelSpaceTan = inTangent.xyz; + #endif + + #ifdef NUM_MORPH_TARGETS + #if defined(NORMALMAP) && !defined(VERTEX_LIGHTING) + Morph_Compute(modelSpacePos, modelSpaceNorm, modelSpaceTan); + #else + Morph_Compute(modelSpacePos, modelSpaceNorm); + #endif + #endif + + #ifdef NUM_BONES + #if defined(NORMALMAP) && !defined(VERTEX_LIGHTING) + Skinning_Compute(modelSpacePos, modelSpaceNorm, modelSpaceTan); + #else + Skinning_Compute(modelSpacePos, modelSpaceNorm); + #endif + #endif + + gl_Position = TransformWorldViewProjection(modelSpacePos); + texCoord = inTexCoord; + + // Animation + int iNumberOfTiles = int(m_NumberOfTiles); + + int selectedTile = 0; + + selectedTile += int(g_Time*float(m_Speed)); + + texCoord.x = (float((texCoord.x + mod(float(selectedTile), float(iNumberOfTiles))) / float(iNumberOfTiles))); ///selectedTile; + // Animation end + + #ifdef SEPARATE_TEXCOORD + texCoord2 = inTexCoord2; + #endif + + vec3 wvPosition = TransformWorldView(modelSpacePos).xyz; + vec3 wvNormal = normalize(TransformNormal(modelSpaceNorm)); + vec3 viewDir = normalize(-wvPosition); + + + #if defined(NORMALMAP) && !defined(VERTEX_LIGHTING) + vTangent = vec4(TransformNormal(modelSpaceTan).xyz,inTangent.w); + vNormal = wvNormal; + vPos = wvPosition; + #elif !defined(VERTEX_LIGHTING) + vNormal = wvNormal; + vPos = wvPosition; + #endif + + #ifdef MATERIAL_COLORS + AmbientSum = m_Ambient.rgb * g_AmbientLightColor.rgb; + SpecularSum = m_Specular.rgb; + DiffuseSum = m_Diffuse; + #else + // Defaults: Ambient and diffuse are white, specular is black. + AmbientSum = g_AmbientLightColor.rgb; + SpecularSum = vec3(0.0); + DiffuseSum = vec4(1.0); + #endif + #ifdef VERTEX_COLOR + AmbientSum *= inColor.rgb; + DiffuseSum *= inColor; + #endif + #ifdef VERTEX_LIGHTING + int i = 0; + vec3 diffuseAccum = vec3(0.0); + vec3 specularAccum = vec3(0.0); + vec4 diffuseColor; + vec3 specularColor; + for (int i =0;i < NB_LIGHTS; i+=3){ + vec4 lightColor = g_LightData[i]; + vec4 lightData1 = g_LightData[i+1]; + #ifdef MATERIAL_COLORS + diffuseColor = m_Diffuse * vec4(lightColor.rgb, 1.0); + specularColor = m_Specular.rgb * lightColor.rgb; + #else + diffuseColor = vec4(lightColor.rgb, 1.0); + specularColor = vec3(0.0); + #endif + + vec4 lightDir; + vec3 lightVec; + lightComputeDir(wvPosition, lightColor.w, lightData1, lightDir, lightVec); + // lightDir = normalize(lightDir); + // lightVec = normalize(lightVec); + + float spotFallOff = 1.0; + #if __VERSION__ >= 110 + // allow use of control flow + if(lightColor.w > 1.0){ + #endif + vec4 lightDirection = g_LightData[i+2]; + spotFallOff = computeSpotFalloff(lightDirection, lightVec); + #if __VERSION__ >= 110 + } + #endif + vec2 light = computeLighting(wvNormal, viewDir, lightDir.xyz, lightDir.w * spotFallOff, m_Shininess); + + #ifdef COLORRAMP + diffuseAccum += texture2D(m_ColorRamp, vec2(light.x, 0.0)).rgb * diffuseColor.rgb; + specularAccum += texture2D(m_ColorRamp, vec2(light.y, 0.0)).rgb * specularColor; + #else + diffuseAccum += light.x * diffuseColor.rgb; + specularAccum += light.y * specularColor; + #endif + } + + DiffuseSum.rgb *= diffuseAccum.rgb; + SpecularSum.rgb *= specularAccum.rgb; + #endif + + + #ifdef USE_REFLECTION + computeRef(modelSpacePos); + #endif + + #ifdef USE_FOG + fog_distance = distance(g_CameraPosition, (TransformWorld(modelSpacePos)).xyz); + #endif +} \ No newline at end of file From 25541224001a3a6ee63580f4dd8cc696af28ae30 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Fri, 20 Oct 2023 22:06:55 +0300 Subject: [PATCH 03/47] Disable shadows on unit flowers --- src/toniarts/openkeeper/view/control/UnitFlowerControl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/toniarts/openkeeper/view/control/UnitFlowerControl.java b/src/toniarts/openkeeper/view/control/UnitFlowerControl.java index fd6958dd2..2bde41c79 100644 --- a/src/toniarts/openkeeper/view/control/UnitFlowerControl.java +++ b/src/toniarts/openkeeper/view/control/UnitFlowerControl.java @@ -21,6 +21,7 @@ import com.jme3.material.RenderState.BlendMode; import com.jme3.material.RenderState.FaceCullMode; import com.jme3.math.ColorRGBA; +import com.jme3.renderer.queue.RenderQueue; import com.jme3.renderer.queue.RenderQueue.Bucket; import com.jme3.scene.Geometry; import com.jme3.scene.Mesh; @@ -335,6 +336,7 @@ private void createFlower() { material.getAdditionalRenderState().setDepthTest(false); spatial.setQueueBucket(Bucket.Translucent); spatial.setUserData(AssetUtils.USER_DATA_KEY_REMOVABLE, false); + spatial.setShadowMode(RenderQueue.ShadowMode.Off); onMaterialCreated(material); } From 744a129513f109a12165f33a25ee5cfc398bb8f1 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Fri, 20 Oct 2023 23:28:17 +0300 Subject: [PATCH 04/47] Improve logging --- src/toniarts/openkeeper/video/tgq/TgqFile.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/toniarts/openkeeper/video/tgq/TgqFile.java b/src/toniarts/openkeeper/video/tgq/TgqFile.java index e4c9e8ab3..bd41af9c7 100644 --- a/src/toniarts/openkeeper/video/tgq/TgqFile.java +++ b/src/toniarts/openkeeper/video/tgq/TgqFile.java @@ -325,8 +325,8 @@ private void readAudioHeader(int frameSize) throws IOException { return; // The end } default: { - LOGGER.log(Level.INFO, "Did not process tag {0}!", tag); - getValue(reader); + int val = getValue(reader); + LOGGER.log(Level.INFO, "Did not process tag {0}! Value: " + val, tag); } } } From 5242cfa2fd3612356f3093d3ca690e5178f47c93 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Fri, 20 Oct 2023 23:38:46 +0300 Subject: [PATCH 05/47] Technically correct, disable receiving and casting shadows on flame --- src/toniarts/openkeeper/world/effect/TorchControl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/toniarts/openkeeper/world/effect/TorchControl.java b/src/toniarts/openkeeper/world/effect/TorchControl.java index eee47ddbd..dba27de6e 100644 --- a/src/toniarts/openkeeper/world/effect/TorchControl.java +++ b/src/toniarts/openkeeper/world/effect/TorchControl.java @@ -92,6 +92,7 @@ private Spatial createFlame() { result.setMaterial(material); result.setQueueBucket(RenderQueue.Bucket.Translucent); result.move(0.14f, 0.2f, 0); + result.setShadowMode(RenderQueue.ShadowMode.Off); } catch (Exception e) { log.log(Level.WARNING, "Can't create torch flame", e); From fc7c983f4a5bf055594e0e414e7af2a3d8eeda7f Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 21 Oct 2023 11:02:10 +0300 Subject: [PATCH 06/47] Abstract class constructors as protected --- src/toniarts/openkeeper/video/tgq/TgqFile.java | 2 +- src/toniarts/openkeeper/view/control/UnitFlowerControl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/toniarts/openkeeper/video/tgq/TgqFile.java b/src/toniarts/openkeeper/video/tgq/TgqFile.java index bd41af9c7..be3694c7c 100644 --- a/src/toniarts/openkeeper/video/tgq/TgqFile.java +++ b/src/toniarts/openkeeper/video/tgq/TgqFile.java @@ -107,7 +107,7 @@ protected void onAudioHeader(EAAudioHeader audioHeader) { } } - public TgqFile(Path file) throws IOException { + protected TgqFile(Path file) throws IOException { this.file = new BufferedResourceReader(file); } diff --git a/src/toniarts/openkeeper/view/control/UnitFlowerControl.java b/src/toniarts/openkeeper/view/control/UnitFlowerControl.java index 2bde41c79..8d5ed0c51 100644 --- a/src/toniarts/openkeeper/view/control/UnitFlowerControl.java +++ b/src/toniarts/openkeeper/view/control/UnitFlowerControl.java @@ -72,7 +72,7 @@ public abstract class UnitFlowerControl extends BillboardControl implements I private final AssetManager assetManager; private final T data; - public UnitFlowerControl(EntityId entityId, EntityData entityData, T data, AssetManager assetManager) { + protected UnitFlowerControl(EntityId entityId, EntityData entityData, T data, AssetManager assetManager) { super(); this.entityId = entityId; this.data = data; From 15f352a9cd8ea50849996e71d7737596a8225df3 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 21 Oct 2023 17:07:58 +0300 Subject: [PATCH 07/47] Refactor to reduce complexity --- .../openkeeper/video/tgq/TgqFile.java | 224 +++++++++--------- 1 file changed, 118 insertions(+), 106 deletions(-) diff --git a/src/toniarts/openkeeper/video/tgq/TgqFile.java b/src/toniarts/openkeeper/video/tgq/TgqFile.java index be3694c7c..5f20fea23 100644 --- a/src/toniarts/openkeeper/video/tgq/TgqFile.java +++ b/src/toniarts/openkeeper/video/tgq/TgqFile.java @@ -130,43 +130,34 @@ public boolean readFrame() throws IOException { // See what kind of frame we are dealing with here switch (tag) { - case SHEN_TAG: - case SCHl_TAG: { + case SHEN_TAG, SCHl_TAG -> { // Audio header, set some context parameters readAudioHeader(frameSize - 8); onAudioHeader(audioHeader); gotFrame = true; - break; } - case SCEN_TAG: - case SCCl_TAG: { + case SCEN_TAG, SCCl_TAG -> { // Number of audio data tags numberOfAudioStreamChunks = file.readChunk(4).readUnsignedInteger(); - gotFrame = true; - break; } - case SDEN_TAG: - case SCDl_TAG: { + case SDEN_TAG, SCDl_TAG -> { // Audio data itself addAudioFrame(new EAAudioFrame(audioHeader, file.readChunk(frameSize - 8).getByteBuffer(), audioFrameIndex)); gotFrame = true; audioFrameIndex++; - break; } - case SEEN_TAG: - case SCEl_TAG: { + case SEEN_TAG, SCEl_TAG -> { // End of audio stream, nothing really to do gotFrame = true; - break; } - case TQG_TAG: { + case TQG_TAG -> { // Video frame TgqFrame frame = new TgqFrame(file.readChunk(frameSize - 8).getByteBuffer(), videoFrameIndex); @@ -180,11 +171,9 @@ public boolean readFrame() throws IOException { gotFrame = true; videoFrameIndex++; - break; } - default: { + default -> { LOGGER.log(Level.WARNING, "Unkown tag {0}!", tag); - break; } } @@ -220,7 +209,83 @@ private void readAudioHeader(int frameSize) throws IOException { if (!PT_PATCH_TAG.equals(headerTag)) { throw new RuntimeException(PT_PATCH_TAG + " was expected in audio header! But " + headerTag + " found!"); } - audioHeader = new EAAudioHeader(); + audioHeader = createDefaultAudioHeader(); + + int platformIdentifier = reader.readShort(); + audioHeader.setPlatform(getPlatform(platformIdentifier)); + + readAudioHeaderTagData(reader, audioHeader); + } + + private static void readAudioHeaderTagData(IResourceChunkReader reader, EAAudioHeader audioHeader) throws IOException { + while (reader.hasRemaining()) { + short tag = reader.readUnsignedByte(); + switch (tag) { + case 0xFC, 0xFE, 0xFD -> { + if (readAudioHeaderSubStream(reader, audioHeader)) { + return; + } + } + case 0xFF -> { + + // The end + return; + } + default -> { + int val = getValue(reader); + LOGGER.log(Level.INFO, "Did not process tag {0}! Value: " + val, tag); + } + } + } + } + + /** + * Reads audio header sub stream + * + * @param reader header resource reader + * @param audioHeader the audio header data to read to + * @return returns true if the whole stream is exhausted + * @throws IOException + */ + private static boolean readAudioHeaderSubStream(IResourceChunkReader reader, EAAudioHeader audioHeader) throws IOException { + while (reader.hasRemaining()) { + short subTag = reader.readUnsignedByte(); + switch (subTag) { + case 0x82 -> { + audioHeader.setNumberOfChannels(getValue(reader)); + } + case 0x83 -> { + int compressionIdentifier = getValue(reader); + audioHeader.setCompression(getCompression(compressionIdentifier)); + } + case 0x85 -> { + audioHeader.setNumberOfSamplesInStream(getValue(reader)); + } + case 0x8A -> { + + // Exit sub stream + // Specs say this has no data but I beg to differ + getValue(reader); + + return false; + } + case 0xFF -> { + + // The end + return true; + } + default -> { + LOGGER.log(Level.INFO, "Did not process sub stream tag {0}!", subTag); + getValue(reader); + } + } + } + + return false; + } + + private static EAAudioHeader createDefaultAudioHeader() { + EAAudioHeader audioHeader = new EAAudioHeader(); // Set PT defaults audioHeader.setBitsPerSample(16); @@ -228,106 +293,53 @@ private void readAudioHeader(int frameSize) throws IOException { audioHeader.setNumberOfChannels(1); audioHeader.setSampleRate(22050); - int platformIdentifier = reader.readShort(); + return audioHeader; + } + + private static EAAudioHeader.Platform getPlatform(int platformIdentifier) { switch (platformIdentifier) { - case 0x00: { - audioHeader.setPlatform(EAAudioHeader.Platform.PC); - break; + case 0x00 -> { + return EAAudioHeader.Platform.PC; } - case 0x03: { - audioHeader.setPlatform(EAAudioHeader.Platform.MACINTOSH); - break; + case 0x03 -> { + return EAAudioHeader.Platform.MACINTOSH; } - case 0x05: { - audioHeader.setPlatform(EAAudioHeader.Platform.PLAYSTATION_2); - break; + case 0x05 -> { + return EAAudioHeader.Platform.PLAYSTATION_2; } - case 0x06: { - audioHeader.setPlatform(EAAudioHeader.Platform.GAME_CUBE); - break; + case 0x06 -> { + return EAAudioHeader.Platform.GAME_CUBE; } - case 0x07: { - audioHeader.setPlatform(EAAudioHeader.Platform.XBOX); - break; + case 0x07 -> { + return EAAudioHeader.Platform.XBOX; } - case 0x09: { - audioHeader.setPlatform(EAAudioHeader.Platform.XENON_XBOX_360); - break; + case 0x09 -> { + return EAAudioHeader.Platform.XENON_XBOX_360; } - case 0x0A: { - audioHeader.setPlatform(EAAudioHeader.Platform.PSP); - break; + case 0x0A -> { + return EAAudioHeader.Platform.PSP; } - default: { - audioHeader.setPlatform(EAAudioHeader.Platform.UNKNOWN); + default -> { + return EAAudioHeader.Platform.UNKNOWN; } } + } - // Tag data - boolean inSubStream; - while (reader.hasRemaining()) { - short tag = reader.readUnsignedByte(); + private static EAAudioHeader.Compression getCompression(int compressionIdentifier) { + switch (compressionIdentifier) { + case 0x00 -> { - switch (tag) { - case 0xFC: - case 0xFE: - case 0xFD: { - - // Start of a sub stream - inSubStream = true; - - // Loop through the sub stream - while (inSubStream && reader.hasRemaining()) { - short subTag = reader.readUnsignedByte(); - switch (subTag) { - case 0x82: { - audioHeader.setNumberOfChannels(getValue(reader)); - break; - } - case 0x83: { - switch (getValue(reader)) { - case 0x00: { - audioHeader.setCompression(EAAudioHeader.Compression.PCM_16_I_LE); // We don't know the bits really - break; - } - case 0x07: { - audioHeader.setCompression(EAAudioHeader.Compression.EA_XA_ADPCM); - break; - } - case 0x09: { - audioHeader.setCompression(EAAudioHeader.Compression.UNKNOWN); - break; - } - } - break; - } - case 0x85: { - audioHeader.setNumberOfSamplesInStream(getValue(reader)); - break; - } - case 0x8A: { - inSubStream = false; - getValue(reader); // Specs say this has no data but I beg to differ - break; - } - case 0xFF: { - return; // The end - } - default: { - LOGGER.log(Level.INFO, "Did not process sub stream tag {0}!", subTag); - getValue(reader); - } - } - } - break; - } - case 0xFF: { - return; // The end - } - default: { - int val = getValue(reader); - LOGGER.log(Level.INFO, "Did not process tag {0}! Value: " + val, tag); - } + // We don't know the bits really + return EAAudioHeader.Compression.PCM_16_I_LE; + } + case 0x07 -> { + return EAAudioHeader.Compression.EA_XA_ADPCM; + } + case 0x09 -> { + return EAAudioHeader.Compression.UNKNOWN; + } + default -> { + return EAAudioHeader.Compression.UNKNOWN; } } } From e631bceff1d985f9011c03370d2fccf883b569e7 Mon Sep 17 00:00:00 2001 From: Andreas Hollandt Date: Thu, 13 Apr 2023 15:48:55 +0200 Subject: [PATCH 08/47] build all branches in CI --- .github/workflows/gradle.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 7934d2fb4..83721ccf5 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -5,7 +5,6 @@ name: Java CI with Gradle on: push: - branches: [ master ] pull_request: branches: [ master ] From 8145ea2fa735354769028636afc101c9faed7ead Mon Sep 17 00:00:00 2001 From: Trass3r Date: Mon, 22 May 2023 00:10:38 +0200 Subject: [PATCH 09/47] report build warnings in CI see https://github.com/actions/setup-java/issues/286 --- .github/workflows/gradle.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 83721ccf5..025bc97ae 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -20,6 +20,7 @@ jobs: with: java-version: '17' distribution: 'temurin' + - uses: Trass3r/setup-cpp@master - name: Build with Gradle run: ./gradlew build - uses: actions/upload-artifact@v3 From e3c8597db76b2977d7ef07ddf81afa22050730d8 Mon Sep 17 00:00:00 2001 From: Andreas Hollandt Date: Wed, 15 Nov 2023 14:28:32 +0100 Subject: [PATCH 10/47] enable gradle parallel builds and warnings --- gradle.properties | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gradle.properties b/gradle.properties index ed4ebb2ba..8b60993f4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,4 @@ org.gradle.caching = true org.gradle.vfs.watch = true +org.gradle.parallel = true +org.gradle.warning.mode = all From a71cb9da2e05cac4aec80fde0ada8ca8fbf93add Mon Sep 17 00:00:00 2001 From: Andreas Hollandt Date: Wed, 15 Nov 2023 14:41:36 +0100 Subject: [PATCH 11/47] fix missing @Deprecated warnings --- .../game/network/ClientListener.java | 1 + .../game/network/LocalServerSearch.java | 1 + .../openkeeper/game/network/ServerQuery.java | 2 +- .../openkeeper/game/sound/HornyType.java | 1 + .../openkeeper/game/sound/MentorType.java | 1 + .../openkeeper/game/sound/MpdType.java | 1 + .../game/sound/MultiplayerType.java | 1 + .../tools/convert/map/Creature.java | 20 +++++++++++++++++++ .../tools/modelviewer/SoundsLoader.java | 1 + src/toniarts/openkeeper/world/WorldState.java | 1 + .../openkeeper/world/room/Normal.java | 1 + 11 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/toniarts/openkeeper/game/network/ClientListener.java b/src/toniarts/openkeeper/game/network/ClientListener.java index a20d47f8f..ff36c41db 100644 --- a/src/toniarts/openkeeper/game/network/ClientListener.java +++ b/src/toniarts/openkeeper/game/network/ClientListener.java @@ -25,6 +25,7 @@ * @deprecated used ObjectMessageDelegator in NetworkClient * @author ArchDemon */ +@Deprecated public class ClientListener implements MessageListener { private NetworkClient client; diff --git a/src/toniarts/openkeeper/game/network/LocalServerSearch.java b/src/toniarts/openkeeper/game/network/LocalServerSearch.java index efccbc2fc..150f15781 100644 --- a/src/toniarts/openkeeper/game/network/LocalServerSearch.java +++ b/src/toniarts/openkeeper/game/network/LocalServerSearch.java @@ -32,6 +32,7 @@ * @deprecated * @author ArchDemon */ +@Deprecated public abstract class LocalServerSearch { private static final Logger logger = Logger.getLogger(LocalServerSearch.class.getName()); diff --git a/src/toniarts/openkeeper/game/network/ServerQuery.java b/src/toniarts/openkeeper/game/network/ServerQuery.java index b3db40d0a..4811147bf 100644 --- a/src/toniarts/openkeeper/game/network/ServerQuery.java +++ b/src/toniarts/openkeeper/game/network/ServerQuery.java @@ -19,7 +19,6 @@ import com.jme3.network.Client; import com.jme3.network.Network; import java.io.IOException; -import java.net.InetAddress; import java.util.LinkedList; import java.util.logging.Logger; @@ -27,6 +26,7 @@ * @deprecated * @author ArchDemon */ +@Deprecated public abstract class ServerQuery extends Thread { private static final Logger logger = Logger.getLogger(ServerQuery.class.getName()); diff --git a/src/toniarts/openkeeper/game/sound/HornyType.java b/src/toniarts/openkeeper/game/sound/HornyType.java index b54288892..83b8fec72 100644 --- a/src/toniarts/openkeeper/game/sound/HornyType.java +++ b/src/toniarts/openkeeper/game/sound/HornyType.java @@ -24,6 +24,7 @@ * @deprecated temporary file. Maybe we should delete it * @author ArchDemon */ +@Deprecated public enum HornyType implements IIndexable { HORNG014(1); diff --git a/src/toniarts/openkeeper/game/sound/MentorType.java b/src/toniarts/openkeeper/game/sound/MentorType.java index 601ad1f30..f51093265 100644 --- a/src/toniarts/openkeeper/game/sound/MentorType.java +++ b/src/toniarts/openkeeper/game/sound/MentorType.java @@ -23,6 +23,7 @@ * @deprecated temporary file. Maybe we should delete it * @author ArchDemon */ +@Deprecated public enum MentorType implements IIndexable { COUNT001(1), diff --git a/src/toniarts/openkeeper/game/sound/MpdType.java b/src/toniarts/openkeeper/game/sound/MpdType.java index c2c6e8872..5faa1b20b 100644 --- a/src/toniarts/openkeeper/game/sound/MpdType.java +++ b/src/toniarts/openkeeper/game/sound/MpdType.java @@ -23,6 +23,7 @@ * @deprecated temporary file. Maybe we should delete it * @author ArchDemon */ +@Deprecated public enum MpdType implements IIndexable { LVLSPE01(1), diff --git a/src/toniarts/openkeeper/game/sound/MultiplayerType.java b/src/toniarts/openkeeper/game/sound/MultiplayerType.java index 4cf4beae2..f50deb986 100644 --- a/src/toniarts/openkeeper/game/sound/MultiplayerType.java +++ b/src/toniarts/openkeeper/game/sound/MultiplayerType.java @@ -23,6 +23,7 @@ * @deprecated temporary file. Maybe we should delete it * @author ArchDemon */ +@Deprecated public enum MultiplayerType implements IIndexable { LVLSPE01(1), diff --git a/src/toniarts/openkeeper/tools/convert/map/Creature.java b/src/toniarts/openkeeper/tools/convert/map/Creature.java index a3ba0a1ad..0f2df7947 100644 --- a/src/toniarts/openkeeper/tools/convert/map/Creature.java +++ b/src/toniarts/openkeeper/tools/convert/map/Creature.java @@ -590,6 +590,7 @@ public Attributes getAttributes() { * @deprecated use getAnimation(AnimationType.WALK) * @return */ + @Deprecated public ArtResource getAnimWalkResource() { return animation.get(AnimationType.WALK); } @@ -598,6 +599,7 @@ public ArtResource getAnimWalkResource() { * @deprecated use getAnimation(AnimationType.BEING_DRAGGED) * @return */ + @Deprecated public ArtResource getAnimDraggedPoseResource() { return animation.get(AnimationType.DRAGGED); } @@ -606,6 +608,7 @@ public ArtResource getAnimDraggedPoseResource() { * @deprecated use getAnimation(AnimationType.MELEE_1) * @return */ + @Deprecated public ArtResource getAnimMelee1Resource() { return animation.get(AnimationType.MELEE_ATTACK); } @@ -614,6 +617,7 @@ public ArtResource getAnimMelee1Resource() { * @deprecated use getAnimation(AnimationType.CAST_SPELL) * @return */ + @Deprecated public ArtResource getAnimMagicResource() { return animation.get(AnimationType.CAST_SPELL); } @@ -622,6 +626,7 @@ public ArtResource getAnimMagicResource() { * @deprecated use getAnimation(AnimationType.DIE) * @return */ + @Deprecated public ArtResource getAnimDieResource() { return animation.get(AnimationType.DIE); } @@ -630,6 +635,7 @@ public ArtResource getAnimDieResource() { * @deprecated use getAnimation(AnimationType.IN_HAND) * @return */ + @Deprecated public ArtResource getAnimInHandResource() { return animation.get(AnimationType.IN_HAND); } @@ -638,6 +644,7 @@ public ArtResource getAnimInHandResource() { * @deprecated use getAnimation(AnimationType.SLEEPING) * @return */ + @Deprecated public ArtResource getAnimSleepResource() { return animation.get(AnimationType.SLEEPING); } @@ -646,6 +653,7 @@ public ArtResource getAnimSleepResource() { * @deprecated use getAnimation(AnimationType.EATING) * @return */ + @Deprecated public ArtResource getAnimEatResource() { return animation.get(AnimationType.EATING); } @@ -654,6 +662,7 @@ public ArtResource getAnimEatResource() { * @deprecated use getAnimation(AnimationType.RESEARCHING) * @return */ + @Deprecated public ArtResource getAnimResearchResource() { return animation.get(AnimationType.RESEARCHING); } @@ -662,6 +671,7 @@ public ArtResource getAnimResearchResource() { * @deprecated use getAnimation(AnimationType.IDLE_1) * @return */ + @Deprecated public ArtResource getAnimIdle1Resource() { return animation.get(AnimationType.IDLE_1); } @@ -670,6 +680,7 @@ public ArtResource getAnimIdle1Resource() { * @deprecated use getAnimation(AnimationType.FALL_OVER_AND_UP) * @return */ + @Deprecated public ArtResource getAnimFallbackResource() { return animation.get(AnimationType.FALLBACK); } @@ -678,6 +689,7 @@ public ArtResource getAnimFallbackResource() { * @deprecated use getAnimation(AnimationType.GET_UP) * @return */ + @Deprecated public ArtResource getAnimGetUpResource() { return animation.get(AnimationType.GET_UP); } @@ -686,6 +698,7 @@ public ArtResource getAnimGetUpResource() { * @deprecated use getAnimation(AnimationType.ENTRANCE) * @return */ + @Deprecated public ArtResource getAnimEntranceResource() { return animation.get(AnimationType.ENTRANCE); } @@ -694,6 +707,7 @@ public ArtResource getAnimEntranceResource() { * @deprecated use getAnimation(AnimationType.IDLE_2) * @return */ + @Deprecated public ArtResource getAnimIdle2Resource() { return animation.get(AnimationType.IDLE_2); } @@ -702,6 +716,7 @@ public ArtResource getAnimIdle2Resource() { * @deprecated use getAnimation(AnimationType.MELEE_2) * @return */ + @Deprecated public ArtResource getAnimMelee2Resource() { return animation.get(AnimationType.SWIPE); } @@ -710,6 +725,7 @@ public ArtResource getAnimMelee2Resource() { * @deprecated use getAnimation(AnimationType.DRUNKED_IDLE) * @return */ + @Deprecated public ArtResource getDrunkIdle() { return animation.get(AnimationType.DRUNKED_IDLE); } @@ -718,6 +734,7 @@ public ArtResource getDrunkIdle() { * @deprecated use getAnimation(AnimationType.BACK_OFF) * @return */ + @Deprecated public ArtResource getAnimWalkbackResource() { return animation.get(AnimationType.BACK_OFF); } @@ -726,6 +743,7 @@ public ArtResource getAnimWalkbackResource() { * @deprecated use getAnimation(AnimationType.STAND_STILL) * @return */ + @Deprecated public ArtResource getAnimPoseFrameResource() { return animation.get(AnimationType.STAND_STILL); } @@ -734,6 +752,7 @@ public ArtResource getAnimPoseFrameResource() { * @deprecated use getAnimation(AnimationType.STEALTH_WALK) * @return */ + @Deprecated public ArtResource getAnimWalk2Resource() { return animation.get(AnimationType.STEALTH_WALK); } @@ -742,6 +761,7 @@ public ArtResource getAnimWalk2Resource() { * @deprecated use getAnimation(AnimationType.DEATH_POSE) * @return */ + @Deprecated public ArtResource getAnimDiePoseResource() { return animation.get(AnimationType.DEATH_POSE); } diff --git a/src/toniarts/openkeeper/tools/modelviewer/SoundsLoader.java b/src/toniarts/openkeeper/tools/modelviewer/SoundsLoader.java index d9d8c862e..5b3f2052f 100644 --- a/src/toniarts/openkeeper/tools/modelviewer/SoundsLoader.java +++ b/src/toniarts/openkeeper/tools/modelviewer/SoundsLoader.java @@ -153,6 +153,7 @@ public static void playSound(final Node parent, final AudioNode node, final Poin * @deprecated @param category * @param useGlobal */ + @Deprecated public static void temp(final String category, final boolean useGlobal) { List result = new ArrayList<>(); diff --git a/src/toniarts/openkeeper/world/WorldState.java b/src/toniarts/openkeeper/world/WorldState.java index 1deae4c1b..5a58f0e60 100644 --- a/src/toniarts/openkeeper/world/WorldState.java +++ b/src/toniarts/openkeeper/world/WorldState.java @@ -350,6 +350,7 @@ public Node getWorld() { * * @return KwdFile */ + @Deprecated public KwdFile getLevelData() { return kwdFile; } diff --git a/src/toniarts/openkeeper/world/room/Normal.java b/src/toniarts/openkeeper/world/room/Normal.java index e99310878..1fae3b164 100644 --- a/src/toniarts/openkeeper/world/room/Normal.java +++ b/src/toniarts/openkeeper/world/room/Normal.java @@ -200,6 +200,7 @@ protected void contructPillars(Node node) { * * @return room pillar resource */ + @Deprecated protected String getPillarResource() { return roomInstance.getRoom().getCompleteResource().getName() + "_Pillar"; } From 2916cb4279472b18c4e014c830252eaa0557f34f Mon Sep 17 00:00:00 2001 From: Andreas Hollandt Date: Wed, 15 Nov 2023 14:59:08 +0100 Subject: [PATCH 12/47] enable deprecation warnings --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 4002672d8..fee933098 100644 --- a/build.gradle +++ b/build.gradle @@ -115,7 +115,7 @@ java { compileJava { // We have annotation processors in log4j, only needed for writing plugins, disable the warnings options.compilerArgs += ["-proc:none"] - //options.compilerArgs += ["-Xlint:deprecation"] + options.compilerArgs += ["-Xlint:deprecation"] //options.compilerArgs += ["-Xlint:unchecked"] } From d11228ec0131f25e37d69280d45c7be3584c9d9b Mon Sep 17 00:00:00 2001 From: Andreas Hollandt Date: Wed, 15 Nov 2023 13:32:16 +0100 Subject: [PATCH 13/47] use constants from MapViewController instead of old MapLoader --- .../openkeeper/cinematics/Cinematic.java | 8 +++---- .../game/controller/CreaturesController.java | 4 ++-- .../game/controller/DoorsController.java | 4 ++-- .../game/controller/MapController.java | 10 ++++----- .../game/controller/ObjectsController.java | 4 ++-- .../game/controller/TrapsController.java | 4 ++-- .../controller/room/TempleController.java | 18 +++++++-------- .../game/logic/CreatureFallSystem.java | 6 ++--- .../openkeeper/game/state/MainMenuState.java | 3 +-- src/toniarts/openkeeper/utils/AssetUtils.java | 4 ++-- src/toniarts/openkeeper/utils/WorldUtils.java | 18 +++++++-------- .../openkeeper/view/PlayerCamera.java | 10 ++++----- .../construction/DoubleQuadConstructor.java | 10 ++++----- .../FiveByFiveRotatedConstructor.java | 22 +++++++++---------- .../map/construction/HeroGateConstructor.java | 2 +- .../HeroGateFrontEndConstructor.java | 4 ++-- .../HeroGateThreeByOneConstructor.java | 4 ++-- .../map/construction/QuadConstructor.java | 12 +++++----- .../room/CombatPitConstructor.java | 3 ++- .../construction/room/PrisonConstructor.java | 4 ++-- .../room/StoneBridgeConstructor.java | 10 ++++----- .../view/selection/SelectionHandler.java | 16 +++++++------- 22 files changed, 90 insertions(+), 90 deletions(-) diff --git a/src/toniarts/openkeeper/cinematics/Cinematic.java b/src/toniarts/openkeeper/cinematics/Cinematic.java index 380c653d4..11d255db4 100644 --- a/src/toniarts/openkeeper/cinematics/Cinematic.java +++ b/src/toniarts/openkeeper/cinematics/Cinematic.java @@ -38,7 +38,7 @@ import toniarts.openkeeper.Main; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.WorldUtils; -import toniarts.openkeeper.world.MapLoader; +import toniarts.openkeeper.view.map.MapViewController; /** * Our wrapper on JME cinematic class, produces ready cinematics from camera @@ -83,7 +83,7 @@ public Cinematic(final AssetManager assetManager, Camera cam, Listener audioList public Cinematic(final Main app, String cameraSweepFile, final Vector3f start) { this(app.getAssetManager(), app.getCamera(), app.getListener(), - start.addLocal(0, MapLoader.FLOOR_HEIGHT, 0), + start.addLocal(0, MapViewController.FLOOR_HEIGHT, 0), cameraSweepFile, app.getRootNode(), app.getStateManager()); } @@ -172,7 +172,7 @@ private void initializeCinematic(final Node scene, final Camera cam, final Vecto // The waypoints for (CameraSweepDataEntry entry : cameraSweepData.getEntries()) { - path.addWayPoint(entry.getPosition().mult(MapLoader.TILE_WIDTH).addLocal(startLocation)); + path.addWayPoint(entry.getPosition().mult(MapViewController.TILE_WIDTH).addLocal(startLocation)); } //path.setCurveTension(0.5f); if (IS_DEBUG) { @@ -237,7 +237,7 @@ public static void applyCameraSweepEntry(final Camera cam, final Vector3f startL final CameraSweepDataEntry entry, Listener audioListener) { // Set Position - cam.setLocation(startLocation.add(entry.getPosition().mult(MapLoader.TILE_WIDTH))); + cam.setLocation(startLocation.add(entry.getPosition().mult(MapViewController.TILE_WIDTH))); // Set the rotation cam.setRotation(entry.getRotation()); diff --git a/src/toniarts/openkeeper/game/controller/CreaturesController.java b/src/toniarts/openkeeper/game/controller/CreaturesController.java index 56c9cc2c5..45be16917 100644 --- a/src/toniarts/openkeeper/game/controller/CreaturesController.java +++ b/src/toniarts/openkeeper/game/controller/CreaturesController.java @@ -73,7 +73,7 @@ import toniarts.openkeeper.tools.convert.map.Variable; import toniarts.openkeeper.utils.Utils; import toniarts.openkeeper.utils.WorldUtils; -import toniarts.openkeeper.world.MapLoader; +import toniarts.openkeeper.view.map.MapViewController; /** * This is a controller that controls all the game objects in the world TODO: @@ -324,7 +324,7 @@ private EntityId loadCreature(EntityId entity, Creature creature, String name, S // Position // FIXME: no floor height - entityData.setComponent(entity, new Position(rotation, new Vector3f(x, MapLoader.FLOOR_HEIGHT, y))); + entityData.setComponent(entity, new Position(rotation, new Vector3f(x, MapViewController.FLOOR_HEIGHT, y))); // Mobility entityData.setComponent(entity, new Mobile(creature.getFlags().contains(Creature.CreatureFlag.CAN_FLY), diff --git a/src/toniarts/openkeeper/game/controller/DoorsController.java b/src/toniarts/openkeeper/game/controller/DoorsController.java index 9a49bbe5b..74b2c9e15 100644 --- a/src/toniarts/openkeeper/game/controller/DoorsController.java +++ b/src/toniarts/openkeeper/game/controller/DoorsController.java @@ -41,7 +41,7 @@ import toniarts.openkeeper.tools.convert.map.Thing; import toniarts.openkeeper.tools.convert.map.Variable; import toniarts.openkeeper.utils.WorldUtils; -import toniarts.openkeeper.world.MapLoader; +import toniarts.openkeeper.view.map.MapViewController; /** * This is a controller that controls all the doors in the world TODO: @@ -112,7 +112,7 @@ private EntityId loadDoor(int x, int y, short doorId, short ownerId, Integer tri // Move to the center of the tile Vector3f pos = WorldUtils.pointToVector3f(x, y); - pos.y = MapLoader.FLOOR_HEIGHT; + pos.y = MapViewController.FLOOR_HEIGHT; float rotation = 0; if (canTileSupportDoor(x, y - 1, ownerId) && canTileSupportDoor(x, y + 1, ownerId)) { rotation = -FastMath.HALF_PI; diff --git a/src/toniarts/openkeeper/game/controller/MapController.java b/src/toniarts/openkeeper/game/controller/MapController.java index 594aba95c..91b1943f5 100644 --- a/src/toniarts/openkeeper/game/controller/MapController.java +++ b/src/toniarts/openkeeper/game/controller/MapController.java @@ -499,7 +499,7 @@ public int damageTile(Point point, short playerId, ICreatureController creature) // The tile is dead // if (terrain.getDestroyedEffectId() != 0) { // effectManager.load(worldNode, -// WorldUtils.pointToVector3f(point).addLocal(0, MapLoader.FLOOR_HEIGHT, 0), +// WorldUtils.pointToVector3f(point).addLocal(0, MapViewController.FLOOR_HEIGHT, 0), // terrain.getDestroyedEffectId(), false); // } changeTerrain(tile, terrain.getDestroyedTypeTerrainId()); @@ -554,7 +554,7 @@ public void healTile(Point point, short playerId) { // The tile is upgraded // if (terrain.getMaxHealthEffectId() != 0) { // effectManager.load(worldNode, -// WorldUtils.pointToVector3f(point).addLocal(0, MapLoader.FLOOR_HEIGHT, 0), +// WorldUtils.pointToVector3f(point).addLocal(0, MapViewController.FLOOR_HEIGHT, 0), // terrain.getMaxHealthEffectId(), false); // } if (terrain.getMaxHealthTypeTerrainId() != 0) { @@ -563,7 +563,7 @@ public void healTile(Point point, short playerId) { // terrain = tile.getTerrain(); // if (tile.isAtFullHealth()) { // effectManager.load(worldNode, -// WorldUtils.pointToVector3f(point).addLocal(0, MapLoader.FLOOR_HEIGHT, 0), +// WorldUtils.pointToVector3f(point).addLocal(0, MapViewController.FLOOR_HEIGHT, 0), // terrain.getMaxHealthEffectId(), false); // } } @@ -615,12 +615,12 @@ private void damageRoom(Point point, short playerId) { applyHealing(roomTile, tile.getMaxHealth()); // effectManager.load(worldNode, -// WorldUtils.pointToVector3f(point).addLocal(0, MapLoader.FLOOR_HEIGHT, 0), +// WorldUtils.pointToVector3f(point).addLocal(0, MapViewController.FLOOR_HEIGHT, 0), // tile.getTerrain().getMaxHealthEffectId(), false); // // // FIXME ROOM_CLAIM_ID is realy claim effect? // effectManager.load(worldNode, -// WorldUtils.pointToVector3f(p2).addLocal(0, MapLoader.FLOOR_HEIGHT, 0), +// WorldUtils.pointToVector3f(p2).addLocal(0, MapViewController.FLOOR_HEIGHT, 0), // room.getRoom().getEffects().get(EffectManagerState.ROOM_CLAIM_ID), false); // TODO: Claimed room wall tiles lose the claiming I think? } diff --git a/src/toniarts/openkeeper/game/controller/ObjectsController.java b/src/toniarts/openkeeper/game/controller/ObjectsController.java index 5c9c85991..cbe25417a 100644 --- a/src/toniarts/openkeeper/game/controller/ObjectsController.java +++ b/src/toniarts/openkeeper/game/controller/ObjectsController.java @@ -56,7 +56,7 @@ import toniarts.openkeeper.tools.convert.map.Thing; import toniarts.openkeeper.tools.convert.map.Variable; import toniarts.openkeeper.utils.WorldUtils; -import toniarts.openkeeper.world.MapLoader; +import toniarts.openkeeper.view.map.MapViewController; /** * This is a controller that controls all the game objects in the world TODO: @@ -181,7 +181,7 @@ private void loadObject(EntityId entity, short objectId, short ownerId, Vector3f entityData.setComponent(entity, new Owner(ownerId, ownerId)); // Move to the center of the tile - pos.y = (objectId == OBJECT_HEART_ID || objectId == FiveByFiveRotatedController.OBJECT_BIG_STEPS_ID || objectId == FiveByFiveRotatedController.OBJECT_ARCHES_ID || objectId == TempleController.OBJECT_TEMPLE_HAND_ID ? MapLoader.UNDERFLOOR_HEIGHT : MapLoader.FLOOR_HEIGHT); // FIXME: no + pos.y = (objectId == OBJECT_HEART_ID || objectId == FiveByFiveRotatedController.OBJECT_BIG_STEPS_ID || objectId == FiveByFiveRotatedController.OBJECT_ARCHES_ID || objectId == TempleController.OBJECT_TEMPLE_HAND_ID ? MapViewController.UNDERFLOOR_HEIGHT : MapViewController.FLOOR_HEIGHT); // FIXME: no entityData.setComponent(entity, new Position(rotation, pos)); // Add additional components diff --git a/src/toniarts/openkeeper/game/controller/TrapsController.java b/src/toniarts/openkeeper/game/controller/TrapsController.java index 211e7a6e0..94361c414 100644 --- a/src/toniarts/openkeeper/game/controller/TrapsController.java +++ b/src/toniarts/openkeeper/game/controller/TrapsController.java @@ -37,7 +37,7 @@ import toniarts.openkeeper.tools.convert.map.Trap; import toniarts.openkeeper.tools.convert.map.Variable; import toniarts.openkeeper.utils.WorldUtils; -import toniarts.openkeeper.world.MapLoader; +import toniarts.openkeeper.view.map.MapViewController; /** * This is a controller that controls all the traps in the world TODO: @@ -105,7 +105,7 @@ private EntityId loadTrap(int x, int y, short trapId, short ownerId, boolean blu // Move to the center of the tile Vector3f pos = WorldUtils.pointToVector3f(x, y); - pos.y = MapLoader.FLOOR_HEIGHT; + pos.y = MapViewController.FLOOR_HEIGHT; entityData.setComponent(entity, new Position(0, pos)); Trap trap = kwdFile.getTrapById(trapId); diff --git a/src/toniarts/openkeeper/game/controller/room/TempleController.java b/src/toniarts/openkeeper/game/controller/room/TempleController.java index cfc66d325..05118b8d6 100644 --- a/src/toniarts/openkeeper/game/controller/room/TempleController.java +++ b/src/toniarts/openkeeper/game/controller/room/TempleController.java @@ -27,7 +27,7 @@ import static toniarts.openkeeper.game.controller.room.AbstractRoomController.hasSameTile; import toniarts.openkeeper.tools.convert.map.KwdFile; import toniarts.openkeeper.utils.WorldUtils; -import toniarts.openkeeper.world.MapLoader; +import toniarts.openkeeper.view.map.MapViewController; import toniarts.openkeeper.world.room.WallSection; /** @@ -85,26 +85,26 @@ protected List constructPillars() { // The model is in the center, rotation will not do any good, nudge them over the small sub quads, or corners of the tile if (freeDirections.contains(WallSection.WallDirection.NORTH) && freeDirections.contains(WallSection.WallDirection.EAST)) { Vector3f pos = WorldUtils.pointToVector3f(p.x, p.y); - pos.x = pos.x + MapLoader.TILE_WIDTH / 4; - pos.z = pos.z - MapLoader.TILE_WIDTH / 4; + pos.x = pos.x + MapViewController.TILE_WIDTH / 4; + pos.z = pos.z - MapViewController.TILE_WIDTH / 4; pillars.add(constructPillar(pos)); } if (freeDirections.contains(WallSection.WallDirection.SOUTH) && freeDirections.contains(WallSection.WallDirection.EAST)) { Vector3f pos = WorldUtils.pointToVector3f(p.x, p.y); - pos.x = pos.x + MapLoader.TILE_WIDTH / 4; - pos.z = pos.z + MapLoader.TILE_WIDTH / 4; + pos.x = pos.x + MapViewController.TILE_WIDTH / 4; + pos.z = pos.z + MapViewController.TILE_WIDTH / 4; pillars.add(constructPillar(pos)); } if (freeDirections.contains(WallSection.WallDirection.SOUTH) && freeDirections.contains(WallSection.WallDirection.WEST)) { Vector3f pos = WorldUtils.pointToVector3f(p.x, p.y); - pos.x = pos.x - MapLoader.TILE_WIDTH / 4; - pos.z = pos.z + MapLoader.TILE_WIDTH / 4; + pos.x = pos.x - MapViewController.TILE_WIDTH / 4; + pos.z = pos.z + MapViewController.TILE_WIDTH / 4; pillars.add(constructPillar(pos)); } if (freeDirections.contains(WallSection.WallDirection.NORTH) && freeDirections.contains(WallSection.WallDirection.WEST)) { Vector3f pos = WorldUtils.pointToVector3f(p.x, p.y); - pos.x = pos.x - MapLoader.TILE_WIDTH / 4; - pos.z = pos.z - MapLoader.TILE_WIDTH / 4; + pos.x = pos.x - MapViewController.TILE_WIDTH / 4; + pos.z = pos.z - MapViewController.TILE_WIDTH / 4; pillars.add(constructPillar(pos)); } } diff --git a/src/toniarts/openkeeper/game/logic/CreatureFallSystem.java b/src/toniarts/openkeeper/game/logic/CreatureFallSystem.java index 2f4e7c080..ba5d87eba 100644 --- a/src/toniarts/openkeeper/game/logic/CreatureFallSystem.java +++ b/src/toniarts/openkeeper/game/logic/CreatureFallSystem.java @@ -24,7 +24,7 @@ import toniarts.openkeeper.game.component.CreatureFall; import toniarts.openkeeper.game.component.Position; import toniarts.openkeeper.game.controller.creature.CreatureState; -import toniarts.openkeeper.world.MapLoader; +import toniarts.openkeeper.view.map.MapViewController; /** * Handles creature falling (dropped from hand). In the future maybe all these @@ -54,9 +54,9 @@ public void processTick(float tpf, double gameTime) { for (Entity entity : fallEntities) { Position position = entity.get(Position.class); Position newPosition = new Position(position.rotation, position.position); - newPosition.position.y = Math.max(newPosition.position.y - tpf * GRAVITY, MapLoader.FLOOR_HEIGHT); + newPosition.position.y = Math.max(newPosition.position.y - tpf * GRAVITY, MapViewController.FLOOR_HEIGHT); entity.set(newPosition); - if (newPosition.position.y == MapLoader.FLOOR_HEIGHT) { + if (newPosition.position.y == MapViewController.FLOOR_HEIGHT) { // We'll just remove this and add the AI entityData.removeComponent(entity.getId(), CreatureFall.class); diff --git a/src/toniarts/openkeeper/game/state/MainMenuState.java b/src/toniarts/openkeeper/game/state/MainMenuState.java index c4390830d..a8c15959a 100644 --- a/src/toniarts/openkeeper/game/state/MainMenuState.java +++ b/src/toniarts/openkeeper/game/state/MainMenuState.java @@ -74,7 +74,6 @@ import toniarts.openkeeper.view.PlayerEntityViewState; import toniarts.openkeeper.view.map.MapViewController; import toniarts.openkeeper.view.text.TextParser; -import toniarts.openkeeper.world.MapLoader; import toniarts.openkeeper.world.room.control.FrontEndLevelControl; /** @@ -190,7 +189,7 @@ public void initialize(AppStateManager stateManager, Application app) { private void loadCameraStartLocation() { Player player = kwdFile.getPlayer(Player.KEEPER1_ID); startLocation = WorldUtils.pointToVector3f(player.getStartingCameraX(), player.getStartingCameraY()); - startLocation.addLocal(0, MapLoader.FLOOR_HEIGHT, 0); + startLocation.addLocal(0, MapViewController.FLOOR_HEIGHT, 0); // Set the actual camera location loadCameraStartLocation("EnginePath250"); diff --git a/src/toniarts/openkeeper/utils/AssetUtils.java b/src/toniarts/openkeeper/utils/AssetUtils.java index a35eac273..107efaaa9 100644 --- a/src/toniarts/openkeeper/utils/AssetUtils.java +++ b/src/toniarts/openkeeper/utils/AssetUtils.java @@ -63,7 +63,7 @@ import toniarts.openkeeper.tools.convert.map.KwdFile; import toniarts.openkeeper.tools.convert.map.Room; import toniarts.openkeeper.tools.convert.map.Terrain; -import toniarts.openkeeper.world.MapLoader; +import toniarts.openkeeper.view.map.MapViewController; /** * Collection of asset related common functions @@ -647,7 +647,7 @@ public static void translateToTile(final Spatial spatial, final Point tile) { } public static void scale(final Spatial spatial) { - spatial.scale(MapLoader.TILE_WIDTH, MapLoader.TILE_HEIGHT, MapLoader.TILE_WIDTH); + spatial.scale(MapViewController.TILE_WIDTH, MapViewController.TILE_HEIGHT, MapViewController.TILE_WIDTH); } /** diff --git a/src/toniarts/openkeeper/utils/WorldUtils.java b/src/toniarts/openkeeper/utils/WorldUtils.java index ea674a7c1..1c43557d4 100644 --- a/src/toniarts/openkeeper/utils/WorldUtils.java +++ b/src/toniarts/openkeeper/utils/WorldUtils.java @@ -25,7 +25,7 @@ import toniarts.openkeeper.game.data.ActionPoint; import toniarts.openkeeper.game.map.IMapDataInformation; import toniarts.openkeeper.game.map.IMapTileInformation; -import toniarts.openkeeper.world.MapLoader; +import toniarts.openkeeper.view.map.MapViewController; /** * Contains transforms from tile indexes and world coordinates @@ -46,7 +46,7 @@ private WorldUtils() { * @return position on 3D world with y = 0 */ public static Vector3f pointToVector3f(final int x, final int y) { - return new Vector3f(x * MapLoader.TILE_WIDTH, 0, y * MapLoader.TILE_WIDTH); + return new Vector3f(x * MapViewController.TILE_WIDTH, 0, y * MapViewController.TILE_WIDTH); } /** @@ -58,9 +58,9 @@ public static Vector3f pointToVector3f(final int x, final int y) { public static Vector3f ActionPointToVector3f(final ActionPoint ap) { return new Vector3f( - (ap.getStart().x + ap.getEnd().x) / 2.0f * MapLoader.TILE_WIDTH, + (ap.getStart().x + ap.getEnd().x) / 2.0f * MapViewController.TILE_WIDTH, 0, - (ap.getStart().y + ap.getEnd().y) / 2.0f * MapLoader.TILE_WIDTH); + (ap.getStart().y + ap.getEnd().y) / 2.0f * MapViewController.TILE_WIDTH); } /** @@ -72,8 +72,8 @@ public static Vector3f ActionPointToVector3f(final ActionPoint ap) { public static Vector2f ActionPointToVector2f(final ActionPoint ap) { return new Vector2f( - (ap.getStart().x + ap.getEnd().x) / 2.0f * MapLoader.TILE_WIDTH, - (ap.getStart().y + ap.getEnd().y) / 2.0f * MapLoader.TILE_WIDTH); + (ap.getStart().x + ap.getEnd().x) / 2.0f * MapViewController.TILE_WIDTH, + (ap.getStart().y + ap.getEnd().y) / 2.0f * MapViewController.TILE_WIDTH); } /** @@ -86,7 +86,7 @@ public static Vector3f pointToVector3f(final Point p) { } public static Vector2f pointToVector2f(final int x, final int y) { - return new Vector2f(x * MapLoader.TILE_WIDTH, y * MapLoader.TILE_WIDTH); + return new Vector2f(x * MapViewController.TILE_WIDTH, y * MapViewController.TILE_WIDTH); } public static Vector2f pointToVector2f(final Point p) { @@ -94,7 +94,7 @@ public static Vector2f pointToVector2f(final Point p) { } public static Vector2 pointToVector2(final int x, final int y) { - return new Vector2(x * MapLoader.TILE_WIDTH, y * MapLoader.TILE_WIDTH); + return new Vector2(x * MapViewController.TILE_WIDTH, y * MapViewController.TILE_WIDTH); } public static Vector2 pointToVector2(final Point p) { @@ -114,7 +114,7 @@ public static Point vectorToPoint(final Vector3f v) { } public static Point vectorToPoint(final float x, final float y) { - return new Point(Math.round(x / MapLoader.TILE_WIDTH), Math.round(y / MapLoader.TILE_WIDTH)); + return new Point(Math.round(x / MapViewController.TILE_WIDTH), Math.round(y / MapViewController.TILE_WIDTH)); } public static Vector2 vector3fToVector2(Vector3f v) { diff --git a/src/toniarts/openkeeper/view/PlayerCamera.java b/src/toniarts/openkeeper/view/PlayerCamera.java index 42a59ff94..8fa15fbfe 100644 --- a/src/toniarts/openkeeper/view/PlayerCamera.java +++ b/src/toniarts/openkeeper/view/PlayerCamera.java @@ -23,7 +23,7 @@ import com.jme3.math.Vector3f; import com.jme3.renderer.Camera; import toniarts.openkeeper.tools.convert.map.Thing; -import toniarts.openkeeper.world.MapLoader; +import toniarts.openkeeper.view.map.MapViewController; /** * Player camera movement is modeled here @@ -96,14 +96,14 @@ protected void move(float dx, float dz) { look.addLocal(vel); // check limit - if (look.getX() > limit.x * MapLoader.TILE_WIDTH) { - look.setX(limit.x * MapLoader.TILE_WIDTH); + if (look.getX() > limit.x * MapViewController.TILE_WIDTH) { + look.setX(limit.x * MapViewController.TILE_WIDTH); } else if (look.getX() < 0) { look.setX(0); } - if (look.getZ() > limit.y * MapLoader.TILE_WIDTH) { - look.setZ(limit.y * MapLoader.TILE_WIDTH); + if (look.getZ() > limit.y * MapViewController.TILE_WIDTH) { + look.setZ(limit.y * MapViewController.TILE_WIDTH); } else if (look.getZ() < 0) { look.setZ(0); } diff --git a/src/toniarts/openkeeper/view/map/construction/DoubleQuadConstructor.java b/src/toniarts/openkeeper/view/map/construction/DoubleQuadConstructor.java index 36e21128c..43eb379b1 100644 --- a/src/toniarts/openkeeper/view/map/construction/DoubleQuadConstructor.java +++ b/src/toniarts/openkeeper/view/map/construction/DoubleQuadConstructor.java @@ -25,7 +25,7 @@ import java.awt.Point; import toniarts.openkeeper.common.RoomInstance; import toniarts.openkeeper.utils.AssetUtils; -import toniarts.openkeeper.world.MapLoader; +import toniarts.openkeeper.view.map.MapViewController; /** * @@ -158,7 +158,7 @@ public static Node constructQuad(AssetManager assetManager, String modelName, bo piece = 0; yAngle = FastMath.HALF_PI; } - movement = new Vector3f(-MapLoader.TILE_WIDTH / 4, 0, -MapLoader.TILE_WIDTH / 4); + movement = new Vector3f(-MapViewController.TILE_WIDTH / 4, 0, -MapViewController.TILE_WIDTH / 4); } else if (i == 1 && k == 0) { // North east corner if (inside) { piece = 13; @@ -189,7 +189,7 @@ public static Node constructQuad(AssetManager assetManager, String modelName, bo piece = 0; yAngle = -FastMath.HALF_PI; } - movement = new Vector3f(MapLoader.TILE_WIDTH / 4, 0, -MapLoader.TILE_WIDTH / 4); + movement = new Vector3f(MapViewController.TILE_WIDTH / 4, 0, -MapViewController.TILE_WIDTH / 4); } else if (i == 0 && k == 1) { // South west corner if (inside) { piece = 13; @@ -223,7 +223,7 @@ public static Node constructQuad(AssetManager assetManager, String modelName, bo piece = 0; yAngle = FastMath.PI; } - movement = new Vector3f(-MapLoader.TILE_WIDTH / 4, 0, MapLoader.TILE_WIDTH / 4); + movement = new Vector3f(-MapViewController.TILE_WIDTH / 4, 0, MapViewController.TILE_WIDTH / 4); } else { // South east corner if (i == 1 && k == 1) if (inside) { piece = 13; @@ -258,7 +258,7 @@ public static Node constructQuad(AssetManager assetManager, String modelName, bo piece = 0; yAngle = FastMath.PI; } - movement = new Vector3f(MapLoader.TILE_WIDTH / 4, 0, MapLoader.TILE_WIDTH / 4); + movement = new Vector3f(MapViewController.TILE_WIDTH / 4, 0, MapViewController.TILE_WIDTH / 4); } // Load the piece Spatial part = AssetUtils.loadModel(assetManager, modelName + piece, null); diff --git a/src/toniarts/openkeeper/view/map/construction/FiveByFiveRotatedConstructor.java b/src/toniarts/openkeeper/view/map/construction/FiveByFiveRotatedConstructor.java index 1fb19b619..f2b7c2eb3 100644 --- a/src/toniarts/openkeeper/view/map/construction/FiveByFiveRotatedConstructor.java +++ b/src/toniarts/openkeeper/view/map/construction/FiveByFiveRotatedConstructor.java @@ -129,24 +129,24 @@ else if (x == 1) { // Left // } else { // // The arches // tile = objectLoader.load(assetManager, 0, 0, OBJECT_ARCHES_ID, getRoomInstance().getOwnerId()); -// tile.move(0, -MapLoader.FLOOR_HEIGHT, 0); +// tile.move(0, -MapViewController.FLOOR_HEIGHT, 0); // moveSpatial(tile, start, p); // root.attachChild(tile); // // // The steps between the arches // tile = objectLoader.load(assetManager, 0, 0, OBJECT_BIG_STEPS_ID, getRoomInstance().getOwnerId()); -// tile.move(0, -MapLoader.FLOOR_HEIGHT, 0); +// tile.move(0, -MapViewController.FLOOR_HEIGHT, 0); // moveSpatial(tile, start, p); // root.attachChild(tile); // // tile = objectLoader.load(assetManager, 0, 0, OBJECT_BIG_STEPS_ID, getRoomInstance().getOwnerId()); -// tile.move(0, -MapLoader.FLOOR_HEIGHT, 0); +// tile.move(0, -MapViewController.FLOOR_HEIGHT, 0); // moveSpatial(tile, start, p); // tile.rotate(0, -FastMath.TWO_PI / 3, 0); // root.attachChild(tile); // // tile = objectLoader.load(assetManager, 0, 0, OBJECT_BIG_STEPS_ID, getRoomInstance().getOwnerId()); -// tile.move(0, -MapLoader.FLOOR_HEIGHT, 0); +// tile.move(0, -MapViewController.FLOOR_HEIGHT, 0); // moveSpatial(tile, start, p); // tile.rotate(0, FastMath.TWO_PI / 3, 0); // root.attachChild(tile); @@ -154,7 +154,7 @@ else if (x == 1) { // Left // // The alfa & omega! The heart, TODO: use object loader once it is in decent condition, this after all is a real object // if (centreDecay == -1) { // tile = objectLoader.load(assetManager, 0, 0, OBJECT_HEART_ID, getRoomInstance().getOwnerId()); -// tile.move(0, -MapLoader.FLOOR_HEIGHT, 0); +// tile.move(0, -MapViewController.FLOOR_HEIGHT, 0); // } else { // tile = loadModel("DungeonCentre_DECAY" + centreDecay); // } @@ -176,11 +176,11 @@ else if (x == 1) { // Left // } // }); // -// root.attachChild(tile.move(0, MapLoader.TILE_HEIGHT / 4, 0)); +// root.attachChild(tile.move(0, MapViewController.TILE_HEIGHT / 4, 0)); // // for (Integer id : roomInstance.getRoom().getEffects()) { // if (id > 0) { -// effectManager.load(root, new Vector3f(p.x - start.x, MapLoader.UNDERFLOOR_HEIGHT, p.y - start.y), id, true); +// effectManager.load(root, new Vector3f(p.x - start.x, MapViewController.UNDERFLOOR_HEIGHT, p.y - start.y), id, true); // } // } // @@ -188,18 +188,18 @@ else if (x == 1) { // Left // created = true; // // tile = objectLoader.load(assetManager, 0, 0, OBJECT_PLUG_ID, getRoomInstance().getOwnerId()); -// tile.move(0, -MapLoader.FLOOR_HEIGHT, 0); +// tile.move(0, -MapViewController.FLOOR_HEIGHT, 0); // tile.setName("plug"); // tile.setBatchHint(Spatial.BatchHint.Never); // tile.rotate(0, FastMath.QUARTER_PI, 0); // moveSpatial(tile, start, p); -// root.attachChild(tile.move(0, MapLoader.FLOOR_HEIGHT, 0)); +// root.attachChild(tile.move(0, MapViewController.FLOOR_HEIGHT, 0)); // // Node plug = getPlug(); // plug.setName("plug_decay"); // plug.setCullHint(Spatial.CullHint.Always); // plug.setBatchHint(Spatial.BatchHint.Never); -// root.attachChild(plug.move(x, MapLoader.FLOOR_HEIGHT, y)); +// root.attachChild(plug.move(x, MapViewController.FLOOR_HEIGHT, y)); // // root.addControl(new PlugControl()); // } @@ -209,7 +209,7 @@ else if (x == 1) { // Left // Set the transform and scale to our scale and 0 the transform AssetUtils.translateToTile(root, start); - //root.scale(MapLoader.TILE_WIDTH, MapLoader.TILE_HEIGHT, MapLoader.TILE_WIDTH); + //root.scale(MapViewController.TILE_WIDTH, MapViewController.TILE_HEIGHT, MapViewController.TILE_WIDTH); return root; } diff --git a/src/toniarts/openkeeper/view/map/construction/HeroGateConstructor.java b/src/toniarts/openkeeper/view/map/construction/HeroGateConstructor.java index 12583e417..cd825500b 100644 --- a/src/toniarts/openkeeper/view/map/construction/HeroGateConstructor.java +++ b/src/toniarts/openkeeper/view/map/construction/HeroGateConstructor.java @@ -96,7 +96,7 @@ protected BatchNode constructWall() { part.rotate(0, yAngle, 0); } moveSpatial(part, p); - //part.move(-MapLoader.TILE_WIDTH / 2, 0, -MapLoader.TILE_WIDTH / 2); + //part.move(-MapViewController.TILE_WIDTH / 2, 0, -MapViewController.TILE_WIDTH / 2); root.attachChild(part); } } diff --git a/src/toniarts/openkeeper/view/map/construction/HeroGateFrontEndConstructor.java b/src/toniarts/openkeeper/view/map/construction/HeroGateFrontEndConstructor.java index 35a5ce49b..234550b10 100644 --- a/src/toniarts/openkeeper/view/map/construction/HeroGateFrontEndConstructor.java +++ b/src/toniarts/openkeeper/view/map/construction/HeroGateFrontEndConstructor.java @@ -29,8 +29,8 @@ import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.FullMoon; +import toniarts.openkeeper.view.map.MapViewController; import toniarts.openkeeper.view.map.WallSection; -import toniarts.openkeeper.world.MapLoader; import toniarts.openkeeper.world.room.control.FrontEndLevelControl; /** @@ -180,7 +180,7 @@ private Spatial loadObject(String model, AssetManager assetManager, Point start, // Reset moveSpatial(object, start, p); - object.move(0, MapLoader.FLOOR_HEIGHT, 0); + object.move(0, MapViewController.FLOOR_HEIGHT, 0); return object; } diff --git a/src/toniarts/openkeeper/view/map/construction/HeroGateThreeByOneConstructor.java b/src/toniarts/openkeeper/view/map/construction/HeroGateThreeByOneConstructor.java index 734898e1c..0279096b4 100644 --- a/src/toniarts/openkeeper/view/map/construction/HeroGateThreeByOneConstructor.java +++ b/src/toniarts/openkeeper/view/map/construction/HeroGateThreeByOneConstructor.java @@ -67,7 +67,7 @@ protected BatchNode constructFloor() { break; } } - //root.move(-MapLoader.TILE_WIDTH / 2, 0, -MapLoader.TILE_WIDTH / 2); + //root.move(-MapViewController.TILE_WIDTH / 2, 0, -MapViewController.TILE_WIDTH / 2); return root; } @@ -108,7 +108,7 @@ protected BatchNode constructWall() { tile.rotate(0, yAngle, 0); } moveSpatial(tile, p); - //tile.move(-MapLoader.TILE_WIDTH / 2, 0, -MapLoader.TILE_WIDTH / 2); + //tile.move(-MapViewController.TILE_WIDTH / 2, 0, -MapViewController.TILE_WIDTH / 2); root.attachChild(tile); } } diff --git a/src/toniarts/openkeeper/view/map/construction/QuadConstructor.java b/src/toniarts/openkeeper/view/map/construction/QuadConstructor.java index 57536ced0..9d8e86bf4 100644 --- a/src/toniarts/openkeeper/view/map/construction/QuadConstructor.java +++ b/src/toniarts/openkeeper/view/map/construction/QuadConstructor.java @@ -23,10 +23,10 @@ import com.jme3.scene.Node; import com.jme3.scene.Spatial; import java.awt.Point; -import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.common.RoomInstance; import toniarts.openkeeper.tools.convert.map.ArtResource; -import toniarts.openkeeper.world.MapLoader; +import toniarts.openkeeper.utils.AssetUtils; +import toniarts.openkeeper.view.map.MapViewController; /** * FIXME: QuadConstructor @@ -90,7 +90,7 @@ public static Node constructQuad(AssetManager assetManager, String modelName, Ar piece = 1; yAngle = FastMath.HALF_PI; } - movement = new Vector3f(-MapLoader.TILE_WIDTH / 4, 0, -MapLoader.TILE_WIDTH / 4); + movement = new Vector3f(-MapViewController.TILE_WIDTH / 4, 0, -MapViewController.TILE_WIDTH / 4); } else if (i == 1 && k == 0) { // North east corner if (N && E && NE) { piece = 3; @@ -106,7 +106,7 @@ public static Node constructQuad(AssetManager assetManager, String modelName, Ar } else { piece = 1; } - movement = new Vector3f(MapLoader.TILE_WIDTH / 4, 0, -MapLoader.TILE_WIDTH / 4); + movement = new Vector3f(MapViewController.TILE_WIDTH / 4, 0, -MapViewController.TILE_WIDTH / 4); } else if (i == 0 && k == 1) { // South west corner if (S && W && SW) { piece = 3; @@ -122,7 +122,7 @@ public static Node constructQuad(AssetManager assetManager, String modelName, Ar piece = 1; yAngle = FastMath.PI; } - movement = new Vector3f(-MapLoader.TILE_WIDTH / 4, 0, MapLoader.TILE_WIDTH / 4); + movement = new Vector3f(-MapViewController.TILE_WIDTH / 4, 0, MapViewController.TILE_WIDTH / 4); } else { // South east corner if (i == 1 && k == 1) if (S && E && SE) { piece = 3; @@ -140,7 +140,7 @@ public static Node constructQuad(AssetManager assetManager, String modelName, Ar piece = 1; yAngle = -FastMath.HALF_PI; } - movement = new Vector3f(MapLoader.TILE_WIDTH / 4, 0, MapLoader.TILE_WIDTH / 4); + movement = new Vector3f(MapViewController.TILE_WIDTH / 4, 0, MapViewController.TILE_WIDTH / 4); } // Load the piece Spatial part = AssetUtils.loadModel(assetManager, modelName + (base + piece), artResource); diff --git a/src/toniarts/openkeeper/view/map/construction/room/CombatPitConstructor.java b/src/toniarts/openkeeper/view/map/construction/room/CombatPitConstructor.java index ab2415623..4becfe3bc 100644 --- a/src/toniarts/openkeeper/view/map/construction/room/CombatPitConstructor.java +++ b/src/toniarts/openkeeper/view/map/construction/room/CombatPitConstructor.java @@ -24,7 +24,8 @@ import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.view.map.construction.DoubleQuadConstructor; -import static toniarts.openkeeper.world.MapLoader.TILE_WIDTH; + +import static toniarts.openkeeper.view.map.MapViewController.TILE_WIDTH; /** * Manages combat pit door placement, currently it is decoupled from the actual diff --git a/src/toniarts/openkeeper/view/map/construction/room/PrisonConstructor.java b/src/toniarts/openkeeper/view/map/construction/room/PrisonConstructor.java index 744d623d5..2744a755d 100644 --- a/src/toniarts/openkeeper/view/map/construction/room/PrisonConstructor.java +++ b/src/toniarts/openkeeper/view/map/construction/room/PrisonConstructor.java @@ -23,8 +23,8 @@ import java.awt.Point; import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.utils.AssetUtils; +import toniarts.openkeeper.view.map.MapViewController; import toniarts.openkeeper.view.map.construction.DoubleQuadConstructor; -import toniarts.openkeeper.world.MapLoader; /** * Manages prison door placement, currently it is decoupled from the actual @@ -77,7 +77,7 @@ protected BatchNode constructFloor() { // This is true, the door is always like this, it might not look correct visually (the opposite quads of the door...) but it is Spatial part = AssetUtils.loadModel(assetManager, modelName + "14", artResource); AssetUtils.translateToTile(part, new Point(x, y)); - part.move(-MapLoader.TILE_WIDTH / 4, 0, -MapLoader.TILE_WIDTH / 4); + part.move(-MapViewController.TILE_WIDTH / 4, 0, -MapViewController.TILE_WIDTH / 4); root.attachChild(part); diff --git a/src/toniarts/openkeeper/view/map/construction/room/StoneBridgeConstructor.java b/src/toniarts/openkeeper/view/map/construction/room/StoneBridgeConstructor.java index ba3a856d7..761d09b54 100644 --- a/src/toniarts/openkeeper/view/map/construction/room/StoneBridgeConstructor.java +++ b/src/toniarts/openkeeper/view/map/construction/room/StoneBridgeConstructor.java @@ -25,8 +25,8 @@ import java.awt.Point; import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.utils.AssetUtils; +import toniarts.openkeeper.view.map.MapViewController; import toniarts.openkeeper.view.map.construction.QuadConstructor; -import toniarts.openkeeper.world.MapLoader; /** * @@ -85,7 +85,7 @@ protected BatchNode constructFloor() { piece = 1; yAngle = FastMath.HALF_PI; } - movement = new Vector3f(-MapLoader.TILE_WIDTH / 4, 0, -MapLoader.TILE_WIDTH / 4); + movement = new Vector3f(-MapViewController.TILE_WIDTH / 4, 0, -MapViewController.TILE_WIDTH / 4); } else if (i == 1 && k == 0) { // North east corner if (N && E && NE) { piece = 3; @@ -101,7 +101,7 @@ protected BatchNode constructFloor() { } else { piece = 1; } - movement = new Vector3f(MapLoader.TILE_WIDTH / 4, 0, -MapLoader.TILE_WIDTH / 4); + movement = new Vector3f(MapViewController.TILE_WIDTH / 4, 0, -MapViewController.TILE_WIDTH / 4); } else if (i == 0 && k == 1) { // South west corner if (S && W && SW) { piece = 3; @@ -117,7 +117,7 @@ protected BatchNode constructFloor() { piece = 1; yAngle = FastMath.PI; } - movement = new Vector3f(-MapLoader.TILE_WIDTH / 4, 0, MapLoader.TILE_WIDTH / 4); + movement = new Vector3f(-MapViewController.TILE_WIDTH / 4, 0, MapViewController.TILE_WIDTH / 4); } else { // South east corner if (i == 1 && k == 1) if (S && E && SE) { piece = 3; @@ -135,7 +135,7 @@ protected BatchNode constructFloor() { piece = 1; yAngle = -FastMath.HALF_PI; } - movement = new Vector3f(MapLoader.TILE_WIDTH / 4, 0, MapLoader.TILE_WIDTH / 4); + movement = new Vector3f(MapViewController.TILE_WIDTH / 4, 0, MapViewController.TILE_WIDTH / 4); } // Load the piece diff --git a/src/toniarts/openkeeper/view/selection/SelectionHandler.java b/src/toniarts/openkeeper/view/selection/SelectionHandler.java index 4c580add4..2ba1ef455 100644 --- a/src/toniarts/openkeeper/view/selection/SelectionHandler.java +++ b/src/toniarts/openkeeper/view/selection/SelectionHandler.java @@ -13,7 +13,7 @@ import java.awt.Point; import toniarts.openkeeper.Main; import toniarts.openkeeper.utils.WorldUtils; -import toniarts.openkeeper.world.MapLoader; +import toniarts.openkeeper.view.map.MapViewController; /** * Class that contains the SelectionLogic of the Selection-Helper-Box in the @@ -55,7 +55,7 @@ public ColorRGBA getColor() { public SelectionHandler(Main app) { this.app = app; - this.selectionArea = new SelectionArea(MapLoader.TILE_WIDTH); + this.selectionArea = new SelectionArea(MapViewController.TILE_WIDTH); setupVisualsForSelection(); } @@ -73,7 +73,7 @@ public boolean update(Vector2f mousePosition) { Vector3f tmp = cam.getWorldCoordinates(this.mousePosition, 0f).clone(); Vector3f dir = cam.getWorldCoordinates(this.mousePosition, 1f).subtractLocal(tmp).normalizeLocal(); - dir.multLocal((MapLoader.TOP_HEIGHT - pos.getY()) / dir.getY()).addLocal(pos); + dir.multLocal((MapViewController.TOP_HEIGHT - pos.getY()) / dir.getY()).addLocal(pos); pointedPosition.set(dir.getX(), dir.getZ()); pointedTileIndex = WorldUtils.vectorToPoint(pointedPosition); @@ -163,11 +163,11 @@ public void updateSelectionBox() { float delta = 0.01f; Vector2f position = selectionArea.getCenter(); - wireBoxGeo.setLocalTranslation(position.x, MapLoader.FLOOR_HEIGHT, position.y); + wireBoxGeo.setLocalTranslation(position.x, MapViewController.FLOOR_HEIGHT, position.y); - wireBox.updatePositions(MapLoader.TILE_WIDTH / 2 * dx + delta, - MapLoader.FLOOR_HEIGHT + delta, - MapLoader.TILE_WIDTH / 2 * dy + delta); + wireBox.updatePositions(MapViewController.TILE_WIDTH / 2 * dx + delta, + MapViewController.FLOOR_HEIGHT + delta, + MapViewController.TILE_WIDTH / 2 * dy + delta); // Selection color indicator ColorIndicator newSelectionColor = getColorIndicator(); @@ -188,7 +188,7 @@ private void setupVisualsForSelection() { matWireBox.setColor("Color", selectionColor.getColor()); matWireBox.getAdditionalRenderState().setLineWidth(6); - this.wireBox = new WireBox(MapLoader.TILE_WIDTH, MapLoader.TILE_WIDTH, MapLoader.TILE_WIDTH); + this.wireBox = new WireBox(MapViewController.TILE_WIDTH, MapViewController.TILE_WIDTH, MapViewController.TILE_WIDTH); this.wireBox.setDynamic(); this.wireBoxGeo = new Geometry("wireBox", wireBox); From 1a6bbe6fdfac649cba509577d815575d7d270a2c Mon Sep 17 00:00:00 2001 From: Andreas Hollandt Date: Mon, 20 Nov 2023 13:35:44 +0100 Subject: [PATCH 14/47] replace old ILoader with the one in view --- .../tools/modelviewer/CreaturesLoader.java | 2 +- .../tools/modelviewer/DoorsLoader.java | 2 +- .../tools/modelviewer/ObjectsLoader.java | 2 +- .../tools/modelviewer/RoomsLoader.java | 2 +- .../tools/modelviewer/ShotsLoader.java | 2 +- .../tools/modelviewer/TerrainsLoader.java | 2 +- .../tools/modelviewer/TrapsLoader.java | 2 +- .../view/map/MapViewController.java | 2 +- src/toniarts/openkeeper/world/ILoader.java | 31 ------------------- src/toniarts/openkeeper/world/MapLoader.java | 1 + .../world/creature/CreatureLoader.java | 2 +- .../openkeeper/world/door/DoorLoader.java | 2 +- .../openkeeper/world/object/ObjectLoader.java | 2 +- .../openkeeper/world/trap/TrapLoader.java | 2 +- 14 files changed, 13 insertions(+), 43 deletions(-) delete mode 100644 src/toniarts/openkeeper/world/ILoader.java diff --git a/src/toniarts/openkeeper/tools/modelviewer/CreaturesLoader.java b/src/toniarts/openkeeper/tools/modelviewer/CreaturesLoader.java index 006e38e2a..fd8c12d48 100644 --- a/src/toniarts/openkeeper/tools/modelviewer/CreaturesLoader.java +++ b/src/toniarts/openkeeper/tools/modelviewer/CreaturesLoader.java @@ -28,7 +28,7 @@ import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.tools.convert.map.Creature; import toniarts.openkeeper.tools.convert.map.Creature.AnimationType; -import toniarts.openkeeper.world.ILoader; +import toniarts.openkeeper.view.loader.ILoader; import toniarts.openkeeper.world.effect.EffectManagerState; /** diff --git a/src/toniarts/openkeeper/tools/modelviewer/DoorsLoader.java b/src/toniarts/openkeeper/tools/modelviewer/DoorsLoader.java index e62a14f52..3d32b21bc 100644 --- a/src/toniarts/openkeeper/tools/modelviewer/DoorsLoader.java +++ b/src/toniarts/openkeeper/tools/modelviewer/DoorsLoader.java @@ -24,7 +24,7 @@ import java.util.List; import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.tools.convert.map.Door; -import toniarts.openkeeper.world.ILoader; +import toniarts.openkeeper.view.loader.ILoader; import toniarts.openkeeper.world.effect.EffectManagerState; /** diff --git a/src/toniarts/openkeeper/tools/modelviewer/ObjectsLoader.java b/src/toniarts/openkeeper/tools/modelviewer/ObjectsLoader.java index 18082283a..2f0307e28 100644 --- a/src/toniarts/openkeeper/tools/modelviewer/ObjectsLoader.java +++ b/src/toniarts/openkeeper/tools/modelviewer/ObjectsLoader.java @@ -24,7 +24,7 @@ import java.util.List; import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.tools.convert.map.GameObject; -import toniarts.openkeeper.world.ILoader; +import toniarts.openkeeper.view.loader.ILoader; import toniarts.openkeeper.world.effect.EffectManagerState; /** diff --git a/src/toniarts/openkeeper/tools/modelviewer/RoomsLoader.java b/src/toniarts/openkeeper/tools/modelviewer/RoomsLoader.java index 8be051ec8..02e658027 100644 --- a/src/toniarts/openkeeper/tools/modelviewer/RoomsLoader.java +++ b/src/toniarts/openkeeper/tools/modelviewer/RoomsLoader.java @@ -24,7 +24,7 @@ import java.util.List; import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.tools.convert.map.Room; -import toniarts.openkeeper.world.ILoader; +import toniarts.openkeeper.view.loader.ILoader; import toniarts.openkeeper.world.effect.EffectManagerState; /** diff --git a/src/toniarts/openkeeper/tools/modelviewer/ShotsLoader.java b/src/toniarts/openkeeper/tools/modelviewer/ShotsLoader.java index 774d67d8f..3b1619ab3 100644 --- a/src/toniarts/openkeeper/tools/modelviewer/ShotsLoader.java +++ b/src/toniarts/openkeeper/tools/modelviewer/ShotsLoader.java @@ -24,7 +24,7 @@ import java.util.List; import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.tools.convert.map.Shot; -import toniarts.openkeeper.world.ILoader; +import toniarts.openkeeper.view.loader.ILoader; import toniarts.openkeeper.world.effect.EffectManagerState; /** diff --git a/src/toniarts/openkeeper/tools/modelviewer/TerrainsLoader.java b/src/toniarts/openkeeper/tools/modelviewer/TerrainsLoader.java index 067a4adc0..86cfcd9d6 100644 --- a/src/toniarts/openkeeper/tools/modelviewer/TerrainsLoader.java +++ b/src/toniarts/openkeeper/tools/modelviewer/TerrainsLoader.java @@ -24,7 +24,7 @@ import java.util.List; import toniarts.openkeeper.tools.convert.map.Terrain; import toniarts.openkeeper.utils.AssetUtils; -import toniarts.openkeeper.world.ILoader; +import toniarts.openkeeper.view.loader.ILoader; import toniarts.openkeeper.world.effect.EffectManagerState; /** diff --git a/src/toniarts/openkeeper/tools/modelviewer/TrapsLoader.java b/src/toniarts/openkeeper/tools/modelviewer/TrapsLoader.java index 18efad3d7..cb01b707c 100644 --- a/src/toniarts/openkeeper/tools/modelviewer/TrapsLoader.java +++ b/src/toniarts/openkeeper/tools/modelviewer/TrapsLoader.java @@ -24,7 +24,7 @@ import java.util.List; import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.tools.convert.map.Trap; -import toniarts.openkeeper.world.ILoader; +import toniarts.openkeeper.view.loader.ILoader; import toniarts.openkeeper.world.effect.EffectManagerState; /** diff --git a/src/toniarts/openkeeper/view/map/MapViewController.java b/src/toniarts/openkeeper/view/map/MapViewController.java index e4352157b..0ce00876b 100644 --- a/src/toniarts/openkeeper/view/map/MapViewController.java +++ b/src/toniarts/openkeeper/view/map/MapViewController.java @@ -56,11 +56,11 @@ import toniarts.openkeeper.tools.convert.map.Thing; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.WorldUtils; +import toniarts.openkeeper.view.loader.ILoader; import toniarts.openkeeper.view.map.WallSection.WallDirection; import toniarts.openkeeper.view.map.construction.RoomConstructor; import toniarts.openkeeper.view.map.construction.SingleQuadConstructor; import toniarts.openkeeper.view.map.construction.WaterConstructor; -import toniarts.openkeeper.world.ILoader; import toniarts.openkeeper.world.effect.TorchControl; import toniarts.openkeeper.world.room.GenericRoom; diff --git a/src/toniarts/openkeeper/world/ILoader.java b/src/toniarts/openkeeper/world/ILoader.java deleted file mode 100644 index b6637a69d..000000000 --- a/src/toniarts/openkeeper/world/ILoader.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (C) 2014-2015 OpenKeeper - * - * OpenKeeper is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenKeeper is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with OpenKeeper. If not, see . - */ -package toniarts.openkeeper.world; - -import com.jme3.asset.AssetManager; -import com.jme3.scene.Spatial; - -/** - * A simple interface for loading DK2 map classes to JME spatials - * - * @author Toni Helenius - */ -@Deprecated -public interface ILoader { - - public Spatial load(AssetManager assetManager, T object); -} diff --git a/src/toniarts/openkeeper/world/MapLoader.java b/src/toniarts/openkeeper/world/MapLoader.java index 184f83aed..48ba8dcb9 100644 --- a/src/toniarts/openkeeper/world/MapLoader.java +++ b/src/toniarts/openkeeper/world/MapLoader.java @@ -50,6 +50,7 @@ import toniarts.openkeeper.tools.convert.map.Thing; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.WorldUtils; +import toniarts.openkeeper.view.loader.ILoader; import toniarts.openkeeper.world.effect.EffectManagerState; import toniarts.openkeeper.world.effect.TorchControl; import toniarts.openkeeper.world.object.ObjectLoader; diff --git a/src/toniarts/openkeeper/world/creature/CreatureLoader.java b/src/toniarts/openkeeper/world/creature/CreatureLoader.java index 395253b88..d56e2ab21 100644 --- a/src/toniarts/openkeeper/world/creature/CreatureLoader.java +++ b/src/toniarts/openkeeper/world/creature/CreatureLoader.java @@ -26,7 +26,7 @@ import toniarts.openkeeper.tools.convert.map.KwdFile; import toniarts.openkeeper.tools.convert.map.Thing; import toniarts.openkeeper.utils.WorldUtils; -import toniarts.openkeeper.world.ILoader; +import toniarts.openkeeper.view.loader.ILoader; import toniarts.openkeeper.world.MapLoader; import toniarts.openkeeper.world.WorldState; import toniarts.openkeeper.world.control.UnitFlowerControl; diff --git a/src/toniarts/openkeeper/world/door/DoorLoader.java b/src/toniarts/openkeeper/world/door/DoorLoader.java index 3f8ae4abe..be8e830bc 100644 --- a/src/toniarts/openkeeper/world/door/DoorLoader.java +++ b/src/toniarts/openkeeper/world/door/DoorLoader.java @@ -27,7 +27,7 @@ import toniarts.openkeeper.tools.convert.map.Thing; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.WorldUtils; -import toniarts.openkeeper.world.ILoader; +import toniarts.openkeeper.view.loader.ILoader; import toniarts.openkeeper.world.MapLoader; import toniarts.openkeeper.world.TileData; import toniarts.openkeeper.world.WorldState; diff --git a/src/toniarts/openkeeper/world/object/ObjectLoader.java b/src/toniarts/openkeeper/world/object/ObjectLoader.java index 6d0b76b1d..c5e6dd285 100644 --- a/src/toniarts/openkeeper/world/object/ObjectLoader.java +++ b/src/toniarts/openkeeper/world/object/ObjectLoader.java @@ -32,7 +32,7 @@ import toniarts.openkeeper.tools.convert.map.Variable; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.WorldUtils; -import toniarts.openkeeper.world.ILoader; +import toniarts.openkeeper.view.loader.ILoader; import toniarts.openkeeper.world.MapLoader; import toniarts.openkeeper.world.TileData; import toniarts.openkeeper.world.WorldState; diff --git a/src/toniarts/openkeeper/world/trap/TrapLoader.java b/src/toniarts/openkeeper/world/trap/TrapLoader.java index e29c4d45f..12b1be9c5 100644 --- a/src/toniarts/openkeeper/world/trap/TrapLoader.java +++ b/src/toniarts/openkeeper/world/trap/TrapLoader.java @@ -24,7 +24,7 @@ import toniarts.openkeeper.tools.convert.map.Thing; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.WorldUtils; -import toniarts.openkeeper.world.ILoader; +import toniarts.openkeeper.view.loader.ILoader; import toniarts.openkeeper.world.MapLoader; import toniarts.openkeeper.world.WorldState; import toniarts.openkeeper.world.control.UnitFlowerControl; From 734176410cd14567b8001c954e31abe60a98ef73 Mon Sep 17 00:00:00 2001 From: Andreas Hollandt Date: Thu, 30 Nov 2023 22:32:30 +0100 Subject: [PATCH 15/47] replace old WallSection with the one in view --- .../controller/room/NormalRoomController.java | 2 +- .../controller/room/TempleController.java | 2 +- .../controller/room/WorkshopController.java | 2 +- .../map/construction/RoomConstructor.java | 3 +- src/toniarts/openkeeper/world/MapLoader.java | 4 +- .../openkeeper/world/room/GenericRoom.java | 3 +- .../openkeeper/world/room/HeroGate.java | 1 + .../world/room/HeroGateFrontEnd.java | 1 + .../world/room/HeroGateThreeByOne.java | 3 +- .../openkeeper/world/room/Normal.java | 2 +- .../openkeeper/world/room/RoomInstance.java | 1 + .../openkeeper/world/room/WallSection.java | 61 ------------------- .../openkeeper/world/room/Workshop.java | 1 + 13 files changed, 15 insertions(+), 71 deletions(-) delete mode 100644 src/toniarts/openkeeper/world/room/WallSection.java diff --git a/src/toniarts/openkeeper/game/controller/room/NormalRoomController.java b/src/toniarts/openkeeper/game/controller/room/NormalRoomController.java index ad0166bb6..ef316fb51 100644 --- a/src/toniarts/openkeeper/game/controller/room/NormalRoomController.java +++ b/src/toniarts/openkeeper/game/controller/room/NormalRoomController.java @@ -28,7 +28,7 @@ import toniarts.openkeeper.common.RoomInstance; import toniarts.openkeeper.game.controller.IObjectsController; import toniarts.openkeeper.tools.convert.map.KwdFile; -import toniarts.openkeeper.world.room.WallSection.WallDirection; +import toniarts.openkeeper.view.map.WallSection.WallDirection; /** * Constructs "normal" rooms diff --git a/src/toniarts/openkeeper/game/controller/room/TempleController.java b/src/toniarts/openkeeper/game/controller/room/TempleController.java index 05118b8d6..4a92621fd 100644 --- a/src/toniarts/openkeeper/game/controller/room/TempleController.java +++ b/src/toniarts/openkeeper/game/controller/room/TempleController.java @@ -28,7 +28,7 @@ import toniarts.openkeeper.tools.convert.map.KwdFile; import toniarts.openkeeper.utils.WorldUtils; import toniarts.openkeeper.view.map.MapViewController; -import toniarts.openkeeper.world.room.WallSection; +import toniarts.openkeeper.view.map.WallSection; /** * The temple... there is the hand and special pillar (rather torch) placement diff --git a/src/toniarts/openkeeper/game/controller/room/WorkshopController.java b/src/toniarts/openkeeper/game/controller/room/WorkshopController.java index 025883e02..0e35ccac2 100644 --- a/src/toniarts/openkeeper/game/controller/room/WorkshopController.java +++ b/src/toniarts/openkeeper/game/controller/room/WorkshopController.java @@ -26,7 +26,7 @@ import toniarts.openkeeper.common.RoomInstance; import toniarts.openkeeper.game.controller.IObjectsController; import toniarts.openkeeper.tools.convert.map.KwdFile; -import toniarts.openkeeper.world.room.WallSection; +import toniarts.openkeeper.view.map.WallSection; /** * The workshop diff --git a/src/toniarts/openkeeper/view/map/construction/RoomConstructor.java b/src/toniarts/openkeeper/view/map/construction/RoomConstructor.java index d6d5ad0c8..3bfa777cc 100644 --- a/src/toniarts/openkeeper/view/map/construction/RoomConstructor.java +++ b/src/toniarts/openkeeper/view/map/construction/RoomConstructor.java @@ -18,7 +18,6 @@ import toniarts.openkeeper.common.RoomInstance; import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.view.map.WallSection; -import static toniarts.openkeeper.view.map.WallSection.WallDirection.WEST; /** * A base class for constructing different kind of rooms. FIXME: Basically @@ -79,7 +78,7 @@ public final Spatial construct() { * for the wall spatials by the map loader in normal map drawing situation * * @see #getWallSpatial(java.awt.Point, - * toniarts.openkeeper.world.room.WallSection.WallDirection) + * toniarts.openkeeper.view.map.WallSection.WallDirection) * @return constructed wall */ protected BatchNode constructWall() { diff --git a/src/toniarts/openkeeper/world/MapLoader.java b/src/toniarts/openkeeper/world/MapLoader.java index 48ba8dcb9..fd37ba229 100644 --- a/src/toniarts/openkeeper/world/MapLoader.java +++ b/src/toniarts/openkeeper/world/MapLoader.java @@ -51,14 +51,14 @@ import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.WorldUtils; import toniarts.openkeeper.view.loader.ILoader; +import toniarts.openkeeper.view.map.WallSection; +import toniarts.openkeeper.view.map.WallSection.WallDirection; import toniarts.openkeeper.world.effect.EffectManagerState; import toniarts.openkeeper.world.effect.TorchControl; import toniarts.openkeeper.world.object.ObjectLoader; import toniarts.openkeeper.world.room.GenericRoom; import toniarts.openkeeper.world.room.RoomConstructor; import toniarts.openkeeper.world.room.RoomInstance; -import toniarts.openkeeper.world.room.WallSection; -import toniarts.openkeeper.world.room.WallSection.WallDirection; import toniarts.openkeeper.world.terrain.Water; /** diff --git a/src/toniarts/openkeeper/world/room/GenericRoom.java b/src/toniarts/openkeeper/world/room/GenericRoom.java index 2212b7398..47969d88e 100644 --- a/src/toniarts/openkeeper/world/room/GenericRoom.java +++ b/src/toniarts/openkeeper/world/room/GenericRoom.java @@ -35,6 +35,7 @@ import toniarts.openkeeper.tools.modelviewer.SoundsLoader; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.Utils; +import toniarts.openkeeper.view.map.WallSection; import toniarts.openkeeper.world.MapLoader; import toniarts.openkeeper.world.WorldState; import toniarts.openkeeper.world.effect.EffectManagerState; @@ -182,7 +183,7 @@ public Node getRootNode() { * for the wall spatials by the map loader in normal map drawing situation * * @see #getWallSpatial(java.awt.Point, - * toniarts.openkeeper.world.room.WallSection.WallDirection) + * toniarts.openkeeper.view.map.WallSection.WallDirection) * @return contructed wall */ protected BatchNode constructWall() { diff --git a/src/toniarts/openkeeper/world/room/HeroGate.java b/src/toniarts/openkeeper/world/room/HeroGate.java index d9749a9a4..836b69401 100644 --- a/src/toniarts/openkeeper/world/room/HeroGate.java +++ b/src/toniarts/openkeeper/world/room/HeroGate.java @@ -22,6 +22,7 @@ import com.jme3.scene.Spatial; import java.awt.Point; import toniarts.openkeeper.utils.AssetUtils; +import toniarts.openkeeper.view.map.WallSection; import toniarts.openkeeper.world.WorldState; import toniarts.openkeeper.world.effect.EffectManagerState; import toniarts.openkeeper.world.object.ObjectLoader; diff --git a/src/toniarts/openkeeper/world/room/HeroGateFrontEnd.java b/src/toniarts/openkeeper/world/room/HeroGateFrontEnd.java index 4a390bb58..2afca3d95 100644 --- a/src/toniarts/openkeeper/world/room/HeroGateFrontEnd.java +++ b/src/toniarts/openkeeper/world/room/HeroGateFrontEnd.java @@ -30,6 +30,7 @@ import toniarts.openkeeper.game.data.Level.LevelType; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.FullMoon; +import toniarts.openkeeper.view.map.WallSection; import toniarts.openkeeper.world.MapLoader; import toniarts.openkeeper.world.WorldState; import toniarts.openkeeper.world.effect.EffectManagerState; diff --git a/src/toniarts/openkeeper/world/room/HeroGateThreeByOne.java b/src/toniarts/openkeeper/world/room/HeroGateThreeByOne.java index 6b16b2cb6..9d3440ae4 100644 --- a/src/toniarts/openkeeper/world/room/HeroGateThreeByOne.java +++ b/src/toniarts/openkeeper/world/room/HeroGateThreeByOne.java @@ -23,10 +23,11 @@ import java.awt.Point; import toniarts.openkeeper.tools.convert.map.Thing.Room.Direction; import toniarts.openkeeper.utils.AssetUtils; +import toniarts.openkeeper.view.map.WallSection; +import toniarts.openkeeper.view.map.WallSection.WallDirection; import toniarts.openkeeper.world.WorldState; import toniarts.openkeeper.world.effect.EffectManagerState; import toniarts.openkeeper.world.object.ObjectLoader; -import toniarts.openkeeper.world.room.WallSection.WallDirection; /** * FIXME some problem with wall when reinforce near tile diff --git a/src/toniarts/openkeeper/world/room/Normal.java b/src/toniarts/openkeeper/world/room/Normal.java index 1fae3b164..05a0efd58 100644 --- a/src/toniarts/openkeeper/world/room/Normal.java +++ b/src/toniarts/openkeeper/world/room/Normal.java @@ -26,11 +26,11 @@ import java.util.Arrays; import java.util.EnumSet; import toniarts.openkeeper.utils.AssetUtils; +import toniarts.openkeeper.view.map.WallSection.WallDirection; import toniarts.openkeeper.world.MapLoader; import toniarts.openkeeper.world.WorldState; import toniarts.openkeeper.world.effect.EffectManagerState; import toniarts.openkeeper.world.object.ObjectLoader; -import toniarts.openkeeper.world.room.WallSection.WallDirection; /** * Constructs "normal" rooms diff --git a/src/toniarts/openkeeper/world/room/RoomInstance.java b/src/toniarts/openkeeper/world/room/RoomInstance.java index ac24dfcd0..4b6f1f613 100644 --- a/src/toniarts/openkeeper/world/room/RoomInstance.java +++ b/src/toniarts/openkeeper/world/room/RoomInstance.java @@ -21,6 +21,7 @@ import javax.annotation.Nullable; import toniarts.openkeeper.tools.convert.map.Room; import toniarts.openkeeper.tools.convert.map.Thing; +import toniarts.openkeeper.view.map.WallSection; import toniarts.openkeeper.world.EntityInstance; import toniarts.openkeeper.world.MapData; import toniarts.openkeeper.world.TileData; diff --git a/src/toniarts/openkeeper/world/room/WallSection.java b/src/toniarts/openkeeper/world/room/WallSection.java deleted file mode 100644 index ddd6bc49b..000000000 --- a/src/toniarts/openkeeper/world/room/WallSection.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (C) 2014-2015 OpenKeeper - * - * OpenKeeper is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenKeeper is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with OpenKeeper. If not, see . - */ -package toniarts.openkeeper.world.room; - -import com.jme3.math.FastMath; -import java.awt.Point; -import java.util.List; - -/** - * Single wall section - * - * @author Toni Helenius - */ -@Deprecated -public class WallSection { - - public enum WallDirection { - - EAST(-FastMath.HALF_PI), NORTH(0), WEST(FastMath.HALF_PI), SOUTH(FastMath.PI); - - WallDirection(float angle) { - this.angle = angle; - } - - public float getAngle() { - return angle; - } - - private final float angle; - } - - private final WallDirection direction; - private final List coordinates; - - public WallSection(WallDirection direction, List coordinates) { - this.direction = direction; - this.coordinates = coordinates; - } - - public List getCoordinates() { - return coordinates; - } - - public WallDirection getDirection() { - return direction; - } -} diff --git a/src/toniarts/openkeeper/world/room/Workshop.java b/src/toniarts/openkeeper/world/room/Workshop.java index 1e3dd0d7d..fb16baa0a 100644 --- a/src/toniarts/openkeeper/world/room/Workshop.java +++ b/src/toniarts/openkeeper/world/room/Workshop.java @@ -23,6 +23,7 @@ import java.awt.Point; import java.util.EnumSet; import toniarts.openkeeper.utils.AssetUtils; +import toniarts.openkeeper.view.map.WallSection; import toniarts.openkeeper.world.WorldState; import toniarts.openkeeper.world.effect.EffectManagerState; import toniarts.openkeeper.world.object.ObjectLoader; From 1b4d21c437325cfe4b0cc21a8043fe2a4f33cea0 Mon Sep 17 00:00:00 2001 From: Andreas Hollandt Date: Thu, 30 Nov 2023 22:37:14 +0100 Subject: [PATCH 16/47] replace old AnimationControl with the one in view --- src/toniarts/openkeeper/world/WorldState.java | 2 +- .../world/animation/AnimationControl.java | 44 --- .../world/animation/AnimationLoader.java | 327 ------------------ .../world/creature/CreatureControl.java | 4 +- .../openkeeper/world/door/DoorControl.java | 4 +- .../world/room/FiveByFiveRotated.java | 3 +- .../openkeeper/world/trap/TrapControl.java | 2 +- 7 files changed, 7 insertions(+), 379 deletions(-) delete mode 100644 src/toniarts/openkeeper/world/animation/AnimationControl.java delete mode 100644 src/toniarts/openkeeper/world/animation/AnimationLoader.java diff --git a/src/toniarts/openkeeper/world/WorldState.java b/src/toniarts/openkeeper/world/WorldState.java index 5a58f0e60..e484c81a2 100644 --- a/src/toniarts/openkeeper/world/WorldState.java +++ b/src/toniarts/openkeeper/world/WorldState.java @@ -65,8 +65,8 @@ import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.Utils; import toniarts.openkeeper.utils.WorldUtils; +import toniarts.openkeeper.view.animation.AnimationLoader; import toniarts.openkeeper.view.selection.SelectionArea; -import toniarts.openkeeper.world.animation.AnimationLoader; import toniarts.openkeeper.world.control.FlashTileControl; import toniarts.openkeeper.world.control.IInteractiveControl; import toniarts.openkeeper.world.creature.CreatureControl; diff --git a/src/toniarts/openkeeper/world/animation/AnimationControl.java b/src/toniarts/openkeeper/world/animation/AnimationControl.java deleted file mode 100644 index 3ac472909..000000000 --- a/src/toniarts/openkeeper/world/animation/AnimationControl.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2014-2016 OpenKeeper - * - * OpenKeeper is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenKeeper is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with OpenKeeper. If not, see . - */ -package toniarts.openkeeper.world.animation; - -import com.jme3.scene.control.Control; - -/** - * An interface for handling our animations, callbacks - * - * @author Toni Helenius - */ -@Deprecated -public interface AnimationControl extends Control { - - /** - * On animation stop - * - */ - public void onAnimationStop(); - - /** - * Main animation cycle is done - */ - public void onAnimationCycleDone(); - - /** - * Should we stop the animation - */ - public boolean isStopAnimation(); -} diff --git a/src/toniarts/openkeeper/world/animation/AnimationLoader.java b/src/toniarts/openkeeper/world/animation/AnimationLoader.java deleted file mode 100644 index e3eb7dc43..000000000 --- a/src/toniarts/openkeeper/world/animation/AnimationLoader.java +++ /dev/null @@ -1,327 +0,0 @@ -/* - * Copyright (C) 2014-2016 OpenKeeper - * - * OpenKeeper is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenKeeper is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with OpenKeeper. If not, see . - */ -package toniarts.openkeeper.world.animation; - -import com.jme3.animation.AnimChannel; -import com.jme3.animation.AnimControl; -import com.jme3.animation.AnimEventListener; -import com.jme3.animation.LoopMode; -import com.jme3.asset.AssetManager; -import com.jme3.scene.Node; -import com.jme3.scene.Spatial; -import java.util.logging.Level; -import java.util.logging.Logger; -import toniarts.openkeeper.tools.convert.KmfModelLoader; -import toniarts.openkeeper.tools.convert.kmf.Anim; -import toniarts.openkeeper.tools.convert.map.ArtResource; -import toniarts.openkeeper.utils.AssetUtils; - -/** - * Static helpers to handle animations in our basic scene objects - * - * @author Toni Helenius - */ -@Deprecated -public class AnimationLoader { - - private static final Logger LOGGER = Logger.getLogger(AnimationLoader.class.getName()); - - private static final String START_ANIMATION_NAME = "Start"; - private static final String END_ANIMATION_NAME = "End"; - private static final String ANIM_NAME = "anim"; - - private AnimationLoader() { - // No! - } - - private static void attachResource(final Node root, final AnimationControl animationControl, final ArtResource resource, AssetManager assetManager) { - if (resource != null && (resource.getType() == ArtResource.ArtResourceType.ANIMATING_MESH - || resource.getType() == ArtResource.ArtResourceType.MESH - || resource.getType() == ArtResource.ArtResourceType.PROCEDURAL_MESH)) { - try { - - Spatial spat = loadModel(assetManager, resource.getName(), root); - spat.setName(resource.getName()); - - // If the animations has end and/or start, it is located in a different file - if (resource.getFlags().contains(ArtResource.ArtResourceFlag.HAS_START_ANIMATION)) { - String name = resource.getName() + START_ANIMATION_NAME; - Spatial spatStart = loadModel(assetManager, name, root); - spatStart.setName(START_ANIMATION_NAME); - - // Create kinda a custom animation control - AnimControl animControl = spatStart.getControl(AnimControl.class); - if (animControl != null) { - animControl.setEnabled(false); - animControl.addListener(new AnimEventListener() { - - @Override - public void onAnimCycleDone(AnimControl control, AnimChannel channel, String animName) { - - // Start the real animation - Spatial spat = root.getChild(resource.getName()); - AnimControl animControl = spat.getControl(AnimControl.class); - spat.setCullHint(Spatial.CullHint.Inherit); - AnimChannel c = animControl.getChannel(0); - LoopMode loopMode = c.getLoopMode(); - c.setAnim(ANIM_NAME, 0); - if (loopMode != null) { - c.setLoopMode(loopMode); - } - animControl.setEnabled(true); - - // Hide us - control.setEnabled(false); - control.getSpatial().setCullHint(Spatial.CullHint.Always); - } - - @Override - public void onAnimChange(AnimControl control, AnimChannel channel, String animName) { - - } - }); - animControl.createChannel(); - } - } - if (resource.getFlags().contains(ArtResource.ArtResourceFlag.HAS_END_ANIMATION)) { - String name = resource.getName() + END_ANIMATION_NAME; - Spatial spatEnd = loadModel(assetManager, name, root); - spatEnd.setName(END_ANIMATION_NAME); - - // Create kinda a custom animation control - AnimControl animControl = spatEnd.getControl(AnimControl.class); - if (animControl != null) { - animControl.setEnabled(false); - animControl.addListener(new AnimEventListener() { - - @Override - public void onAnimCycleDone(AnimControl control, AnimChannel channel, String animName) { - - // Stop us - control.setEnabled(false); - - // Signal stop - animationControl.onAnimationStop(); - } - - @Override - public void onAnimChange(AnimControl control, AnimChannel channel, String animName) { - - } - }); - animControl.createChannel(); - } - } - - // Create kinda a custom animation control - AnimControl animControl = spat.getControl(AnimControl.class); - if (animControl != null) { - animControl.setEnabled(false); - animControl.addListener(new AnimEventListener() { - - private int cyclesCount = 0; - - @Override - public void onAnimCycleDone(AnimControl control, AnimChannel channel, String animName) { - cyclesCount++; - - // Signal that the main animation cycle is done - animationControl.onAnimationCycleDone(); - - // See if we need to stop - if (animationControl.isStopAnimation() || channel.getLoopMode() == LoopMode.DontLoop) { - - // Stop us - control.setEnabled(false); - - // We need to stop - if (resource.getFlags().contains(ArtResource.ArtResourceFlag.HAS_END_ANIMATION)) { - - // Hide us - control.getSpatial().setCullHint(Spatial.CullHint.Always); - - Spatial spat = root.getChild(END_ANIMATION_NAME); - AnimControl animControl = spat.getControl(AnimControl.class); - spat.setCullHint(Spatial.CullHint.Inherit); - AnimChannel c = animControl.getChannel(0); - LoopMode loopMode = c.getLoopMode(); - c.setAnim(ANIM_NAME, 0); - if (loopMode != null) { - c.setLoopMode(loopMode); - } - animControl.setEnabled(true); - } else { - - // Signal stop - animationControl.onAnimationStop(); - } - } - } - - @Override - public void onAnimChange(AnimControl control, AnimChannel channel, String animName) { - - } - }); - AnimChannel channel = animControl.createChannel(); - setLoopModeOnChannel(spat, channel); - } - } catch (Exception e) { - LOGGER.log(Level.WARNING, e.getMessage()); - } - } - } - - public static void setLoopModeOnChannel(final Spatial spat, final AnimChannel channel) { - final Anim.FrameFactorFunction func = Anim.FrameFactorFunction.valueOf(spat.getUserData(KmfModelLoader.FRAME_FACTOR_FUNCTION)); - switch (func) { - case CLAMP: { - channel.setLoopMode(LoopMode.Cycle); - break; - } - case WRAP: { - channel.setLoopMode(LoopMode.Loop); - break; - } - } - } - - private static Spatial loadModel(AssetManager assetManager, String resourceName, Node creatureRoot) { - - // Load the model and attach it without the root - Spatial model = AssetUtils.loadModel(assetManager, resourceName, null); - model = ((Node) model).getChild(0); - model.setCullHint(Spatial.CullHint.Always); - creatureRoot.attachChild(model); - return model; - } - - /** - * Start playing an animation on the creature - * - * @param spatial the creature root - * @param anim wanted animation - * @param assetManager the AssetManager - * @param endFrame start from the end frame - */ - public static void playAnimation(Spatial spatial, ArtResource anim, AssetManager assetManager, boolean endFrame) { - - Node root = (Node) spatial; - - // Attach the anim node and get rid of the rest - for (Spatial child : root.getChildren()) { - if (Boolean.FALSE.equals(child.getUserData(AssetUtils.USER_DATA_KEY_REMOVABLE))) { - continue; - } - child.removeFromParent(); - } - attachResource(root, root.getControl(AnimationControl.class), anim, assetManager); - - try { - // Get the anim node - String animNodeName = anim.getName(); - if (anim.getFlags().contains(ArtResource.ArtResourceFlag.HAS_START_ANIMATION)) { - animNodeName = START_ANIMATION_NAME; - } - Spatial spat = root.getChild(animNodeName); - if (spat != null) { - - // Hide all - hideAllNodes(root); - - // Show the anim - AnimControl animControl = spat.getControl(AnimControl.class); - spat.setCullHint(Spatial.CullHint.Inherit); - if (animControl != null) { // Not all are anims - AnimChannel channel = animControl.getChannel(0); - LoopMode loopMode = channel.getLoopMode(); - channel.setAnim(ANIM_NAME, 0); - if (loopMode != null) { - channel.setLoopMode(loopMode); - } - if (endFrame) { - channel.setTime(Integer.MAX_VALUE); - } - animControl.setEnabled(true); - } - } - } catch (Exception e) { - // FIXME sometimes NPE in CreatureControl.java - // line: playAnimation(creature.getAnimEntranceResource()); - LOGGER.log(Level.SEVERE, e, () -> "Creature animation playing error: " + e.toString()); - } - } - - /** - * @param spatial - * @param anim - * @param assetManager - * @see #playAnimation(com.jme3.scene.Spatial, - * toniarts.openkeeper.tools.convert.map.ArtResource, - * com.jme3.asset.AssetManager, boolean) - */ - public static void playAnimation(Spatial spatial, ArtResource anim, AssetManager assetManager) { - playAnimation(spatial, anim, assetManager, false); - } - - private static void hideAllNodes(Node root) { - //UnitFlowerControl aufc = root.getControl(UnitFlowerControl.class); - for (Spatial child : root.getChildren()) { - - // Don't hide the unit flower - if (Boolean.FALSE.equals(child.getUserData(AssetUtils.USER_DATA_KEY_REMOVABLE))) { - continue; - } - - child.setCullHint(Spatial.CullHint.Always); - - // Also stop any animations - AnimControl animControl = (AnimControl) child.getControl(AnimControl.class); - if (animControl != null) { - animControl.setEnabled(false); - } - } - } - - /** - * Restarts all animations that were playing - * - * @param spatial the root node of the creature - */ - public static void resumeAnimations(Spatial spatial) { - setAnimSpeeds((Node) spatial, 1.0f); - } - - /** - * Stops all animations that were playing - * - * @param spatial the root node of the creature - */ - public static void pauseAnimations(Spatial spatial) { - setAnimSpeeds((Node) spatial, 0.0f); - } - - private static void setAnimSpeeds(Node node, float speed) { - for (Spatial child : node.getChildren()) { - AnimControl animControl = child.getControl(AnimControl.class); - if (animControl != null) { - animControl.getChannel(0).setSpeed(speed); - } - } - } - -} diff --git a/src/toniarts/openkeeper/world/creature/CreatureControl.java b/src/toniarts/openkeeper/world/creature/CreatureControl.java index 615f65eaf..87934f575 100644 --- a/src/toniarts/openkeeper/world/creature/CreatureControl.java +++ b/src/toniarts/openkeeper/world/creature/CreatureControl.java @@ -58,10 +58,10 @@ import toniarts.openkeeper.tools.convert.map.Variable; import toniarts.openkeeper.utils.Utils; import toniarts.openkeeper.utils.WorldUtils; +import toniarts.openkeeper.view.animation.AnimationControl; +import toniarts.openkeeper.view.animation.AnimationLoader; import toniarts.openkeeper.world.TileData; import toniarts.openkeeper.world.WorldState; -import toniarts.openkeeper.world.animation.AnimationControl; -import toniarts.openkeeper.world.animation.AnimationLoader; import toniarts.openkeeper.world.control.IHaulable; import toniarts.openkeeper.world.control.IInteractiveControl; import toniarts.openkeeper.world.control.IUnitFlowerControl; diff --git a/src/toniarts/openkeeper/world/door/DoorControl.java b/src/toniarts/openkeeper/world/door/DoorControl.java index 8965914c7..166ae1c59 100644 --- a/src/toniarts/openkeeper/world/door/DoorControl.java +++ b/src/toniarts/openkeeper/world/door/DoorControl.java @@ -30,10 +30,10 @@ import toniarts.openkeeper.tools.convert.map.Trap; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.Utils; +import toniarts.openkeeper.view.animation.AnimationControl; +import toniarts.openkeeper.view.animation.AnimationLoader; import toniarts.openkeeper.world.TileData; import toniarts.openkeeper.world.WorldState; -import toniarts.openkeeper.world.animation.AnimationControl; -import toniarts.openkeeper.world.animation.AnimationLoader; import toniarts.openkeeper.world.control.IInteractiveControl; import toniarts.openkeeper.world.control.IUnitFlowerControl; import toniarts.openkeeper.world.control.UnitFlowerControl; diff --git a/src/toniarts/openkeeper/world/room/FiveByFiveRotated.java b/src/toniarts/openkeeper/world/room/FiveByFiveRotated.java index 0cb3eb897..75e5b0f4f 100644 --- a/src/toniarts/openkeeper/world/room/FiveByFiveRotated.java +++ b/src/toniarts/openkeeper/world/room/FiveByFiveRotated.java @@ -35,7 +35,6 @@ import toniarts.openkeeper.world.MapLoader; import toniarts.openkeeper.world.ThingLoader; import toniarts.openkeeper.world.WorldState; -import toniarts.openkeeper.world.animation.AnimationLoader; import toniarts.openkeeper.world.creature.CreatureControl; import toniarts.openkeeper.world.effect.EffectManagerState; import toniarts.openkeeper.world.object.ObjectLoader; @@ -219,7 +218,7 @@ public void visit(Spatial spatial) { if (animControl != null) { AnimChannel channel = animControl.createChannel(); channel.setAnim("anim"); - AnimationLoader.setLoopModeOnChannel(spatial, channel); + //AnimationLoader.setLoopModeOnChannel(spatial, channel); // Don't batch animated objects, seems not to work spatial.setBatchHint(Spatial.BatchHint.Never); diff --git a/src/toniarts/openkeeper/world/trap/TrapControl.java b/src/toniarts/openkeeper/world/trap/TrapControl.java index 83e9099ac..df9088bf5 100644 --- a/src/toniarts/openkeeper/world/trap/TrapControl.java +++ b/src/toniarts/openkeeper/world/trap/TrapControl.java @@ -30,9 +30,9 @@ import toniarts.openkeeper.tools.convert.map.Trap; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.Utils; +import toniarts.openkeeper.view.animation.AnimationControl; import toniarts.openkeeper.world.TileData; import toniarts.openkeeper.world.WorldState; -import toniarts.openkeeper.world.animation.AnimationControl; import toniarts.openkeeper.world.control.IInteractiveControl; import toniarts.openkeeper.world.control.IUnitFlowerControl; import toniarts.openkeeper.world.control.UnitFlowerControl; From d5876fcf1ad2704b2ecedde93603893b685495e3 Mon Sep 17 00:00:00 2001 From: Andreas Hollandt Date: Tue, 28 Nov 2023 23:04:29 +0100 Subject: [PATCH 17/47] move TorchControl to view --- .../{world/effect => view/control}/TorchControl.java | 5 ++--- src/toniarts/openkeeper/view/map/MapViewController.java | 2 +- src/toniarts/openkeeper/world/MapLoader.java | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) rename src/toniarts/openkeeper/{world/effect => view/control}/TorchControl.java (98%) diff --git a/src/toniarts/openkeeper/world/effect/TorchControl.java b/src/toniarts/openkeeper/view/control/TorchControl.java similarity index 98% rename from src/toniarts/openkeeper/world/effect/TorchControl.java rename to src/toniarts/openkeeper/view/control/TorchControl.java index dba27de6e..09540a604 100644 --- a/src/toniarts/openkeeper/world/effect/TorchControl.java +++ b/src/toniarts/openkeeper/view/control/TorchControl.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with OpenKeeper. If not, see . */ -package toniarts.openkeeper.world.effect; +package toniarts.openkeeper.view.control; import com.jme3.asset.AssetInfo; import com.jme3.asset.AssetKey; @@ -50,8 +50,7 @@ * * @author ArchDemon */ -@Deprecated -public class TorchControl extends BillboardControl { +public final class TorchControl extends BillboardControl { private static final Logger log = Logger.getLogger(TorchControl.class.getName()); diff --git a/src/toniarts/openkeeper/view/map/MapViewController.java b/src/toniarts/openkeeper/view/map/MapViewController.java index 0ce00876b..526a4ec89 100644 --- a/src/toniarts/openkeeper/view/map/MapViewController.java +++ b/src/toniarts/openkeeper/view/map/MapViewController.java @@ -56,12 +56,12 @@ import toniarts.openkeeper.tools.convert.map.Thing; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.WorldUtils; +import toniarts.openkeeper.view.control.TorchControl; import toniarts.openkeeper.view.loader.ILoader; import toniarts.openkeeper.view.map.WallSection.WallDirection; import toniarts.openkeeper.view.map.construction.RoomConstructor; import toniarts.openkeeper.view.map.construction.SingleQuadConstructor; import toniarts.openkeeper.view.map.construction.WaterConstructor; -import toniarts.openkeeper.world.effect.TorchControl; import toniarts.openkeeper.world.room.GenericRoom; /** diff --git a/src/toniarts/openkeeper/world/MapLoader.java b/src/toniarts/openkeeper/world/MapLoader.java index fd37ba229..c5ec0c117 100644 --- a/src/toniarts/openkeeper/world/MapLoader.java +++ b/src/toniarts/openkeeper/world/MapLoader.java @@ -50,11 +50,11 @@ import toniarts.openkeeper.tools.convert.map.Thing; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.WorldUtils; +import toniarts.openkeeper.view.control.TorchControl; import toniarts.openkeeper.view.loader.ILoader; import toniarts.openkeeper.view.map.WallSection; import toniarts.openkeeper.view.map.WallSection.WallDirection; import toniarts.openkeeper.world.effect.EffectManagerState; -import toniarts.openkeeper.world.effect.TorchControl; import toniarts.openkeeper.world.object.ObjectLoader; import toniarts.openkeeper.world.room.GenericRoom; import toniarts.openkeeper.world.room.RoomConstructor; From 073b9d9ace28b07b476821ae7626e8fb186791d2 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Tue, 12 Dec 2023 20:55:38 +0200 Subject: [PATCH 18/47] Replace JUL with system logging --- src/toniarts/openkeeper/Main.java | 26 +++--- .../openkeeper/audio/plugins/MP2Loader.java | 8 +- .../openkeeper/cinematics/Cinematic.java | 4 +- src/toniarts/openkeeper/game/MapSelector.java | 8 +- .../game/controller/CreaturesController.java | 8 +- .../game/controller/DoorsController.java | 6 +- .../game/controller/GameController.java | 10 +-- .../game/controller/ObjectsController.java | 6 +- .../controller/RoomControllerFactory.java | 6 +- .../game/controller/TrapsController.java | 6 +- .../controller/chicken/ChickenController.java | 6 +- .../creature/CreatureController.java | 8 +- .../controller/entity/EntityController.java | 7 +- .../openkeeper/game/data/HiScores.java | 10 +-- src/toniarts/openkeeper/game/data/Level.java | 6 +- .../openkeeper/game/data/Settings.java | 10 +-- .../openkeeper/game/logic/DeathSystem.java | 4 +- .../openkeeper/game/logic/DecaySystem.java | 4 +- .../game/logic/GameLogicManager.java | 10 +-- .../openkeeper/game/logic/MovementSystem.java | 4 +- .../game/navigation/NavigationService.java | 7 +- .../game/network/LocalServerSearch.java | 7 +- .../game/network/NetworkClient.java | 12 +-- .../openkeeper/game/network/ServerQuery.java | 8 +- .../game/network/chat/ChatClientService.java | 20 ++--- .../game/network/chat/ChatHostedService.java | 10 +-- .../game/network/game/GameClientService.java | 22 ++--- .../game/network/game/GameHostedService.java | 14 ++-- .../network/lobby/LobbyClientService.java | 20 ++--- .../network/lobby/LobbyHostedService.java | 10 +-- .../network/session/AccountClientService.java | 15 ++-- .../network/session/AccountHostedService.java | 13 +-- .../streaming/StreamingClientService.java | 8 +- .../streaming/StreamingHostedService.java | 4 +- .../openkeeper/game/sound/GlobalCategory.java | 10 ++- .../openkeeper/game/sound/SoundCategory.java | 10 +-- .../openkeeper/game/sound/SoundGroup.java | 10 +-- .../openkeeper/game/state/CheatState.java | 6 +- .../game/state/ConnectionState.java | 22 ++--- .../game/state/GameClientState.java | 10 +-- .../game/state/GameServerState.java | 10 +-- .../openkeeper/game/state/GameState.java | 10 +-- .../game/state/MainMenuScreenController.java | 18 ++-- .../openkeeper/game/state/MainMenuState.java | 18 ++-- .../game/state/PlayerScreenController.java | 8 +- .../openkeeper/game/state/PlayerState.java | 4 +- .../openkeeper/game/state/SoundState.java | 6 +- .../game/state/loading/LoadingState.java | 10 +-- .../game/state/session/LocalGameSession.java | 8 +- .../openkeeper/game/task/AbstractTask.java | 7 +- .../openkeeper/game/task/TaskManager.java | 6 +- .../trigger/AbstractThingTriggerControl.java | 4 +- .../game/trigger/TriggerControl.java | 14 ++-- .../openkeeper/game/trigger/TriggerData.java | 8 +- .../game/trigger/TriggerGenericData.java | 18 ++-- .../ActionPointTriggerControl.java | 9 +- .../creature/CreatureTriggerControl.java | 4 +- .../game/trigger/door/DoorTriggerControl.java | 4 +- .../trigger/object/ObjectTriggerControl.java | 4 +- .../trigger/party/PartyTriggerControl.java | 4 +- .../trigger/player/PlayerTriggerControl.java | 8 +- .../gui/nifty/CustomTabControl.java | 11 +-- .../gui/nifty/CustomTabGroupControl.java | 20 ++--- .../gui/nifty/chat/ChatBoxViewConverter.java | 13 +-- .../gui/nifty/chat/ChatControl.java | 16 ++-- .../gui/nifty/table/TableControl.java | 9 +- .../openkeeper/setup/DKConverter.java | 10 +-- .../openkeeper/setup/DKFolderSelector.java | 7 +- .../tools/convert/AssetsConverter.java | 6 +- .../tools/convert/BufferedResourceReader.java | 8 +- .../tools/convert/ConversionUtils.java | 9 +- .../tools/convert/FileResourceReader.java | 9 +- .../tools/convert/KmfModelLoader.java | 6 +- .../tools/convert/ResourceChunkReader.java | 9 +- .../conversion/ConversionTaskManager.java | 10 +-- .../convert/conversion/task/ConvertFonts.java | 14 ++-- .../conversion/task/ConvertHiScores.java | 6 +- .../conversion/task/ConvertMapThumbnails.java | 8 +- .../conversion/task/ConvertModels.java | 14 ++-- .../conversion/task/ConvertMouseCursors.java | 8 +- .../convert/conversion/task/ConvertPaths.java | 8 +- .../conversion/task/ConvertSounds.java | 8 +- .../convert/conversion/task/ConvertTexts.java | 10 +-- .../conversion/task/ConvertTextures.java | 16 ++-- .../openkeeper/tools/convert/map/KwdFile.java | 82 +++++++++---------- .../openkeeper/tools/convert/spr/SprFile.java | 8 +- .../openkeeper/tools/convert/str/StrFile.java | 14 ++-- .../enginetextures/EngineTexturesFile.java | 6 +- .../openkeeper/tools/convert/wad/WadFile.java | 6 +- .../tools/modelviewer/ModelViewer.java | 11 ++- .../tools/modelviewer/SoundsLoader.java | 6 +- src/toniarts/openkeeper/utils/AssetUtils.java | 14 ++-- .../utils/MapThumbnailGenerator.java | 6 +- src/toniarts/openkeeper/utils/PathUtils.java | 10 +-- .../openkeeper/utils/SettingUtils.java | 8 +- src/toniarts/openkeeper/utils/Utils.java | 6 +- .../openkeeper/video/MovieMaterial.java | 8 +- src/toniarts/openkeeper/video/TgqPlayer.java | 10 +-- .../openkeeper/video/tgq/TgqFile.java | 6 +- .../openkeeper/video/tgq/TgqFrame.java | 7 +- .../openkeeper/view/PlayerCameraState.java | 4 +- .../view/PlayerEntityViewState.java | 22 ++--- .../view/PlayerInteractionState.java | 4 +- .../openkeeper/view/PlayerMapViewState.java | 12 +-- .../view/PossessionCameraState.java | 4 +- .../view/PossessionInteractionState.java | 4 +- .../view/animation/AnimationLoader.java | 8 +- .../openkeeper/view/control/TorchControl.java | 6 +- .../view/control/UnitFlowerControl.java | 4 +- .../view/loader/CreatureLoader.java | 8 +- .../openkeeper/view/loader/DoorLoader.java | 8 +- .../openkeeper/view/loader/ObjectLoader.java | 8 +- .../openkeeper/view/loader/TrapLoader.java | 8 +- .../view/map/MapViewController.java | 8 +- .../openkeeper/view/map/RoomFactory.java | 6 +- src/toniarts/openkeeper/view/map/Water.java | 4 +- src/toniarts/openkeeper/world/MapLoader.java | 8 +- .../openkeeper/world/ThingLoader.java | 6 +- src/toniarts/openkeeper/world/WorldState.java | 4 +- .../world/control/UnitFlowerControl.java | 8 +- .../world/creature/CreatureLoader.java | 4 +- .../openkeeper/world/door/DoorLoader.java | 4 +- .../world/effect/EffectControl.java | 4 +- .../world/effect/EffectElementControl.java | 4 +- .../world/effect/EffectManagerState.java | 4 +- .../openkeeper/world/effect/VisualEffect.java | 10 +-- .../world/object/HighlightControl.java | 4 +- .../openkeeper/world/object/ObjectLoader.java | 6 +- .../world/room/RoomConstructor.java | 6 +- .../openkeeper/world/terrain/Water.java | 4 +- .../openkeeper/world/trap/TrapLoader.java | 4 +- 131 files changed, 619 insertions(+), 599 deletions(-) diff --git a/src/toniarts/openkeeper/Main.java b/src/toniarts/openkeeper/Main.java index c46214b32..f3d0040dd 100644 --- a/src/toniarts/openkeeper/Main.java +++ b/src/toniarts/openkeeper/Main.java @@ -45,6 +45,8 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.lang.reflect.InvocationTargetException; import java.net.URL; import java.net.URLClassLoader; @@ -60,8 +62,6 @@ import java.util.Properties; import java.util.Queue; import java.util.ResourceBundle; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.imageio.ImageIO; import javax.swing.JFrame; import toniarts.openkeeper.audio.plugins.MP2Loader; @@ -88,7 +88,7 @@ */ public class Main extends SimpleApplication { - private static final Logger LOGGER = Logger.getLogger(Main.class.getName()); + private static final Logger LOGGER = System.getLogger(Main.class.getName()); private static boolean folderOk = false; private static boolean conversionOk = false; @@ -123,7 +123,7 @@ public static void main(String[] args) throws InvocationTargetException, Interru if (checkSetup(app)) { app.start(); } else { - LOGGER.warning("Application setup not complete!!"); + LOGGER.log(Level.WARNING, "Application setup not complete!!"); } } @@ -171,7 +171,7 @@ private static boolean checkSetup(final Main app) throws InterruptedException { // First and foremost, the folder if (!PathUtils.checkDkFolder(getDkIIFolder())) { - LOGGER.info("Dungeon Keeper II folder not found or valid! Prompting user!"); + LOGGER.log(Level.INFO, "Dungeon Keeper II folder not found or valid! Prompting user!"); saveSetup = true; // Let the user select @@ -190,7 +190,7 @@ protected void continueOk(String path) { // If the folder is ok, check the conversion if (folderOk && (AssetsConverter.isConversionNeeded(Main.getSettings()))) { - LOGGER.info("Need to convert the assets!"); + LOGGER.log(Level.INFO, "Need to convert the assets!"); saveSetup = true; // Convert @@ -225,12 +225,12 @@ private static void initSettings(Main app) { try { Files.createDirectories(Paths.get(USER_HOME_FOLDER)); } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Failed to create folder " + USER_HOME_FOLDER + "!", ex); + LOGGER.log(Level.ERROR, "Failed to create folder " + USER_HOME_FOLDER + "!", ex); } try { Files.createDirectories(Paths.get(SCREENSHOTS_FOLDER)); } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Failed to create folder " + SCREENSHOTS_FOLDER + "!", ex); + LOGGER.log(Level.ERROR, "Failed to create folder " + SCREENSHOTS_FOLDER + "!", ex); } // Init the user settings (which in JME are app settings) @@ -274,7 +274,7 @@ private static void setLookNFeel() { } } } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) { - java.util.logging.Logger.getLogger(DKFolderSelector.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + System.getLogger(DKFolderSelector.class.getName()).log(Level.ERROR, (String) null, ex); } } @@ -295,7 +295,7 @@ public void run() { try { LOCK.wait(); } catch (InterruptedException e) { - LOGGER.warning("Lock interrupted!"); + LOGGER.log(Level.WARNING, "Lock interrupted!"); } } } @@ -411,7 +411,7 @@ public void onLoad() { // Eventually we are going to use Nifty, the XML files take some time to parse nifty.addXml(new ByteArrayInputStream(mainMenuUiXml)); } catch (Exception e) { - LOGGER.log(Level.SEVERE, "Failed to load the game!", e); + LOGGER.log(Level.ERROR, "Failed to load the game!", e); app.stop(); } } @@ -510,7 +510,7 @@ public static BufferedImage[] getApplicationIcons() { readIcon("/Icons/openkeeper16.png") }; } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Failed to load the application icons!", ex); + LOGGER.log(Level.ERROR, "Failed to load the application icons!", ex); } return null; } @@ -587,7 +587,7 @@ public static ResourceBundle getResourceBundle(String baseName) { ClassLoader loader = new URLClassLoader(urls); return ResourceBundle.getBundle(baseName, Locale.getDefault(), loader); } catch (Exception e) { - LOGGER.log(Level.SEVERE, "Failed to locate the resource bundle " + baseName + " in " + file + "!", e); + LOGGER.log(Level.ERROR, "Failed to locate the resource bundle " + baseName + " in " + file + "!", e); } // Works only from the IDE diff --git a/src/toniarts/openkeeper/audio/plugins/MP2Loader.java b/src/toniarts/openkeeper/audio/plugins/MP2Loader.java index a2757b911..34819fd12 100644 --- a/src/toniarts/openkeeper/audio/plugins/MP2Loader.java +++ b/src/toniarts/openkeeper/audio/plugins/MP2Loader.java @@ -27,8 +27,8 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import toniarts.openkeeper.audio.plugins.decoder.AudioInformation; import toniarts.openkeeper.audio.plugins.decoder.Decoder; import toniarts.openkeeper.audio.plugins.decoder.MediaInformation; @@ -42,7 +42,7 @@ */ public class MP2Loader implements AssetLoader { - private static final Logger LOGGER = Logger.getLogger(MP2Loader.class.getName()); + private static final Logger LOGGER = System.getLogger(MP2Loader.class.getName()); public static final String FILE_EXTENSION = "mp2"; @@ -155,7 +155,7 @@ private AudioData load(InputStream inputStream, boolean stream) throws IOExcepti return audioData; } } catch (IOException | UnsupportedMediaException ex) { - LOGGER.log(Level.SEVERE, "Failed to read a frame!", ex); + LOGGER.log(Level.ERROR, "Failed to read a frame!", ex); throw new IOException("Failed to read a frame!"); } } diff --git a/src/toniarts/openkeeper/cinematics/Cinematic.java b/src/toniarts/openkeeper/cinematics/Cinematic.java index 11d255db4..e146a3c78 100644 --- a/src/toniarts/openkeeper/cinematics/Cinematic.java +++ b/src/toniarts/openkeeper/cinematics/Cinematic.java @@ -34,7 +34,7 @@ import com.jme3.scene.Node; import com.jme3.scene.control.CameraControl.ControlDirection; import java.awt.Point; -import java.util.logging.Logger; +import java.lang.System.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.WorldUtils; @@ -50,7 +50,7 @@ */ public class Cinematic extends com.jme3.cinematic.Cinematic { - private static final Logger LOGGER = Logger.getLogger(Cinematic.class.getName()); + private static final Logger LOGGER = System.getLogger(Cinematic.class.getName()); private final AssetManager assetManager; private static final boolean IS_DEBUG = false; diff --git a/src/toniarts/openkeeper/game/MapSelector.java b/src/toniarts/openkeeper/game/MapSelector.java index 2a1339e90..1b1861d34 100644 --- a/src/toniarts/openkeeper/game/MapSelector.java +++ b/src/toniarts/openkeeper/game/MapSelector.java @@ -18,6 +18,8 @@ import com.jme3.math.FastMath; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; @@ -26,8 +28,6 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.tools.convert.map.GameLevel; import toniarts.openkeeper.tools.convert.map.KwdFile; @@ -40,7 +40,7 @@ */ public class MapSelector { - private static final Logger LOGGER = Logger.getLogger(MapSelector.class.getName()); + private static final Logger LOGGER = System.getLogger(MapSelector.class.getName()); private final List skirmishMaps = new ArrayList<>(); private final List multiplayerMaps = new ArrayList<>(); @@ -69,7 +69,7 @@ public MapSelector() { } } } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Failed to load the maps!", ex); + LOGGER.log(Level.ERROR, "Failed to load the maps!", ex); } // Sort them diff --git a/src/toniarts/openkeeper/game/controller/CreaturesController.java b/src/toniarts/openkeeper/game/controller/CreaturesController.java index 45be16917..e6b9e65a1 100644 --- a/src/toniarts/openkeeper/game/controller/CreaturesController.java +++ b/src/toniarts/openkeeper/game/controller/CreaturesController.java @@ -24,14 +24,14 @@ import com.simsilica.es.EntitySet; import com.simsilica.es.filter.FieldFilter; import java.awt.Point; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.WeakHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.component.CreatureAi; import toniarts.openkeeper.game.component.CreatureComponent; import toniarts.openkeeper.game.component.CreatureEfficiency; @@ -84,7 +84,7 @@ */ public class CreaturesController implements ICreaturesController { - private static final Logger LOGGER = Logger.getLogger(CreaturesController.class.getName()); + private static final Logger LOGGER = System.getLogger(CreaturesController.class.getName()); private final KwdFile kwdFile; private final EntityData entityData; @@ -492,7 +492,7 @@ public void spawnHeroParty(short partyId, PartyType partyType, Vector2f position IPartyController partyController = creaturePartiesByPartyId.get(partyId); if (partyController.isCreated()) { partyController = new PartyController(heroParties.get(partyId)); - LOGGER.log(Level.FINE, "Re-spawning party {0}!", partyId); + LOGGER.log(Level.TRACE, "Re-spawning party {0}!", partyId); } partyController.setType(partyType); partyController.create(); diff --git a/src/toniarts/openkeeper/game/controller/DoorsController.java b/src/toniarts/openkeeper/game/controller/DoorsController.java index 74b2c9e15..4647d9969 100644 --- a/src/toniarts/openkeeper/game/controller/DoorsController.java +++ b/src/toniarts/openkeeper/game/controller/DoorsController.java @@ -20,9 +20,9 @@ import com.jme3.math.Vector3f; import com.simsilica.es.EntityData; import com.simsilica.es.EntityId; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.component.DoorComponent; import toniarts.openkeeper.game.component.DoorViewState; import toniarts.openkeeper.game.component.Health; @@ -52,7 +52,7 @@ */ public class DoorsController implements IDoorsController { - private static final Logger LOGGER = Logger.getLogger(DoorsController.class.getName()); + private static final Logger LOGGER = System.getLogger(DoorsController.class.getName()); private KwdFile kwdFile; private EntityData entityData; diff --git a/src/toniarts/openkeeper/game/controller/GameController.java b/src/toniarts/openkeeper/game/controller/GameController.java index 7652d8d67..8d4b74f27 100644 --- a/src/toniarts/openkeeper/game/controller/GameController.java +++ b/src/toniarts/openkeeper/game/controller/GameController.java @@ -20,6 +20,8 @@ import com.jme3.util.SafeArrayList; import com.simsilica.es.EntityData; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; @@ -28,8 +30,6 @@ import java.util.Map; import java.util.SortedMap; import java.util.TreeMap; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.game.controller.player.PlayerResearchControl; import toniarts.openkeeper.game.data.ActionPoint; @@ -89,7 +89,7 @@ */ public class GameController implements IGameLogicUpdatable, AutoCloseable, IGameTimer, ILevelInfo, IGameController { - private static final Logger LOGGER = Logger.getLogger(GameController.class.getName()); + private static final Logger LOGGER = System.getLogger(GameController.class.getName()); public static final int LEVEL_TIMER_MAX_COUNT = 16; private static final int LEVEL_FLAG_MAX_COUNT = 128; @@ -203,7 +203,7 @@ public void createNewGame() { kwdFile.load(); } } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Failed to load the map file!", ex); + LOGGER.log(Level.ERROR, "Failed to load the map file!", ex); throw new RuntimeException(level, ex); } @@ -550,7 +550,7 @@ public void setEnd(boolean win) { try { Main.getUserSettings().save(); } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Failed to save the level progress!", ex); + LOGGER.log(Level.ERROR, "Failed to save the level progress!", ex); } } } diff --git a/src/toniarts/openkeeper/game/controller/ObjectsController.java b/src/toniarts/openkeeper/game/controller/ObjectsController.java index cbe25417a..86d980590 100644 --- a/src/toniarts/openkeeper/game/controller/ObjectsController.java +++ b/src/toniarts/openkeeper/game/controller/ObjectsController.java @@ -19,11 +19,11 @@ import com.jme3.math.Vector3f; import com.simsilica.es.EntityData; import com.simsilica.es.EntityId; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.lang.ref.WeakReference; import java.util.Map; import java.util.WeakHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.component.ChickenAi; import toniarts.openkeeper.game.component.Decay; import toniarts.openkeeper.game.component.Food; @@ -67,7 +67,7 @@ */ public class ObjectsController implements IObjectsController { - private static final Logger LOGGER = Logger.getLogger(ObjectsController.class.getName()); + private static final Logger LOGGER = System.getLogger(ObjectsController.class.getName()); public final static short OBJECT_GOLD_ID = 1; //public final static short OBJECT_GOLD_BAG_ID = 2; diff --git a/src/toniarts/openkeeper/game/controller/RoomControllerFactory.java b/src/toniarts/openkeeper/game/controller/RoomControllerFactory.java index 03caf90e5..43fb6a1ac 100644 --- a/src/toniarts/openkeeper/game/controller/RoomControllerFactory.java +++ b/src/toniarts/openkeeper/game/controller/RoomControllerFactory.java @@ -16,9 +16,9 @@ */ package toniarts.openkeeper.game.controller; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.common.RoomInstance; import toniarts.openkeeper.game.controller.room.CasinoController; import toniarts.openkeeper.game.controller.room.CombatPitController; @@ -46,7 +46,7 @@ */ public final class RoomControllerFactory { - private static final Logger LOGGER = Logger.getLogger(RoomControllerFactory.class.getName()); + private static final Logger LOGGER = System.getLogger(RoomControllerFactory.class.getName()); private RoomControllerFactory() { // Nope diff --git a/src/toniarts/openkeeper/game/controller/TrapsController.java b/src/toniarts/openkeeper/game/controller/TrapsController.java index 94361c414..241f932d7 100644 --- a/src/toniarts/openkeeper/game/controller/TrapsController.java +++ b/src/toniarts/openkeeper/game/controller/TrapsController.java @@ -19,9 +19,9 @@ import com.jme3.math.Vector3f; import com.simsilica.es.EntityData; import com.simsilica.es.EntityId; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.component.Health; import toniarts.openkeeper.game.component.Interaction; import toniarts.openkeeper.game.component.Owner; @@ -48,7 +48,7 @@ */ public class TrapsController implements ITrapsController { - private static final Logger LOGGER = Logger.getLogger(TrapsController.class.getName()); + private static final Logger LOGGER = System.getLogger(TrapsController.class.getName()); private KwdFile kwdFile; private EntityData entityData; diff --git a/src/toniarts/openkeeper/game/controller/chicken/ChickenController.java b/src/toniarts/openkeeper/game/controller/chicken/ChickenController.java index 7bc15b208..a14545d3b 100644 --- a/src/toniarts/openkeeper/game/controller/chicken/ChickenController.java +++ b/src/toniarts/openkeeper/game/controller/chicken/ChickenController.java @@ -22,8 +22,8 @@ import com.simsilica.es.EntityData; import com.simsilica.es.EntityId; import java.awt.Point; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import toniarts.openkeeper.game.component.ChickenAi; import toniarts.openkeeper.game.component.Mobile; import toniarts.openkeeper.game.component.Navigation; @@ -49,7 +49,7 @@ */ public class ChickenController extends EntityController implements IChickenController { - private static final Logger LOGGER = Logger.getLogger(ChickenController.class.getName()); + private static final Logger LOGGER = System.getLogger(ChickenController.class.getName()); private final INavigationService navigationService; private final IGameTimer gameTimer; diff --git a/src/toniarts/openkeeper/game/controller/creature/CreatureController.java b/src/toniarts/openkeeper/game/controller/creature/CreatureController.java index de789e748..c538dc5dd 100644 --- a/src/toniarts/openkeeper/game/controller/creature/CreatureController.java +++ b/src/toniarts/openkeeper/game/controller/creature/CreatureController.java @@ -25,11 +25,11 @@ import com.simsilica.es.EntityData; import com.simsilica.es.EntityId; import java.awt.Point; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.component.Attack; import toniarts.openkeeper.game.component.AttackTarget; import toniarts.openkeeper.game.component.CreatureAi; @@ -93,7 +93,7 @@ */ public class CreatureController extends EntityController implements ICreatureController { - private static final Logger LOGGER = Logger.getLogger(CreatureController.class.getName()); + private static final Logger LOGGER = System.getLogger(CreatureController.class.getName()); private final INavigationService navigationService; private final ITaskManager taskManager; @@ -442,7 +442,7 @@ public void navigateToAssignedTask() { private boolean createNavigation(Point currentLocation, Point destination, Point faceTarget) { GraphPath path = navigationService.findPath(currentLocation, destination, this); if (path == null) { - LOGGER.log(Level.WARNING, "No path from {0} to {1}", new Object[]{getCreatureCoordinates(), destination}); + LOGGER.log(Level.WARNING, "No path from {0} to {1}", getCreatureCoordinates(), destination); return true; } entityData.setComponent(entityId, new Navigation(destination, faceTarget, SteeringUtils.pathToList(path))); diff --git a/src/toniarts/openkeeper/game/controller/entity/EntityController.java b/src/toniarts/openkeeper/game/controller/entity/EntityController.java index 9c002aa21..32dbb8388 100644 --- a/src/toniarts/openkeeper/game/controller/entity/EntityController.java +++ b/src/toniarts/openkeeper/game/controller/entity/EntityController.java @@ -20,8 +20,9 @@ import com.simsilica.es.EntityData; import com.simsilica.es.EntityId; import java.awt.Point; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.Objects; -import java.util.logging.Logger; import toniarts.openkeeper.game.component.CreatureSleep; import toniarts.openkeeper.game.component.Damage; import toniarts.openkeeper.game.component.Gold; @@ -46,7 +47,7 @@ */ public class EntityController implements IEntityController { - private static final Logger LOGGER = Logger.getLogger(EntityController.class.getName()); + private static final Logger LOGGER = System.getLogger(EntityController.class.getName()); protected final EntityId entityId; protected final EntityData entityData; @@ -165,7 +166,7 @@ private void removeRoomStorage(RoomStorage roomStorage, Position position, Entit return; } if (position == null) { - LOGGER.warning(() -> "Entity died and is part of room storage (" + roomStorage + ") but hasn't got location!"); + LOGGER.log(Level.WARNING, () -> "Entity died and is part of room storage (" + roomStorage + ") but hasn't got location!"); return; } diff --git a/src/toniarts/openkeeper/game/data/HiScores.java b/src/toniarts/openkeeper/game/data/HiScores.java index ae164b1d6..9fb442345 100644 --- a/src/toniarts/openkeeper/game/data/HiScores.java +++ b/src/toniarts/openkeeper/game/data/HiScores.java @@ -27,14 +27,14 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.AssetsConverter; /** @@ -104,7 +104,7 @@ public String toString() { } } - private static final Logger logger = Logger.getLogger(HiScores.class.getName()); + private static final Logger logger = System.getLogger(HiScores.class.getName()); private static final int NUMBER_OF_ENTRIES = 10; private static final String HISCORES_FILENAME = "HiScores.okh"; @@ -134,7 +134,7 @@ public static HiScores load() { return hiScores; } catch (IOException ex) { - logger.log(Level.SEVERE, "Failed to load HiScores data!", ex); + logger.log(Level.ERROR, "Failed to load HiScores data!", ex); return new HiScores(); } @@ -146,7 +146,7 @@ public void save() { BufferedOutputStream bout = new BufferedOutputStream(out)) { BinaryExporter.getInstance().save(this, bout); } catch (IOException ex) { - logger.log(Level.SEVERE, "Failed to save HiScores data!", ex); + logger.log(Level.ERROR, "Failed to save HiScores data!", ex); } } diff --git a/src/toniarts/openkeeper/game/data/Level.java b/src/toniarts/openkeeper/game/data/Level.java index 5a794d454..23c572a6e 100644 --- a/src/toniarts/openkeeper/game/data/Level.java +++ b/src/toniarts/openkeeper/game/data/Level.java @@ -17,8 +17,8 @@ package toniarts.openkeeper.game.data; import java.io.IOException; +import java.lang.System.Logger; import java.nio.file.Paths; -import java.util.logging.Logger; import javax.annotation.Nullable; import toniarts.openkeeper.Main; import toniarts.openkeeper.tools.convert.map.KwdFile; @@ -27,7 +27,7 @@ public class Level extends GeneralLevel { private KwdFile kwdFile; - private static final Logger logger = Logger.getLogger(Level.class.getName()); + private static final Logger logger = System.getLogger(Level.class.getName()); public enum LevelType { @@ -73,7 +73,7 @@ public KwdFile getKwdFile() { kwdFile = new KwdFile(Main.getDkIIFolder(), Paths.get(PathUtils.getRealFileName(Main.getDkIIFolder() + PathUtils.DKII_MAPS_FOLDER, getFileName() + ".kwd")), false); } catch (IOException ex) { - logger.log(java.util.logging.Level.SEVERE, "Failed to load the level file!", ex); + logger.log(Logger.Level.ERROR, "Failed to load the level file!", ex); } } return kwdFile; diff --git a/src/toniarts/openkeeper/game/data/Settings.java b/src/toniarts/openkeeper/game/data/Settings.java index fdac7f02f..23208b50f 100644 --- a/src/toniarts/openkeeper/game/data/Settings.java +++ b/src/toniarts/openkeeper/game/data/Settings.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.lang.System.Logger; import java.lang.reflect.Field; import java.nio.file.Files; import java.nio.file.Path; @@ -30,7 +31,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import static toniarts.openkeeper.Main.TITLE; import static toniarts.openkeeper.Main.getApplicationIcons; @@ -246,7 +246,7 @@ public static List getSettings(SettingCategory category) { private final Integer specialKey; // Control, Alt, Shift } - private static final Logger LOGGER = Logger.getLogger(Settings.class.getName()); + private static final Logger LOGGER = System.getLogger(Settings.class.getName()); private static final Settings INSTANCE; private static final int MAX_FPS = 200; @@ -276,7 +276,7 @@ private Settings(final AppSettings settings) { BufferedInputStream bin = new BufferedInputStream(in)) { settings.load(bin); } catch (IOException ex) { - LOGGER.log(java.util.logging.Level.WARNING, "Settings file failed to load from " + USER_SETTINGS_FILE + "!", ex); + LOGGER.log(Logger.Level.WARNING, "Settings file failed to load from " + USER_SETTINGS_FILE + "!", ex); } } this.settings.setFrameRate(Math.max(MAX_FPS, settings.getFrequency())); @@ -318,7 +318,7 @@ public static List getRenderers() { } } } catch (IllegalAccessException | IllegalArgumentException | SecurityException ex) { - LOGGER.severe(ex.getMessage()); + LOGGER.log(Logger.Level.ERROR, ex.getMessage()); } return renderers; @@ -334,7 +334,7 @@ public void save() throws IOException { BufferedOutputStream bout = new BufferedOutputStream(out)) { settings.save(bout); } catch (IOException ex) { - LOGGER.log(java.util.logging.Level.WARNING, "Settings file failed to save!", ex); + LOGGER.log(Logger.Level.WARNING, "Settings file failed to save!", ex); } } diff --git a/src/toniarts/openkeeper/game/logic/DeathSystem.java b/src/toniarts/openkeeper/game/logic/DeathSystem.java index c42d8ba37..7e62e7264 100644 --- a/src/toniarts/openkeeper/game/logic/DeathSystem.java +++ b/src/toniarts/openkeeper/game/logic/DeathSystem.java @@ -21,10 +21,10 @@ import com.simsilica.es.EntityData; import com.simsilica.es.EntityId; import com.simsilica.es.EntitySet; +import java.lang.System.Logger; import java.util.Collections; import java.util.Map; import java.util.Set; -import java.util.logging.Logger; import toniarts.openkeeper.game.component.Death; import toniarts.openkeeper.tools.convert.map.Variable; @@ -38,7 +38,7 @@ */ public class DeathSystem implements IGameLogicUpdatable { - private static final Logger LOGGER = Logger.getLogger(DeathSystem.class.getName()); + private static final Logger LOGGER = System.getLogger(DeathSystem.class.getName()); private final IEntityPositionLookup entityPositionLookup; private final EntitySet deathEntities; diff --git a/src/toniarts/openkeeper/game/logic/DecaySystem.java b/src/toniarts/openkeeper/game/logic/DecaySystem.java index c94025fde..05a2913f7 100644 --- a/src/toniarts/openkeeper/game/logic/DecaySystem.java +++ b/src/toniarts/openkeeper/game/logic/DecaySystem.java @@ -21,9 +21,9 @@ import com.simsilica.es.EntityData; import com.simsilica.es.EntityId; import com.simsilica.es.EntitySet; +import java.lang.System.Logger; import java.util.Collections; import java.util.Set; -import java.util.logging.Logger; import toniarts.openkeeper.game.component.Decay; import toniarts.openkeeper.game.component.Health; import toniarts.openkeeper.game.component.Position; @@ -36,7 +36,7 @@ */ public class DecaySystem implements IGameLogicUpdatable { - private static final Logger LOGGER = Logger.getLogger(DecaySystem.class.getName()); + private static final Logger LOGGER = System.getLogger(DecaySystem.class.getName()); private final EntitySet decayEntities; private final EntityData entityData; diff --git a/src/toniarts/openkeeper/game/logic/GameLogicManager.java b/src/toniarts/openkeeper/game/logic/GameLogicManager.java index 0a5be2271..a2aabf16c 100644 --- a/src/toniarts/openkeeper/game/logic/GameLogicManager.java +++ b/src/toniarts/openkeeper/game/logic/GameLogicManager.java @@ -16,9 +16,9 @@ */ package toniarts.openkeeper.game.logic; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.utils.IGameLoopManager; /** @@ -28,7 +28,7 @@ */ public class GameLogicManager implements IGameLoopManager { - private static final Logger LOGGER = Logger.getLogger(GameLogicManager.class.getName()); + private static final Logger LOGGER = System.getLogger(GameLogicManager.class.getName()); private long ticks = 0; private double timeElapsed = 0.0; @@ -57,13 +57,13 @@ public void processTick(long delta) { try { updatable.processTick(tpf, timeElapsed); } catch (Exception e) { - LOGGER.log(Level.SEVERE, "Error in game logic tick on " + updatable.getClass() + "!", e); + LOGGER.log(Level.ERROR, "Error in game logic tick on " + updatable.getClass() + "!", e); } } // Logging long tickTime = System.nanoTime() - start; - LOGGER.log(tickTime < delta ? Level.FINEST : Level.SEVERE, "Tick took {0} ms!", TimeUnit.MILLISECONDS.convert(tickTime, TimeUnit.NANOSECONDS)); + LOGGER.log(tickTime < delta ? Level.TRACE : Level.ERROR, "Tick took {0} ms!", TimeUnit.MILLISECONDS.convert(tickTime, TimeUnit.NANOSECONDS)); // Increase ticks & time timeElapsed += tpf; diff --git a/src/toniarts/openkeeper/game/logic/MovementSystem.java b/src/toniarts/openkeeper/game/logic/MovementSystem.java index 7b2218c7c..0ddd57b98 100644 --- a/src/toniarts/openkeeper/game/logic/MovementSystem.java +++ b/src/toniarts/openkeeper/game/logic/MovementSystem.java @@ -24,11 +24,11 @@ import com.simsilica.es.EntityId; import com.simsilica.es.EntitySet; import java.awt.Point; +import java.lang.System.Logger; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; -import java.util.logging.Logger; import toniarts.openkeeper.game.component.Mobile; import toniarts.openkeeper.game.component.Navigation; import toniarts.openkeeper.game.component.Position; @@ -45,7 +45,7 @@ */ public class MovementSystem implements IGameLogicUpdatable { - private static final Logger LOGGER = Logger.getLogger(MovementSystem.class.getName()); + private static final Logger LOGGER = System.getLogger(MovementSystem.class.getName()); private final static boolean INDEPENDENT_FACING = false; diff --git a/src/toniarts/openkeeper/game/navigation/NavigationService.java b/src/toniarts/openkeeper/game/navigation/NavigationService.java index 397212244..c3b1f762c 100644 --- a/src/toniarts/openkeeper/game/navigation/NavigationService.java +++ b/src/toniarts/openkeeper/game/navigation/NavigationService.java @@ -19,10 +19,11 @@ import com.badlogic.gdx.ai.pfa.DefaultGraphPath; import com.badlogic.gdx.ai.pfa.GraphPath; import java.awt.Point; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; -import java.util.logging.Logger; import toniarts.openkeeper.common.RoomInstance; import toniarts.openkeeper.game.controller.IMapController; import toniarts.openkeeper.game.logic.IEntityPositionLookup; @@ -40,7 +41,7 @@ */ public class NavigationService implements INavigationService { - private static final Logger LOGGER = Logger.getLogger(NavigationService.class.getName()); + private static final Logger LOGGER = System.getLogger(NavigationService.class.getName()); private final IMapController mapController; private final IEntityPositionLookup entityPositionLookup; @@ -67,7 +68,7 @@ public Point findRandomAccessibleTile(Point start, int radius, INavigable naviga public Point findRandomTileInRoom(Point start, int radius, INavigable navigable) { RoomInstance roomInstance = mapController.getRoomInstanceByCoordinates(start); if (roomInstance == null) { - LOGGER.warning(() -> "Starting point " + start + " is not in a room!"); + LOGGER.log(Level.WARNING, () -> "Starting point " + start + " is not in a room!"); return null; } Set allowedTiles = new HashSet<>(roomInstance.getCoordinates()); diff --git a/src/toniarts/openkeeper/game/network/LocalServerSearch.java b/src/toniarts/openkeeper/game/network/LocalServerSearch.java index 150f15781..3d1ea8558 100644 --- a/src/toniarts/openkeeper/game/network/LocalServerSearch.java +++ b/src/toniarts/openkeeper/game/network/LocalServerSearch.java @@ -16,6 +16,8 @@ */ package toniarts.openkeeper.game.network; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.net.Inet6Address; import java.net.InetAddress; import java.net.NetworkInterface; @@ -25,7 +27,6 @@ import java.util.Enumeration; import java.util.LinkedList; import java.util.List; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.ConversionUtils; /** @@ -35,7 +36,7 @@ @Deprecated public abstract class LocalServerSearch { - private static final Logger logger = Logger.getLogger(LocalServerSearch.class.getName()); + private static final Logger logger = System.getLogger(LocalServerSearch.class.getName()); private static final int nThreads = 10; @@ -79,7 +80,7 @@ private void addLocalHosts() { add(new NetworkServer(host, port)); } } catch (UnknownHostException ex) { - logger.log(java.util.logging.Level.SEVERE, null, ex); + logger.log(Level.ERROR, ex); } } diff --git a/src/toniarts/openkeeper/game/network/NetworkClient.java b/src/toniarts/openkeeper/game/network/NetworkClient.java index 1f4bff8b4..017f964b6 100644 --- a/src/toniarts/openkeeper/game/network/NetworkClient.java +++ b/src/toniarts/openkeeper/game/network/NetworkClient.java @@ -25,9 +25,9 @@ import com.simsilica.es.client.EntityDataClientService; import com.simsilica.ethereal.EtherealClient; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.network.chat.ChatClientService; import toniarts.openkeeper.game.network.chat.ChatSession; import toniarts.openkeeper.game.network.chat.ChatSessionListener; @@ -45,7 +45,7 @@ */ public class NetworkClient implements ChatSession { - private static final Logger LOGGER = Logger.getLogger(NetworkClient.class.getName()); + private static final Logger LOGGER = System.getLogger(NetworkClient.class.getName()); private final Client client; @@ -97,7 +97,7 @@ protected void sendPing() { } public void start() throws IOException { - LOGGER.info("Network: Player starting"); + LOGGER.log(Level.INFO, "Network: Player starting"); client.start(); } @@ -106,7 +106,7 @@ public T getService(Class type) { } public void close() { - LOGGER.info("Network: closing client connection"); + LOGGER.log(Level.INFO, "Network: closing client connection"); if (client != null && client.isConnected()) { client.close(); @@ -165,7 +165,7 @@ protected void onMessageServerInfo(MessageServerInfo msg) { } protected void onConnected() { - LOGGER.info("Network: Player connected"); + LOGGER.log(Level.INFO, "Network: Player connected"); } protected void onDisconnected(ClientStateListener.DisconnectInfo di) { diff --git a/src/toniarts/openkeeper/game/network/ServerQuery.java b/src/toniarts/openkeeper/game/network/ServerQuery.java index 4811147bf..7db323eeb 100644 --- a/src/toniarts/openkeeper/game/network/ServerQuery.java +++ b/src/toniarts/openkeeper/game/network/ServerQuery.java @@ -19,8 +19,10 @@ import com.jme3.network.Client; import com.jme3.network.Network; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.LinkedList; -import java.util.logging.Logger; + /** * @deprecated @@ -29,7 +31,7 @@ @Deprecated public abstract class ServerQuery extends Thread { - private static final Logger logger = Logger.getLogger(ServerQuery.class.getName()); + private static final Logger logger = System.getLogger(ServerQuery.class.getName()); private LinkedList queue; @@ -58,7 +60,7 @@ public void run() { onFound(server); client.close(); } catch (IOException ex) { - logger.log(java.util.logging.Level.SEVERE, String.format("No %s. %s", server.getHost(), ex.getLocalizedMessage())); + logger.log(Level.ERROR, String.format("No %s. %s", server.getHost(), ex.getLocalizedMessage())); } } } diff --git a/src/toniarts/openkeeper/game/network/chat/ChatClientService.java b/src/toniarts/openkeeper/game/network/chat/ChatClientService.java index c641027af..1f7f0abe2 100644 --- a/src/toniarts/openkeeper/game/network/chat/ChatClientService.java +++ b/src/toniarts/openkeeper/game/network/chat/ChatClientService.java @@ -38,10 +38,10 @@ import com.jme3.network.service.AbstractClientService; import com.jme3.network.service.ClientServiceManager; import com.jme3.network.service.rmi.RmiClientService; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.network.NetworkConstants; /** @@ -52,7 +52,7 @@ public class ChatClientService extends AbstractClientService implements ChatSession { - private static final Logger logger = Logger.getLogger(ChatClientService.class.getName()); + private static final Logger logger = System.getLogger(ChatClientService.class.getName()); private RmiClientService rmiService; private ChatSession delegate; @@ -85,12 +85,12 @@ public void removeChatSessionListener(ChatSessionListener l) { @Override protected void onInitialize(ClientServiceManager s) { - logger.log(Level.FINER, "onInitialize({0})", s); + logger.log(Level.TRACE, "onInitialize({0})", s); this.rmiService = getService(RmiClientService.class); if (rmiService == null) { throw new RuntimeException("ChatClientService requires RMI service"); } - logger.finer("Sharing session callback."); + logger.log(Level.TRACE, "Sharing session callback."); rmiService.share(NetworkConstants.CHAT_CHANNEL, sessionCallback, ChatSessionListener.class); } @@ -101,7 +101,7 @@ protected void onInitialize(ClientServiceManager s) { */ @Override public void start() { - logger.finer("start()"); + logger.log(Level.TRACE, "start()"); super.start(); } @@ -113,7 +113,7 @@ private ChatSession getDelegate() { if (delegate == null) { // Look it up this.delegate = rmiService.getRemoteObject(ChatSession.class); - logger.log(Level.FINER, "delegate:{0}", delegate); + logger.log(Level.TRACE, "delegate:{0}", delegate); if (delegate == null) { throw new RuntimeException("No chat session found"); } @@ -129,7 +129,7 @@ private class ChatSessionCallback implements ChatSessionListener { @Override public void playerJoined(int playerId, String playerName) { - logger.log(Level.FINEST, "playerJoined({0}, {1})", new Object[]{playerId, playerName}); + logger.log(Level.TRACE, "playerJoined({0}, {1})", new Object[]{playerId, playerName}); for (ChatSessionListener l : listeners) { l.playerJoined(playerId, playerName); } @@ -137,7 +137,7 @@ public void playerJoined(int playerId, String playerName) { @Override public void newMessage(int playerId, Short keeperId, String playerName, String message) { - logger.log(Level.FINEST, "newMessage({0}, {1}, {2})", new Object[]{playerId, playerName, message}); + logger.log(Level.TRACE, "newMessage({0}, {1}, {2})", new Object[]{playerId, playerName, message}); for (ChatSessionListener l : listeners) { l.newMessage(playerId, keeperId, playerName, message); } @@ -145,7 +145,7 @@ public void newMessage(int playerId, Short keeperId, String playerName, String m @Override public void playerLeft(int playerId, String playerName) { - logger.log(Level.FINEST, "playerLeft({0}, {1})", new Object[]{playerId, playerName}); + logger.log(Level.TRACE, "playerLeft({0}, {1})", new Object[]{playerId, playerName}); for (ChatSessionListener l : listeners) { l.playerLeft(playerId, playerName); } diff --git a/src/toniarts/openkeeper/game/network/chat/ChatHostedService.java b/src/toniarts/openkeeper/game/network/chat/ChatHostedService.java index 02f5122f9..b7765ea09 100644 --- a/src/toniarts/openkeeper/game/network/chat/ChatHostedService.java +++ b/src/toniarts/openkeeper/game/network/chat/ChatHostedService.java @@ -40,10 +40,10 @@ import com.jme3.network.service.HostedServiceManager; import com.jme3.network.service.rmi.RmiHostedService; import com.jme3.network.service.rmi.RmiRegistry; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.*; import java.util.concurrent.*; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.network.NetworkConstants; import static toniarts.openkeeper.game.network.lobby.LobbyHostedService.ATTRIBUTE_KEEPER_ID; @@ -56,7 +56,7 @@ */ public class ChatHostedService extends AbstractHostedConnectionService { - private static final Logger logger = Logger.getLogger(ChatHostedService.class.getName()); + private static final Logger logger = System.getLogger(ChatHostedService.class.getName()); private static final String ATTRIBUTE_SESSION = "chat.session"; @@ -92,7 +92,7 @@ protected void onInitialize(HostedServiceManager s) { * and will then be able to send/receive messages. */ public void startHostingOnConnection(HostedConnection conn, String playerName) { - logger.log(Level.FINER, "startHostingOnConnection({0})", conn); + logger.log(Level.TRACE, "startHostingOnConnection({0})", conn); ChatSessionImpl session = new ChatSessionImpl(conn, playerName); conn.setAttribute(ATTRIBUTE_SESSION, session); @@ -124,7 +124,7 @@ public void startHostingOnConnection(HostedConnection conn) { @Override public void stopHostingOnConnection(HostedConnection conn) { - logger.log(Level.FINER, "stopHostingOnConnection({0})", conn); + logger.log(Level.TRACE, "stopHostingOnConnection({0})", conn); ChatSessionImpl player = getChatSession(conn); if (player != null) { diff --git a/src/toniarts/openkeeper/game/network/game/GameClientService.java b/src/toniarts/openkeeper/game/network/game/GameClientService.java index daaa3cdef..539409583 100644 --- a/src/toniarts/openkeeper/game/network/game/GameClientService.java +++ b/src/toniarts/openkeeper/game/network/game/GameClientService.java @@ -29,10 +29,10 @@ import com.simsilica.es.EntityId; import com.simsilica.es.client.EntityDataClientService; import java.awt.Point; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.Collection; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.data.Keeper; import toniarts.openkeeper.game.data.ResearchableEntity; import toniarts.openkeeper.game.network.NetworkConstants; @@ -51,7 +51,7 @@ public class GameClientService extends AbstractClientService implements GameSessionClientService { - private static final Logger LOGGER = Logger.getLogger(GameClientService.class.getName()); + private static final Logger LOGGER = System.getLogger(GameClientService.class.getName()); private RmiClientService rmiService; private GameSession delegate; @@ -84,12 +84,12 @@ public void removeGameSessionListener(GameSessionListener l) { @Override protected void onInitialize(ClientServiceManager s) { - LOGGER.log(Level.FINER, "onInitialize({0})", s); + LOGGER.log(Level.TRACE, "onInitialize({0})", s); this.rmiService = getService(RmiClientService.class); if (rmiService == null) { throw new RuntimeException("GameClientService requires RMI service"); } - LOGGER.finer("Sharing session callback."); + LOGGER.log(Level.TRACE, "Sharing session callback."); rmiService.share(NetworkConstants.GAME_CHANNEL, sessionCallback, GameSessionListener.class); // Listen for the streaming messages @@ -113,7 +113,7 @@ protected void onInitialize(ClientServiceManager s) { */ @Override public void start() { - LOGGER.finer("start()"); + LOGGER.log(Level.TRACE, "start()"); super.start(); } @@ -125,7 +125,7 @@ private GameSession getDelegate() { if (delegate == null) { // Look it up this.delegate = rmiService.getRemoteObject(GameSession.class); - LOGGER.log(Level.FINER, "delegate:{0}", delegate); + LOGGER.log(Level.TRACE, "delegate:{0}", delegate); if (delegate == null) { throw new RuntimeException("No game session found"); } @@ -216,7 +216,7 @@ public ClientMessageListener() { public void messageReceived(Client source, Message message) { if (message instanceof GameLoadProgressData) { GameLoadProgressData data = (GameLoadProgressData) message; - LOGGER.log(Level.FINEST, "onLoadStatusUpdate({0},{1})", new Object[]{data.getProgress(), data.getKeeperId()}); + LOGGER.log(Level.TRACE, "onLoadStatusUpdate({0},{1})", new Object[]{data.getProgress(), data.getKeeperId()}); for (GameSessionListener l : listeners.getArray()) { l.onLoadStatusUpdate(data.getProgress(), data.getKeeperId()); } @@ -234,7 +234,7 @@ private class GameSessionCallback implements GameSessionListener { public void onGameDataLoaded(Collection players) { // This is dealt with streaming - LOGGER.log(Level.FINEST, "onGameDataLoaded({0})", new Object[]{players}); + LOGGER.log(Level.TRACE, "onGameDataLoaded({0})", new Object[]{players}); for (GameSessionListener l : listeners) { l.onGameDataLoaded(players); } @@ -242,7 +242,7 @@ public void onGameDataLoaded(Collection players) { @Override public void onGameStarted() { - LOGGER.log(Level.FINEST, "onGameStarted()"); + LOGGER.log(Level.TRACE, "onGameStarted()"); for (GameSessionListener l : listeners.getArray()) { l.onGameStarted(); } @@ -250,7 +250,7 @@ public void onGameStarted() { @Override public void onLoadComplete(short keeperId) { - LOGGER.log(Level.FINEST, "onLoadComplete({0})", new Object[]{keeperId}); + LOGGER.log(Level.TRACE, "onLoadComplete({0})", new Object[]{keeperId}); for (GameSessionListener l : listeners.getArray()) { l.onLoadComplete(keeperId); } diff --git a/src/toniarts/openkeeper/game/network/game/GameHostedService.java b/src/toniarts/openkeeper/game/network/game/GameHostedService.java index 01cf1ae3d..33919979f 100644 --- a/src/toniarts/openkeeper/game/network/game/GameHostedService.java +++ b/src/toniarts/openkeeper/game/network/game/GameHostedService.java @@ -31,13 +31,13 @@ import com.simsilica.es.EntityId; import com.simsilica.es.server.EntityDataHostedService; import java.awt.Point; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.data.Keeper; import toniarts.openkeeper.game.data.ResearchableEntity; import toniarts.openkeeper.game.network.NetworkConstants; @@ -66,7 +66,7 @@ public enum MessageType { GAME_LOAD_PROGRESS } - private static final Logger LOGGER = Logger.getLogger(GameHostedService.class.getName()); + private static final Logger LOGGER = System.getLogger(GameHostedService.class.getName()); private boolean readyToLoad = false; private final Object loadLock = new Object(); @@ -111,7 +111,7 @@ public void terminate(HostedServiceManager serviceManager) { try { entityUpdater.awaitTermination(1, TimeUnit.MINUTES); } catch (InterruptedException ex) { - LOGGER.log(Level.SEVERE, "Failed to wait for the entity updater to shutdown!", ex); + LOGGER.log(Level.ERROR, "Failed to wait for the entity updater to shutdown!", ex); } } } @@ -121,7 +121,7 @@ public void terminate(HostedServiceManager serviceManager) { * generated player name. */ public void startHostingOnConnection(HostedConnection conn, ClientInfo clientInfo) { - LOGGER.log(Level.FINER, "startHostingOnConnection({0})", conn); + LOGGER.log(Level.TRACE, "startHostingOnConnection({0})", conn); GameSessionImpl session = new GameSessionImpl(conn, clientInfo); players.put(clientInfo, session); @@ -140,7 +140,7 @@ public void startHostingOnConnection(HostedConnection conn) { @Override public void stopHostingOnConnection(HostedConnection conn) { - LOGGER.log(Level.FINER, "stopHostingOnConnection({0})", conn); + LOGGER.log(Level.TRACE, "stopHostingOnConnection({0})", conn); GameSessionImpl player = getGameSession(conn); if (player != null) { @@ -387,7 +387,7 @@ public void messageReceived(HostedConnection source, Message message) { if (message instanceof GameLoadProgressData) { GameLoadProgressData data = (GameLoadProgressData) message; - LOGGER.log(Level.FINEST, "onLoadStatus({0},{1})", new Object[]{data.getProgress(), clientInfo.getKeeper().getId()}); + LOGGER.log(Level.TRACE, "onLoadStatus({0},{1})", new Object[]{data.getProgress(), clientInfo.getKeeper().getId()}); clientInfo.setLoadingProgress(data.getProgress()); diff --git a/src/toniarts/openkeeper/game/network/lobby/LobbyClientService.java b/src/toniarts/openkeeper/game/network/lobby/LobbyClientService.java index 2613c7cce..865e24217 100644 --- a/src/toniarts/openkeeper/game/network/lobby/LobbyClientService.java +++ b/src/toniarts/openkeeper/game/network/lobby/LobbyClientService.java @@ -19,10 +19,10 @@ import com.jme3.network.service.AbstractClientService; import com.jme3.network.service.ClientServiceManager; import com.jme3.network.service.rmi.RmiClientService; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.logging.Level; -import java.util.logging.Logger; import java.util.stream.Collectors; import toniarts.openkeeper.game.network.NetworkConstants; import toniarts.openkeeper.game.state.lobby.ClientInfo; @@ -37,7 +37,7 @@ public class LobbyClientService extends AbstractClientService implements toniarts.openkeeper.game.state.lobby.LobbyClientService { - private static final Logger logger = Logger.getLogger(LobbyClientService.class.getName()); + private static final Logger logger = System.getLogger(LobbyClientService.class.getName()); private RmiClientService rmiService; private LobbySession delegate; @@ -84,12 +84,12 @@ public void removeLobbySessionListener(LobbySessionListener l) { @Override protected void onInitialize(ClientServiceManager s) { - logger.log(Level.FINER, "onInitialize({0})", s); + logger.log(Level.TRACE, "onInitialize({0})", s); this.rmiService = getService(RmiClientService.class); if (rmiService == null) { throw new RuntimeException("LobbyClientService requires RMI service"); } - logger.finer("Sharing session callback."); + logger.log(Level.TRACE, "Sharing session callback."); rmiService.share(NetworkConstants.LOBBY_CHANNEL, sessionCallback, LobbySessionListener.class); } @@ -100,7 +100,7 @@ protected void onInitialize(ClientServiceManager s) { */ @Override public void start() { - logger.finer("start()"); + logger.log(Level.TRACE, "start()"); super.start(); } @@ -112,7 +112,7 @@ private LobbySession getDelegate() { if (delegate == null) { // Look it up this.delegate = rmiService.getRemoteObject(LobbySession.class); - logger.log(Level.FINER, "delegate:{0}", delegate); + logger.log(Level.TRACE, "delegate:{0}", delegate); if (delegate == null) { throw new RuntimeException("No lobby session found"); } @@ -128,7 +128,7 @@ private class LobbySessionCallback implements LobbySessionListener { @Override public void onMapChanged(String mapName) { - logger.log(Level.FINEST, "mapChanged({0})", new Object[]{mapName}); + logger.log(Level.TRACE, "mapChanged({0})", new Object[]{mapName}); for (LobbySessionListener l : listeners) { l.onMapChanged(mapName); } @@ -136,7 +136,7 @@ public void onMapChanged(String mapName) { @Override public void onPlayerListChanged(List players) { - logger.log(Level.FINEST, "onPlayerListChanged({0})", new Object[]{players.stream().map(Object::toString) + logger.log(Level.TRACE, "onPlayerListChanged({0})", new Object[]{players.stream().map(Object::toString) .collect(Collectors.joining(", "))}); for (LobbySessionListener l : listeners) { l.onPlayerListChanged(players); @@ -145,7 +145,7 @@ public void onPlayerListChanged(List players) { @Override public void onGameStarted(String mapName, List players) { - logger.log(Level.FINEST, "onGameStarted({0})", new Object[]{mapName}); + logger.log(Level.TRACE, "onGameStarted({0})", new Object[]{mapName}); for (LobbySessionListener l : listeners) { l.onGameStarted(mapName, players); } diff --git a/src/toniarts/openkeeper/game/network/lobby/LobbyHostedService.java b/src/toniarts/openkeeper/game/network/lobby/LobbyHostedService.java index 6ec78029e..ccabcfff1 100644 --- a/src/toniarts/openkeeper/game/network/lobby/LobbyHostedService.java +++ b/src/toniarts/openkeeper/game/network/lobby/LobbyHostedService.java @@ -24,10 +24,10 @@ import com.simsilica.es.server.EntityDataHostedService; import com.simsilica.ethereal.EtherealHost; import com.simsilica.ethereal.NetworkStateListener; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.*; import java.util.concurrent.*; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.data.Keeper; import toniarts.openkeeper.game.network.NetworkConstants; import toniarts.openkeeper.game.network.game.GameHostedService; @@ -46,7 +46,7 @@ */ public class LobbyHostedService extends AbstractHostedConnectionService implements LobbyService { - private static final Logger LOGGER = Logger.getLogger(LobbyHostedService.class.getName()); + private static final Logger LOGGER = System.getLogger(LobbyHostedService.class.getName()); private static final String ATTRIBUTE_SESSION = "lobby.session"; public static final String ATTRIBUTE_KEEPER_ID = "lobby.keeperID"; @@ -88,7 +88,7 @@ protected void onInitialize(HostedServiceManager s) { * and will then be able to send/receive messages. */ public void startHostingOnConnection(HostedConnection conn, String playerName) { - LOGGER.log(Level.FINER, "startHostingOnConnection({0})", conn); + LOGGER.log(Level.TRACE, "startHostingOnConnection({0})", conn); boolean playerAdded = false; if (players.size() < maxPlayers && !gameStarted) { @@ -136,7 +136,7 @@ public void startHostingOnConnection(HostedConnection conn) { @Override public void stopHostingOnConnection(HostedConnection conn) { - LOGGER.log(Level.FINER, "stopHostingOnConnection({0})", conn); + LOGGER.log(Level.TRACE, "stopHostingOnConnection({0})", conn); LobbySessionImpl player = getLobbySession(conn); if (player != null) { diff --git a/src/toniarts/openkeeper/game/network/session/AccountClientService.java b/src/toniarts/openkeeper/game/network/session/AccountClientService.java index 478ac50fd..c57c6d58b 100644 --- a/src/toniarts/openkeeper/game/network/session/AccountClientService.java +++ b/src/toniarts/openkeeper/game/network/session/AccountClientService.java @@ -38,9 +38,10 @@ import com.jme3.network.service.AbstractClientService; import com.jme3.network.service.ClientServiceManager; import com.jme3.network.service.rmi.RmiClientService; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.logging.Level; import toniarts.openkeeper.game.network.NetworkConstants; /** @@ -54,7 +55,7 @@ public class AccountClientService extends AbstractClientService implements AccountSession { - private static final java.util.logging.Logger logger = java.util.logging.Logger.getLogger(AccountClientService.class.getName()); + private static final Logger logger = System.getLogger(AccountClientService.class.getName()); private RmiClientService rmiService; private AccountSession delegate; @@ -87,12 +88,12 @@ public void removeAccountSessionListener(AccountSessionListener l) { @Override protected void onInitialize(ClientServiceManager s) { - logger.log(Level.FINER, "onInitialize({0})", s); + logger.log(Level.TRACE, "onInitialize({0})", s); this.rmiService = getService(RmiClientService.class); if (rmiService == null) { throw new RuntimeException("AccountClientService requires RMI service"); } - logger.finer("Sharing session callback."); + logger.log(Level.TRACE, "Sharing session callback."); rmiService.share(NetworkConstants.LOBBY_CHANNEL, sessionCallback, AccountSessionListener.class); } @@ -103,10 +104,10 @@ protected void onInitialize(ClientServiceManager s) { */ @Override public void start() { - logger.finer("start()"); + logger.log(Level.TRACE, "start()"); super.start(); this.delegate = rmiService.getRemoteObject(AccountSession.class); - logger.log(Level.FINER, "delegate:{0}", delegate); + logger.log(Level.TRACE, "delegate:{0}", delegate); if (delegate == null) { throw new RuntimeException("No account session found during connection setup"); } @@ -120,7 +121,7 @@ private class AccountSessionCallback implements AccountSessionListener { @Override public void notifyLoginStatus(boolean loggedIn) { - logger.log(Level.FINEST, "notifyLoginStatus({0})", loggedIn); + logger.log(Level.TRACE, "notifyLoginStatus({0})", loggedIn); for (AccountSessionListener l : listeners) { l.notifyLoginStatus(loggedIn); } diff --git a/src/toniarts/openkeeper/game/network/session/AccountHostedService.java b/src/toniarts/openkeeper/game/network/session/AccountHostedService.java index dd653c1dd..1a5f29a2e 100644 --- a/src/toniarts/openkeeper/game/network/session/AccountHostedService.java +++ b/src/toniarts/openkeeper/game/network/session/AccountHostedService.java @@ -41,7 +41,8 @@ import com.jme3.network.service.rmi.RmiHostedService; import com.jme3.network.service.rmi.RmiRegistry; import com.simsilica.event.EventBus; -import java.util.logging.Level; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import toniarts.openkeeper.game.network.NetworkConstants; import toniarts.openkeeper.game.network.chat.ChatHostedService; import toniarts.openkeeper.game.network.lobby.LobbyHostedService; @@ -56,7 +57,7 @@ */ public class AccountHostedService extends AbstractHostedConnectionService { - private static final java.util.logging.Logger logger = java.util.logging.Logger.getLogger(AccountHostedService.class.getName()); + private static final Logger logger = System.getLogger(AccountHostedService.class.getName()); private static final String ATTRIBUTE_SESSION = "account.session"; private static final String ATTRIBUTE_PLAYER_NAME = "account.playerName"; @@ -87,7 +88,7 @@ protected void onInitialize(HostedServiceManager s) { @Override public void startHostingOnConnection(HostedConnection conn) { - logger.log(Level.FINER, "startHostingOnConnection({0})", conn); + logger.log(Level.TRACE, "startHostingOnConnection({0})", conn); AccountSessionImpl session = new AccountSessionImpl(conn); conn.setAttribute(ATTRIBUTE_SESSION, session); @@ -99,10 +100,10 @@ public void startHostingOnConnection(HostedConnection conn) { @Override public void stopHostingOnConnection(HostedConnection conn) { - logger.log(Level.FINER, "stopHostingOnConnection({0})", conn); + logger.log(Level.TRACE, "stopHostingOnConnection({0})", conn); String playerName = getPlayerName(conn); if (playerName != null) { - logger.log(Level.FINER, "publishing playerLoggedOff event for:{0}", conn); + logger.log(Level.TRACE, "publishing playerLoggedOff event for:{0}", conn); // Was really logged on before EventBus.publish(AccountEvent.playerLoggedOff, new AccountEvent(conn, playerName)); } @@ -152,7 +153,7 @@ public void login(String playerName, int systemMemory) { // And let them know they were successful getCallback().notifyLoginStatus(true); - logger.log(Level.FINER, "publishing playerLoggedOn event for: {0}", conn); + logger.log(Level.TRACE, "publishing playerLoggedOn event for: {0}", conn); // Notify 'logged in' only after we've told the player themselves // EventBus.publish(AccountEvent.playerLoggedOn, new AccountEvent(conn, playerName)); diff --git a/src/toniarts/openkeeper/game/network/streaming/StreamingClientService.java b/src/toniarts/openkeeper/game/network/streaming/StreamingClientService.java index 1d0dae294..da5815f62 100644 --- a/src/toniarts/openkeeper/game/network/streaming/StreamingClientService.java +++ b/src/toniarts/openkeeper/game/network/streaming/StreamingClientService.java @@ -23,14 +23,14 @@ import com.jme3.network.service.AbstractClientService; import com.jme3.network.service.ClientServiceManager; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.ByteBuffer; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.network.message.StreamedMessage; /** @@ -41,7 +41,7 @@ */ public class StreamingClientService extends AbstractClientService { - private static final Logger logger = Logger.getLogger(StreamingClientService.class.getName()); + private static final Logger logger = System.getLogger(StreamingClientService.class.getName()); private final Map> messageReceiveMap = new ConcurrentHashMap<>(); private final MessageListener messageListener = new StreamedMessageServiceListenerImpl(); @@ -124,7 +124,7 @@ public void messageReceived(Client source, Message m) { listener.onMessageReceived(data); } } catch (IOException ex) { - logger.log(Level.SEVERE, "Failed to deserialize the data payload!", ex); + logger.log(Level.ERROR, "Failed to deserialize the data payload!", ex); } } messageBuffers.remove(message.getMessageType()); diff --git a/src/toniarts/openkeeper/game/network/streaming/StreamingHostedService.java b/src/toniarts/openkeeper/game/network/streaming/StreamingHostedService.java index dd2b984f1..974b719bd 100644 --- a/src/toniarts/openkeeper/game/network/streaming/StreamingHostedService.java +++ b/src/toniarts/openkeeper/game/network/streaming/StreamingHostedService.java @@ -21,8 +21,8 @@ import com.jme3.network.service.AbstractHostedService; import com.jme3.network.service.HostedServiceManager; import java.io.IOException; +import java.lang.System.Logger; import java.nio.ByteBuffer; -import java.util.logging.Logger; import toniarts.openkeeper.game.network.message.StreamedMessage; /** @@ -35,7 +35,7 @@ */ public class StreamingHostedService extends AbstractHostedService { - private static final Logger logger = Logger.getLogger(StreamingHostedService.class.getName()); + private static final Logger logger = System.getLogger(StreamingHostedService.class.getName()); private static final int MAX_MESSAGE_SIZE = 30000; private static final int MAX_TOTAL_SIZE = 10000000; diff --git a/src/toniarts/openkeeper/game/sound/GlobalCategory.java b/src/toniarts/openkeeper/game/sound/GlobalCategory.java index 1896fdf58..1b68052e2 100644 --- a/src/toniarts/openkeeper/game/sound/GlobalCategory.java +++ b/src/toniarts/openkeeper/game/sound/GlobalCategory.java @@ -16,11 +16,13 @@ */ package toniarts.openkeeper.game.sound; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; + + /** * @@ -28,7 +30,7 @@ */ public class GlobalCategory { - private static final Logger LOGGER = Logger.getLogger(GlobalCategory.class.getName()); + private static final Logger LOGGER = System.getLogger(GlobalCategory.class.getName()); public static final String AMBIENCE = "AMBIENCE"; public static final String EFFECTS = "EFFECTS"; @@ -75,7 +77,7 @@ public static List getCategories() { } } } catch (IllegalAccessException | IllegalArgumentException | SecurityException ex) { - LOGGER.log(Level.SEVERE, ex.getMessage(), ex); + LOGGER.log(Level.ERROR, ex.getMessage(), ex); } return categories; diff --git a/src/toniarts/openkeeper/game/sound/SoundCategory.java b/src/toniarts/openkeeper/game/sound/SoundCategory.java index 0146966e6..19bdff054 100644 --- a/src/toniarts/openkeeper/game/sound/SoundCategory.java +++ b/src/toniarts/openkeeper/game/sound/SoundCategory.java @@ -18,13 +18,13 @@ import java.io.File; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.HashMap; import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.annotation.Nullable; import toniarts.openkeeper.game.data.IIndexable; import toniarts.openkeeper.tools.convert.sound.BankMapFile; @@ -40,7 +40,7 @@ */ public class SoundCategory { - private static final Logger LOGGER = Logger.getLogger(SoundCategory.class.getName()); + private static final Logger LOGGER = System.getLogger(SoundCategory.class.getName()); public static final String SPEECH_MENTOR = "SPEECH_MENTOR"; public static final String SPEECH_MULTIPLAYER = "SPEECH_MULTIPLAYER"; @@ -95,9 +95,9 @@ public SfxMapFile getSfxMapFile() { return new SfxMapFile(f); } catch (IOException ex) { - LOGGER.log(Level.SEVERE, ex, () -> { + LOGGER.log(Level.ERROR, () -> { return String.format("Sfx file of category {0} does not exist", name); - }); + }, ex); } return null; diff --git a/src/toniarts/openkeeper/game/sound/SoundGroup.java b/src/toniarts/openkeeper/game/sound/SoundGroup.java index 1d73d5f75..1a9abba54 100644 --- a/src/toniarts/openkeeper/game/sound/SoundGroup.java +++ b/src/toniarts/openkeeper/game/sound/SoundGroup.java @@ -17,11 +17,11 @@ package toniarts.openkeeper.game.sound; import java.io.File; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.sound.BankMapFile; import toniarts.openkeeper.tools.convert.sound.SdtFile; import toniarts.openkeeper.tools.convert.sound.sfx.SfxEEEntry; @@ -35,7 +35,7 @@ */ public class SoundGroup { - private static final Logger LOGGER = Logger.getLogger(SoundGroup.class.getName()); + private static final Logger LOGGER = System.getLogger(SoundGroup.class.getName()); private final SoundCategory category; private final SfxGroupEntry entry; @@ -88,9 +88,9 @@ private void parseFiles() { SoundFile sf = new SoundFile(this, soundId, soundFilename); files.add(sf); } catch (Exception ex) { - LOGGER.log(Level.SEVERE, ex, () -> { + LOGGER.log(Level.ERROR, () -> { return "Error in file " + sdt.getFile().toString() + " with id " + soundId; - }); + }, ex); } } } diff --git a/src/toniarts/openkeeper/game/state/CheatState.java b/src/toniarts/openkeeper/game/state/CheatState.java index d0c8fda3b..3087c7dd3 100644 --- a/src/toniarts/openkeeper/game/state/CheatState.java +++ b/src/toniarts/openkeeper/game/state/CheatState.java @@ -26,8 +26,8 @@ import com.jme3.input.event.MouseButtonEvent; import com.jme3.input.event.MouseMotionEvent; import com.jme3.input.event.TouchEvent; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import javax.annotation.Nonnull; /** @@ -37,7 +37,7 @@ */ public abstract class CheatState extends AbstractPauseAwareState implements RawInputListener { - private static final Logger LOGGER = Logger.getLogger(CheatState.class.getName()); + private static final Logger LOGGER = System.getLogger(CheatState.class.getName()); private final Application app; private String cheat = ""; diff --git a/src/toniarts/openkeeper/game/state/ConnectionState.java b/src/toniarts/openkeeper/game/state/ConnectionState.java index 9a71b6203..e7bc936ff 100644 --- a/src/toniarts/openkeeper/game/state/ConnectionState.java +++ b/src/toniarts/openkeeper/game/state/ConnectionState.java @@ -26,10 +26,10 @@ import com.jme3.network.service.ClientService; import com.simsilica.ethereal.EtherealClient; import com.simsilica.ethereal.TimeSource; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.game.network.NetworkClient; import toniarts.openkeeper.game.network.NetworkServer; @@ -51,7 +51,7 @@ */ public class ConnectionState extends AbstractAppState { - private static final Logger LOGGER = Logger.getLogger(ConnectionState.class.getName()); + private static final Logger LOGGER = System.getLogger(ConnectionState.class.getName()); private Main app; private String serverInfo; @@ -145,9 +145,9 @@ public GameClientService getGameClientService() { } public void disconnect() { - LOGGER.info("disconnect()"); + LOGGER.log(Level.INFO, "disconnect()"); closing = true; - LOGGER.info("Detaching ConnectionState"); + LOGGER.log(Level.INFO, "Detaching ConnectionState"); stateManager.detach(this); } @@ -207,14 +207,14 @@ public void removeConnectionErrorListener(ConnectionErrorListener listener) { } protected void onConnected() { - LOGGER.info("onConnected()"); + LOGGER.log(Level.INFO, "onConnected()"); // Add our client listeners client.getService(AccountClientService.class).addAccountSessionListener(new AccountObserver()); serverInfo = client.getService(AccountClientService.class).getServerInfo(); - LOGGER.log(Level.FINER, "Server info:{0}", serverInfo); + LOGGER.log(Level.TRACE, "Server info:{0}", serverInfo); LOGGER.log(Level.INFO, "join({0})", playerName); @@ -252,7 +252,7 @@ public void clientDisconnected(final Client c, final DisconnectInfo info) { @Override public void handleError(Client source, Throwable t) { - LOGGER.log(Level.SEVERE, "Connection error", t); + LOGGER.log(Level.ERROR, "Connection error", t); showError("Connection Error", t, true); } } @@ -286,7 +286,7 @@ public void run() { LOGGER.log(Level.INFO, "Creating game server {0} at {1}", new Object[]{gameName, port}); server = new NetworkServer(gameName, port); server.start(); - LOGGER.info("Server started."); + LOGGER.log(Level.INFO, "Server started."); } LOGGER.log(Level.INFO, "Creating game client for: {0} {1}", new Object[]{gameHost ? "localhost" : host, port}); @@ -300,9 +300,9 @@ public void run() { return; } - LOGGER.info("Starting client..."); + LOGGER.log(Level.INFO, "Starting client..."); client.start(); - LOGGER.info("Client started."); + LOGGER.log(Level.INFO, "Client started."); } catch (Exception e) { if (closing) { disconnect(); diff --git a/src/toniarts/openkeeper/game/state/GameClientState.java b/src/toniarts/openkeeper/game/state/GameClientState.java index 5e84c7d1c..d4e938160 100644 --- a/src/toniarts/openkeeper/game/state/GameClientState.java +++ b/src/toniarts/openkeeper/game/state/GameClientState.java @@ -23,13 +23,13 @@ import com.jme3.math.Vector3f; import com.simsilica.es.EntityId; import java.awt.Point; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.TreeMap; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.game.controller.IPlayerController; import toniarts.openkeeper.game.controller.PlayerController; @@ -61,7 +61,7 @@ */ public class GameClientState extends AbstractPauseAwareState { - private static final Logger LOGGER = Logger.getLogger(GameClientState.class.getName()); + private static final Logger LOGGER = System.getLogger(GameClientState.class.getName()); private Main app; @@ -249,7 +249,7 @@ private void onGameLoad() { } } catch (Exception e) { - LOGGER.log(Level.SEVERE, "Failed to load the game!", e); + LOGGER.log(Level.ERROR, "Failed to load the game!", e); } } @@ -355,7 +355,7 @@ protected void updateProgress(float progress) { try { mapDataLoadingObject.wait(); } catch (InterruptedException ex) { - Logger.getLogger(GameClientState.class.getName()).log(Level.SEVERE, "Map data loading interrupted!", ex); + System.getLogger(GameClientState.class.getName()).log(Level.ERROR, "Map data loading interrupted!", ex); } } } diff --git a/src/toniarts/openkeeper/game/state/GameServerState.java b/src/toniarts/openkeeper/game/state/GameServerState.java index 8409e90bf..54985219b 100644 --- a/src/toniarts/openkeeper/game/state/GameServerState.java +++ b/src/toniarts/openkeeper/game/state/GameServerState.java @@ -22,9 +22,9 @@ import com.jme3.math.Vector2f; import com.simsilica.es.EntityId; import java.awt.Point; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.game.controller.GameController; import toniarts.openkeeper.game.controller.IGameWorldController; @@ -53,7 +53,7 @@ */ public class GameServerState extends AbstractAppState { - private static final Logger LOGGER = Logger.getLogger(GameServerState.class.getName()); + private static final Logger LOGGER = System.getLogger(GameServerState.class.getName()); private Main app; @@ -145,7 +145,7 @@ public void detach() { try { gameController.close(); } catch (Exception ex) { - LOGGER.log(Level.SEVERE, "Failed to close the game!", ex); + LOGGER.log(Level.ERROR, "Failed to close the game!", ex); } } } @@ -223,7 +223,7 @@ public void onStartGame() { try { loadingObject.wait(); } catch (InterruptedException ex) { - LOGGER.log(Level.SEVERE, "Failed to load the game.", ex); + LOGGER.log(Level.ERROR, "Failed to load the game.", ex); } } } diff --git a/src/toniarts/openkeeper/game/state/GameState.java b/src/toniarts/openkeeper/game/state/GameState.java index c481ffea7..460c03d7d 100644 --- a/src/toniarts/openkeeper/game/state/GameState.java +++ b/src/toniarts/openkeeper/game/state/GameState.java @@ -20,6 +20,8 @@ import com.jme3.app.Application; import com.jme3.app.state.AppStateManager; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; @@ -28,8 +30,6 @@ import java.util.Map.Entry; import java.util.TreeMap; import java.util.concurrent.ThreadFactory; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.annotation.Nullable; import toniarts.openkeeper.Main; import toniarts.openkeeper.game.data.GameResult; @@ -66,7 +66,7 @@ @Deprecated public class GameState extends AbstractPauseAwareState implements IGameLogicUpdatable { - private static final Logger logger = Logger.getLogger(GameState.class.getName()); + private static final Logger logger = System.getLogger(GameState.class.getName()); public static final int LEVEL_TIMER_MAX_COUNT = 16; private static final int LEVEL_FLAG_MAX_COUNT = 128; @@ -236,7 +236,7 @@ public Thread newThread(Runnable r) { setProgress(1.0f, Player.KEEPER1_ID); } catch (Exception e) { - logger.log(Level.SEVERE, "Failed to load the game!", e); + logger.log(Level.ERROR, "Failed to load the game!", e); } } @@ -494,7 +494,7 @@ public void setEnd(boolean win) { try { Main.getUserSettings().save(); } catch (IOException ex) { - logger.log(Level.SEVERE, "Failed to save the level progress!", ex); + logger.log(Level.ERROR, "Failed to save the level progress!", ex); } } } diff --git a/src/toniarts/openkeeper/game/state/MainMenuScreenController.java b/src/toniarts/openkeeper/game/state/MainMenuScreenController.java index af082404c..c842a4cbd 100644 --- a/src/toniarts/openkeeper/game/state/MainMenuScreenController.java +++ b/src/toniarts/openkeeper/game/state/MainMenuScreenController.java @@ -46,12 +46,12 @@ import java.awt.GraphicsEnvironment; import java.io.File; import java.io.IOException; +import java.lang.System.Logger; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.ResourceBundle; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.game.MapSelector; import toniarts.openkeeper.game.data.CustomMPDLevel; @@ -93,7 +93,7 @@ */ public class MainMenuScreenController implements IMainMenuScreenController { - private static final Logger LOGGER = Logger.getLogger(MainMenuScreenController.class.getName()); + private static final Logger LOGGER = System.getLogger(MainMenuScreenController.class.getName()); private final MainMenuState state; private Nifty nifty; @@ -191,7 +191,7 @@ public void multiplayerConnect() { /* ListBox games = screen.findNiftyControl("multiplayerGamesTable", ListBox.class); if (games == null) { - logger.warning("Element multiplayerGamesTable not found"); + logger.log(Level.WARNING, "Element multiplayerGamesTable not found"); return; } TableRow row = games.getFocusItem(); @@ -234,7 +234,7 @@ public void multiplayerRefresh() { ListBox games = screen.findNiftyControl("multiplayerGamesTable", ListBox.class); if (games == null) { - logger.warning("Element multiplayerGamesTable not found"); + logger.log(Level.WARNING, "Element multiplayerGamesTable not found"); return; } games.clear(); @@ -1130,7 +1130,7 @@ public void applySoundSettings() { Main.setupNiftySound(nifty); Settings.getInstance().save(); } catch (IOException ex) { - LOGGER.log(java.util.logging.Level.SEVERE, null, ex); + LOGGER.log(Logger.Level.ERROR, ex); } nifty.gotoScreen(SCREEN_OPTIONS_MAIN_ID); @@ -1222,7 +1222,7 @@ private void showBriefing() { mainObjectiveImage.setHeight(img.getHeight()); mainObjectiveImage.show(); } catch (Exception e) { - LOGGER.warning("Can't find image " + objectiveImage.replace("$index", "0")); + LOGGER.log(Logger.Level.WARNING, "Can't find image " + objectiveImage.replace("$index", "0")); mainObjectiveImage.hide(); } @@ -1250,7 +1250,7 @@ private void showBriefing() { subObjectiveImage.setHeight(img.getHeight()); subObjectiveImage.show(); } catch (Exception e) { - LOGGER.log(java.util.logging.Level.WARNING, "Can't find image {0}", objectiveImage.replace("$index", "1")); + LOGGER.log(Logger.Level.WARNING, "Can't find image {0}", objectiveImage.replace("$index", "1")); subObjectiveImage.hide(); } @@ -1288,7 +1288,7 @@ public void showDebriefing(GameResult result) { mainObjectiveImage.setHeight(img.getHeight()); mainObjectiveImage.show(); } catch (Exception e) { - LOGGER.warning("Can't find image " + objectiveImage.replace("$index", "0")); + LOGGER.log(Logger.Level.WARNING, "Can't find image " + objectiveImage.replace("$index", "0")); mainObjectiveImage.hide(); } @@ -1306,7 +1306,7 @@ public void showDebriefing(GameResult result) { subObjectiveImage.setHeight(img.getHeight()); subObjectiveImage.show(); } catch (Exception e) { - LOGGER.warning("Can't find image " + objectiveImage.replace("$index", "1")); + LOGGER.log(Logger.Level.WARNING, "Can't find image " + objectiveImage.replace("$index", "1")); subObjectiveImage.hide(); } } diff --git a/src/toniarts/openkeeper/game/state/MainMenuState.java b/src/toniarts/openkeeper/game/state/MainMenuState.java index a8c15959a..665f263db 100644 --- a/src/toniarts/openkeeper/game/state/MainMenuState.java +++ b/src/toniarts/openkeeper/game/state/MainMenuState.java @@ -35,12 +35,12 @@ import java.awt.GraphicsDevice; import java.io.File; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import static toniarts.openkeeper.Main.getDkIIFolder; import toniarts.openkeeper.cinematics.CameraSweepData; @@ -83,7 +83,7 @@ */ public class MainMenuState extends AbstractAppState { - private static final Logger LOGGER = Logger.getLogger(MainMenuState.class.getName()); + private static final Logger LOGGER = System.getLogger(MainMenuState.class.getName()); protected Main app; protected Node rootNode; @@ -284,7 +284,7 @@ public void onLoad() { try { loadMenuScene(this, MainMenuState.this.assetManager, MainMenuState.this.app); } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Failed to load the main menu scene!", ex); + LOGGER.log(Level.ERROR, "Failed to load the main menu scene!", ex); } } @@ -335,7 +335,7 @@ protected void onLoggedOn(boolean loggedIn) { Main.getUserSettings().setSetting(Setting.GAME_NAME, game); Main.getUserSettings().save(); } catch (IOException ex) { - LOGGER.log(java.util.logging.Level.SEVERE, "Failed to save user settings!", ex); + LOGGER.log(Level.ERROR, "Failed to save user settings!", ex); } } @@ -364,7 +364,7 @@ protected void onLoggedOn(boolean loggedIn) { Main.getUserSettings().save(); } catch (IOException ex) { - LOGGER.log(java.util.logging.Level.SEVERE, "Failed to save user settings!", ex); + LOGGER.log(Level.ERROR, "Failed to save user settings!", ex); } } @@ -398,7 +398,7 @@ public void chatTextSend(final String text) { if (chatService != null) { chatService.sendMessage(text); } else { - LOGGER.warning("Connection not initialized!"); + LOGGER.log(Level.WARNING, "Connection not initialized!"); } } @@ -462,7 +462,7 @@ protected void onPlayingEnd() { stateManager.attach(movieState); inputManager.setCursorVisible(false); } catch (Exception e) { - LOGGER.log(java.util.logging.Level.WARNING, "Failed to initiate playing " + movieFile + "!", e); + LOGGER.log(Level.WARNING, "Failed to initiate playing " + movieFile + "!", e); } } @@ -590,7 +590,7 @@ protected String getMapThumbnail(KwdFile map) { try { AssetsConverter.genererateMapThumbnail(map, AssetsConverter.getAssetsFolder() + AssetsConverter.MAP_THUMBNAILS_FOLDER + File.separator); } catch (Exception e) { - LOGGER.log(java.util.logging.Level.WARNING, "Failed to generate map file out of {0}!", map); + LOGGER.log(Level.WARNING, "Failed to generate map file out of {0}!", map); asset = "Textures/Unique_NoTextureName.png"; } } diff --git a/src/toniarts/openkeeper/game/state/PlayerScreenController.java b/src/toniarts/openkeeper/game/state/PlayerScreenController.java index 43525ca28..4779bf56b 100644 --- a/src/toniarts/openkeeper/game/state/PlayerScreenController.java +++ b/src/toniarts/openkeeper/game/state/PlayerScreenController.java @@ -59,6 +59,8 @@ import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; @@ -66,8 +68,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.game.component.AttackTarget; import toniarts.openkeeper.game.component.CreatureAi; @@ -124,7 +124,7 @@ private enum PauseMenuState { MAIN, QUIT, CONFIRMATION; } - private static final Logger LOGGER = Logger.getLogger(PlayerScreenController.class.getName()); + private static final Logger LOGGER = System.getLogger(PlayerScreenController.class.getName()); public static final float SCREEN_UPDATE_INTERVAL = 0.250f; private static final java.awt.Color RESEARCH_COLOR = new java.awt.Color(0.569f, 0.106f, 0.31f, 0.6f); @@ -643,7 +643,7 @@ private void initHudItems(AssetManager assetManager, EntityData entityData) { ImageRenderer renderer = panel.getRenderer(ImageRenderer.class); renderer.setImage(niftyImage); } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Failed to open the background image!", ex); + LOGGER.log(Level.ERROR, "Failed to open the background image!", ex); } // PlayerManaControl manaControl = state.getPlayer().getManaControl(); diff --git a/src/toniarts/openkeeper/game/state/PlayerState.java b/src/toniarts/openkeeper/game/state/PlayerState.java index fb4d3c2ed..9ab70abdd 100644 --- a/src/toniarts/openkeeper/game/state/PlayerState.java +++ b/src/toniarts/openkeeper/game/state/PlayerState.java @@ -26,10 +26,10 @@ import de.lessvoid.nifty.Nifty; import java.awt.Point; import java.io.ByteArrayInputStream; +import java.lang.System.Logger; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.game.component.Position; import toniarts.openkeeper.game.console.ConsoleState; @@ -67,7 +67,7 @@ */ public class PlayerState extends AbstractAppState implements PlayerListener { - private static final Logger LOGGER = Logger.getLogger(PlayerState.class.getName()); + private static final Logger LOGGER = System.getLogger(PlayerState.class.getName()); protected final Main app; diff --git a/src/toniarts/openkeeper/game/state/SoundState.java b/src/toniarts/openkeeper/game/state/SoundState.java index f69e65ad9..89a674857 100644 --- a/src/toniarts/openkeeper/game/state/SoundState.java +++ b/src/toniarts/openkeeper/game/state/SoundState.java @@ -22,11 +22,11 @@ import com.jme3.audio.AudioNode; import com.jme3.audio.AudioSource; import java.io.File; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.ArrayDeque; import java.util.Iterator; import java.util.Queue; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.game.data.Settings; import toniarts.openkeeper.game.sound.MentorType; @@ -61,7 +61,7 @@ public String getName() { } } - private static final Logger LOGGER = Logger.getLogger(SoundState.class.getName()); + private static final Logger LOGGER = System.getLogger(SoundState.class.getName()); private Main app; private AppStateManager stateManager; diff --git a/src/toniarts/openkeeper/game/state/loading/LoadingState.java b/src/toniarts/openkeeper/game/state/loading/LoadingState.java index e567da8a7..0585f2452 100644 --- a/src/toniarts/openkeeper/game/state/loading/LoadingState.java +++ b/src/toniarts/openkeeper/game/state/loading/LoadingState.java @@ -28,9 +28,9 @@ import com.jme3.scene.Node; import com.jme3.scene.shape.Quad; import com.jme3.texture.Texture; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.Locale; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.Main; /** @@ -40,7 +40,7 @@ */ public abstract class LoadingState extends AbstractAppState { - private static final Logger LOGGER = Logger.getLogger(LoadingState.class.getName()); + private static final Logger LOGGER = System.getLogger(LoadingState.class.getName()); protected static final float BAR_WIDTH = 25.375f / 100; protected static final float BAR_HEIGHT = 2.5f / 100; @@ -157,7 +157,7 @@ public void cleanup() { try { loadingThread.join(); } catch (InterruptedException ex) { - LOGGER.log(Level.SEVERE, "Failed to wait for the thread to complete!", ex); + LOGGER.log(Level.ERROR, "Failed to wait for the thread to complete!", ex); } } @@ -191,7 +191,7 @@ public void run() { try { onLoad(); } catch (Exception ex) { - LOGGER.log(Level.SEVERE, "Failed to load!", ex); + LOGGER.log(Level.ERROR, "Failed to load!", ex); } // Enqueue to the render thread diff --git a/src/toniarts/openkeeper/game/state/session/LocalGameSession.java b/src/toniarts/openkeeper/game/state/session/LocalGameSession.java index c378dafd9..7fac9cfbd 100644 --- a/src/toniarts/openkeeper/game/state/session/LocalGameSession.java +++ b/src/toniarts/openkeeper/game/state/session/LocalGameSession.java @@ -18,6 +18,8 @@ import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -25,8 +27,6 @@ import java.util.Arrays; import java.util.Collection; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.game.data.Keeper; import toniarts.openkeeper.game.data.ResearchableEntity; @@ -47,7 +47,7 @@ */ public class LocalGameSession implements GameSessionServerService, GameSessionClientService { - private static final Logger LOGGER = Logger.getLogger(LocalGameSession.class.getName()); + private static final Logger LOGGER = System.getLogger(LocalGameSession.class.getName()); private static final short PLAYER_ID = Player.KEEPER1_ID; private boolean playerInTransition = false; @@ -130,7 +130,7 @@ public void sendGameData(Collection players) { exporter.save(player, playerStream); copiedPlayers.add((Keeper) importer.load(playerStream.toByteArray())); } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Failed to serialize the players!", ex); + LOGGER.log(Level.ERROR, "Failed to serialize the players!", ex); } } diff --git a/src/toniarts/openkeeper/game/task/AbstractTask.java b/src/toniarts/openkeeper/game/task/AbstractTask.java index dee97cf1a..6f17a41cf 100644 --- a/src/toniarts/openkeeper/game/task/AbstractTask.java +++ b/src/toniarts/openkeeper/game/task/AbstractTask.java @@ -19,11 +19,12 @@ import com.jme3.math.Vector2f; import com.simsilica.es.EntityId; import java.awt.Point; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.time.Instant; import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicLong; -import java.util.logging.Logger; import toniarts.openkeeper.game.controller.IMapController; import toniarts.openkeeper.game.controller.creature.ICreatureController; import toniarts.openkeeper.game.navigation.INavigationService; @@ -36,7 +37,7 @@ */ public abstract class AbstractTask implements Task { - private static final Logger LOGGER = Logger.getLogger(AbstractTask.class.getName()); + private static final Logger LOGGER = System.getLogger(AbstractTask.class.getName()); private static final AtomicLong ID_GENENERATOR = new AtomicLong(); @@ -91,7 +92,7 @@ public int getMaxAllowedNumberOfAsignees() { @Override public void assign(ICreatureController creature, boolean setToCreature) { if (assignees.size() == getMaxAllowedNumberOfAsignees()) { - LOGGER.warning("Task already has the maximum number of assignees!"); + LOGGER.log(Level.WARNING, "Task already has the maximum number of assignees!"); } assignees.put(creature, 0.0f); if (setToCreature) { diff --git a/src/toniarts/openkeeper/game/task/TaskManager.java b/src/toniarts/openkeeper/game/task/TaskManager.java index c84f6090f..30f03943e 100644 --- a/src/toniarts/openkeeper/game/task/TaskManager.java +++ b/src/toniarts/openkeeper/game/task/TaskManager.java @@ -23,6 +23,8 @@ import com.simsilica.es.EntitySet; import com.simsilica.es.filter.FieldFilter; import java.awt.Point; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -35,8 +37,6 @@ import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.component.CreatureComponent; import toniarts.openkeeper.game.component.Death; import toniarts.openkeeper.game.component.Food; @@ -101,7 +101,7 @@ */ public class TaskManager implements ITaskManager, IGameLogicUpdatable { - private static final Logger LOGGER = Logger.getLogger(TaskManager.class.getName()); + private static final Logger LOGGER = System.getLogger(TaskManager.class.getName()); private final IMapController mapController; private final IGameWorldController gameWorldController; diff --git a/src/toniarts/openkeeper/game/trigger/AbstractThingTriggerControl.java b/src/toniarts/openkeeper/game/trigger/AbstractThingTriggerControl.java index 7aa139e99..67b3f74e2 100644 --- a/src/toniarts/openkeeper/game/trigger/AbstractThingTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/AbstractThingTriggerControl.java @@ -16,7 +16,7 @@ */ package toniarts.openkeeper.game.trigger; -import java.util.logging.Logger; +import java.lang.System.Logger; import toniarts.openkeeper.game.controller.ICreaturesController; import toniarts.openkeeper.game.controller.IGameController; import toniarts.openkeeper.game.controller.IGameTimer; @@ -33,7 +33,7 @@ */ public abstract class AbstractThingTriggerControl extends PlayerTriggerControl { - private static final Logger LOGGER = Logger.getLogger(AbstractThingTriggerControl.class.getName()); + private static final Logger LOGGER = System.getLogger(AbstractThingTriggerControl.class.getName()); protected T instanceControl; diff --git a/src/toniarts/openkeeper/game/trigger/TriggerControl.java b/src/toniarts/openkeeper/game/trigger/TriggerControl.java index 632d92b5b..dd3cc7e81 100644 --- a/src/toniarts/openkeeper/game/trigger/TriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/TriggerControl.java @@ -17,9 +17,9 @@ package toniarts.openkeeper.game.trigger; import java.awt.Point; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.EnumSet; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.control.Control; import toniarts.openkeeper.game.controller.ICreaturesController; import toniarts.openkeeper.game.controller.IGameController; @@ -45,7 +45,7 @@ */ public class TriggerControl extends Control { - private static final Logger LOGGER = Logger.getLogger(TriggerControl.class.getName()); + private static final Logger LOGGER = System.getLogger(TriggerControl.class.getName()); private static final short LEVEL_SCORE_FLAG_ID = 128; private static final short TIME_LIMIT_TIMER_ID = 16; @@ -90,7 +90,7 @@ protected void updateControl(float tpf) { TriggerData value = trigger.getChild(i); if (value == null) { - LOGGER.warning("Trigger is null!"); + LOGGER.log(Level.WARNING, "Trigger is null!"); } else if (value instanceof TriggerGenericData) { @@ -258,7 +258,7 @@ protected void doAction(TriggerActionData trigger) { value = trigger.getUserData("value", int.class); levelInfo.setTimeLimit(value); } else { - LOGGER.warning("Only level time limit supported!"); + LOGGER.log(Level.WARNING, "Only level time limit supported!"); } break; @@ -322,7 +322,7 @@ protected void doAction(TriggerActionData trigger) { break; default: - LOGGER.warning("Trigger Action not supported!"); + LOGGER.log(Level.WARNING, "Trigger Action not supported!"); break; } } @@ -349,7 +349,7 @@ protected boolean compare(float target, TriggerGeneric.ComparisonType compare, f result = target != value; break; case NONE: - LOGGER.warning("Comparison Type not supported!"); + LOGGER.log(Level.WARNING, "Comparison Type not supported!"); break; } return result; diff --git a/src/toniarts/openkeeper/game/trigger/TriggerData.java b/src/toniarts/openkeeper/game/trigger/TriggerData.java index 2f1b2b805..1ae621c1e 100644 --- a/src/toniarts/openkeeper/game/trigger/TriggerData.java +++ b/src/toniarts/openkeeper/game/trigger/TriggerData.java @@ -16,12 +16,12 @@ */ package toniarts.openkeeper.game.trigger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; /** * @@ -29,7 +29,7 @@ */ public abstract class TriggerData { - private static final Logger LOGGER = Logger.getLogger(TriggerData.class.getName()); + private static final Logger LOGGER = System.getLogger(TriggerData.class.getName()); /** * This TriggerActionData's id. @@ -112,7 +112,7 @@ public void setUserData(String key, Number data) { } else if (data instanceof Number) { userData.put(key, (Number) data); } else { - LOGGER.log(Level.SEVERE, "Unexpected class {0}!", data); + LOGGER.log(Level.ERROR, "Unexpected class {0}!", data); throw new RuntimeException("Unexpected class"); } } diff --git a/src/toniarts/openkeeper/game/trigger/TriggerGenericData.java b/src/toniarts/openkeeper/game/trigger/TriggerGenericData.java index ffeebe786..d94c4d27e 100644 --- a/src/toniarts/openkeeper/game/trigger/TriggerGenericData.java +++ b/src/toniarts/openkeeper/game/trigger/TriggerGenericData.java @@ -17,8 +17,8 @@ package toniarts.openkeeper.game.trigger; import com.jme3.util.SafeArrayList; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import toniarts.openkeeper.tools.convert.map.TriggerGeneric; /** @@ -27,7 +27,7 @@ */ public class TriggerGenericData extends TriggerData { - private static final Logger LOGGER = Logger.getLogger(TriggerGenericData.class.getName()); + private static final Logger LOGGER = System.getLogger(TriggerGenericData.class.getName()); private TriggerGeneric.ComparisonType comparison; // Target comparison type private TriggerGeneric.TargetType target; @@ -159,8 +159,8 @@ public int attachChildAt(TriggerData child, int index) { child.setParent(this); children.add(index, child); - if (LOGGER.isLoggable(Level.FINE)) { - LOGGER.log(Level.FINE, "Child ({0}) attached to this trigger ({1})", + if (LOGGER.isLoggable(Level.DEBUG)) { + LOGGER.log(Level.DEBUG, "Child ({0}) attached to this trigger ({1})", new Object[]{child.getId(), getId()}); } } @@ -192,8 +192,8 @@ public int attachChild(TriggerData child) { child.setParent(this); children.add(child); - if (LOGGER.isLoggable(Level.FINE)) { - LOGGER.log(Level.FINE, "Child ({0}) attached to this TriggerData ({1})", + if (LOGGER.isLoggable(Level.DEBUG)) { + LOGGER.log(Level.DEBUG, "Child ({0}) attached to this TriggerData ({1})", new Object[]{child.getId(), getId()}); } } @@ -210,7 +210,7 @@ public void detachAllChildren() { for (int i = children.size() - 1; i >= 0; i--) { detachChildAt(i); } - LOGGER.log(Level.FINE, "{0}: All children removed.", this.toString()); + LOGGER.log(Level.DEBUG, "{0}: All children removed.", this.toString()); } public int detachChild(TriggerData child) { @@ -241,7 +241,7 @@ public TriggerData detachChildAt(int index) { TriggerData child = children.remove(index); if (child != null) { child.setParent(null); - LOGGER.log(Level.FINE, "{0}: Child removed.", this.toString()); + LOGGER.log(Level.DEBUG, "{0}: Child removed.", this.toString()); } return child; diff --git a/src/toniarts/openkeeper/game/trigger/actionpoint/ActionPointTriggerControl.java b/src/toniarts/openkeeper/game/trigger/actionpoint/ActionPointTriggerControl.java index abbf3e164..029f5cf49 100644 --- a/src/toniarts/openkeeper/game/trigger/actionpoint/ActionPointTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/actionpoint/ActionPointTriggerControl.java @@ -16,8 +16,9 @@ */ package toniarts.openkeeper.game.trigger.actionpoint; -import java.util.logging.Level; -import java.util.logging.Logger; + +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import toniarts.openkeeper.game.controller.ICreaturesController; import toniarts.openkeeper.game.controller.IGameController; import toniarts.openkeeper.game.controller.IGameTimer; @@ -38,7 +39,7 @@ */ public class ActionPointTriggerControl extends TriggerControl { - private static final Logger LOGGER = Logger.getLogger(ActionPointTriggerControl.class.getName()); + private static final Logger LOGGER = System.getLogger(ActionPointTriggerControl.class.getName()); private ActionPoint ap; private IEntityPositionLookup entityPositionLookup; @@ -102,7 +103,7 @@ protected boolean isActive(TriggerGenericData trigger) { case 6: // Object. Chicken break; default: - LOGGER.warning("AP_POSESSED_CREATURE_ENTERS unknown targetType"); + LOGGER.log(Level.WARNING, "AP_POSESSED_CREATURE_ENTERS unknown targetType"); break; } return false; diff --git a/src/toniarts/openkeeper/game/trigger/creature/CreatureTriggerControl.java b/src/toniarts/openkeeper/game/trigger/creature/CreatureTriggerControl.java index 4d4f5a190..37387ba25 100644 --- a/src/toniarts/openkeeper/game/trigger/creature/CreatureTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/creature/CreatureTriggerControl.java @@ -16,7 +16,7 @@ */ package toniarts.openkeeper.game.trigger.creature; -import java.util.logging.Logger; +import java.lang.System.Logger; import toniarts.openkeeper.game.controller.ICreaturesController; import toniarts.openkeeper.game.controller.IGameController; import toniarts.openkeeper.game.controller.IGameTimer; @@ -39,7 +39,7 @@ */ public class CreatureTriggerControl extends AbstractThingTriggerControl { - private static final Logger LOGGER = Logger.getLogger(CreatureTriggerControl.class.getName()); + private static final Logger LOGGER = System.getLogger(CreatureTriggerControl.class.getName()); public CreatureTriggerControl(final IGameController gameController, final ILevelInfo levelInfo, final IGameTimer gameTimer, final IMapController mapController, final ICreaturesController creaturesController, final int triggerId, final short playerId, diff --git a/src/toniarts/openkeeper/game/trigger/door/DoorTriggerControl.java b/src/toniarts/openkeeper/game/trigger/door/DoorTriggerControl.java index 0640d0d88..708cc3f23 100644 --- a/src/toniarts/openkeeper/game/trigger/door/DoorTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/door/DoorTriggerControl.java @@ -16,7 +16,7 @@ */ package toniarts.openkeeper.game.trigger.door; -import java.util.logging.Logger; +import java.lang.System.Logger; import toniarts.openkeeper.game.controller.ICreaturesController; import toniarts.openkeeper.game.controller.IGameController; import toniarts.openkeeper.game.controller.IGameTimer; @@ -35,7 +35,7 @@ */ public class DoorTriggerControl extends AbstractThingTriggerControl { - private static final Logger LOGGER = Logger.getLogger(DoorTriggerControl.class.getName()); + private static final Logger LOGGER = System.getLogger(DoorTriggerControl.class.getName()); public DoorTriggerControl(final IGameController gameController, final ILevelInfo levelInfo, final IGameTimer gameTimer, final IMapController mapController, final ICreaturesController creaturesController, final int triggerId, final short playerId, diff --git a/src/toniarts/openkeeper/game/trigger/object/ObjectTriggerControl.java b/src/toniarts/openkeeper/game/trigger/object/ObjectTriggerControl.java index b38d09e73..95114150c 100644 --- a/src/toniarts/openkeeper/game/trigger/object/ObjectTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/object/ObjectTriggerControl.java @@ -16,7 +16,7 @@ */ package toniarts.openkeeper.game.trigger.object; -import java.util.logging.Logger; +import java.lang.System.Logger; import toniarts.openkeeper.game.controller.ICreaturesController; import toniarts.openkeeper.game.controller.IGameController; import toniarts.openkeeper.game.controller.IGameTimer; @@ -35,7 +35,7 @@ */ public class ObjectTriggerControl extends AbstractThingTriggerControl { - private static final Logger LOGGER = Logger.getLogger(ObjectTriggerControl.class.getName()); + private static final Logger LOGGER = System.getLogger(ObjectTriggerControl.class.getName()); public ObjectTriggerControl(final IGameController gameController, final ILevelInfo levelInfo, final IGameTimer gameTimer, final IMapController mapController, final ICreaturesController creaturesController, final int triggerId, final short playerId, diff --git a/src/toniarts/openkeeper/game/trigger/party/PartyTriggerControl.java b/src/toniarts/openkeeper/game/trigger/party/PartyTriggerControl.java index 98c2610e7..72275b60b 100644 --- a/src/toniarts/openkeeper/game/trigger/party/PartyTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/party/PartyTriggerControl.java @@ -16,7 +16,7 @@ */ package toniarts.openkeeper.game.trigger.party; -import java.util.logging.Logger; +import java.lang.System.Logger; import toniarts.openkeeper.game.controller.ICreaturesController; import toniarts.openkeeper.game.controller.IGameController; import toniarts.openkeeper.game.controller.IGameTimer; @@ -30,7 +30,7 @@ public class PartyTriggerControl extends TriggerControl { - private static final Logger LOGGER = Logger.getLogger(PartyTriggerControl.class.getName()); + private static final Logger LOGGER = System.getLogger(PartyTriggerControl.class.getName()); private IPartyController partyController; diff --git a/src/toniarts/openkeeper/game/trigger/player/PlayerTriggerControl.java b/src/toniarts/openkeeper/game/trigger/player/PlayerTriggerControl.java index f3bba493f..db186a6e6 100644 --- a/src/toniarts/openkeeper/game/trigger/player/PlayerTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/player/PlayerTriggerControl.java @@ -16,9 +16,9 @@ */ package toniarts.openkeeper.game.trigger.player; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.controller.ICreaturesController; import toniarts.openkeeper.game.controller.IGameController; import toniarts.openkeeper.game.controller.IGameTimer; @@ -46,7 +46,7 @@ */ public class PlayerTriggerControl extends TriggerControl { - private static final Logger LOGGER = Logger.getLogger(PlayerTriggerControl.class.getName()); + private static final Logger LOGGER = System.getLogger(PlayerTriggerControl.class.getName()); private short playerId; private PlayerService playerService; @@ -282,7 +282,7 @@ protected void doAction(TriggerActionData trigger) { // Get first spawn point of the player (this flag is only for the players) Set rooms = getPlayerController(playerId).getRoomControl().getRoomControllers().get(levelInfo.getLevelData().getPortal()); if (rooms == null || rooms.isEmpty()) { - LOGGER.warning("Generate creature triggered but no entrances found!"); + LOGGER.log(Level.WARNING, "Generate creature triggered but no entrances found!"); break; } ICreatureEntrance room = ((ICreatureEntrance) rooms.iterator().next()); diff --git a/src/toniarts/openkeeper/gui/nifty/CustomTabControl.java b/src/toniarts/openkeeper/gui/nifty/CustomTabControl.java index 64ba4b30a..0219078d5 100644 --- a/src/toniarts/openkeeper/gui/nifty/CustomTabControl.java +++ b/src/toniarts/openkeeper/gui/nifty/CustomTabControl.java @@ -25,7 +25,8 @@ import de.lessvoid.nifty.elements.Element; import de.lessvoid.nifty.input.NiftyInputEvent; import de.lessvoid.nifty.screen.Screen; -import java.util.logging.Logger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; /** * @@ -33,7 +34,7 @@ */ public class CustomTabControl extends AbstractController implements Tab, TabGroupMember { - private static final Logger log = Logger.getLogger(CustomTabControl.class.getName()); + private static final Logger log = System.getLogger(CustomTabControl.class.getName()); /** * The tab group that is the parent of this tab. This might be {@code null} * for the time this tab is not a part of tab group. @@ -55,7 +56,7 @@ public void bind(Nifty nifty, Screen screen, Element elmnt, Parameters prmtrs) { bind(elmnt); if (elmnt.getId() == null) { - log.warning("Button element has no ID and can't publish any events properly."); + log.log(Level.WARNING, "Button element has no ID and can't publish any events properly."); } String image = prmtrs.get("image"); @@ -112,7 +113,7 @@ public String getCaption() { public String getImage() { if (tabImage == null) { - log.warning("Tab image is not set yet."); + log.log(Level.WARNING, "Tab image is not set yet."); return ""; } return tabImage; @@ -120,7 +121,7 @@ public String getImage() { public String getImageActive() { if (tabImage == null) { - log.warning("Tab image is not set yet."); + log.log(Level.WARNING, "Tab image is not set yet."); return ""; } return tabImageActive; diff --git a/src/toniarts/openkeeper/gui/nifty/CustomTabGroupControl.java b/src/toniarts/openkeeper/gui/nifty/CustomTabGroupControl.java index b5b44e143..530a6a1a8 100644 --- a/src/toniarts/openkeeper/gui/nifty/CustomTabGroupControl.java +++ b/src/toniarts/openkeeper/gui/nifty/CustomTabGroupControl.java @@ -32,9 +32,9 @@ import de.lessvoid.nifty.input.NiftyInputEvent; import de.lessvoid.nifty.loaderv2.types.ElementType; import de.lessvoid.nifty.screen.Screen; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import org.bushe.swing.event.EventTopicSubscriber; /** @@ -165,7 +165,7 @@ public void perform() { /** * The logger that takes care for the output of log messages in this class. */ - private static final Logger log = Logger.getLogger(CustomTabGroupControl.class.getName()); + private static final Logger log = System.getLogger(CustomTabGroupControl.class.getName()); /** * The subscriber of the show events for this control. This is required to @@ -254,11 +254,11 @@ public void bind(Nifty nifty, Screen screen, Element elmnt, Parameters prmtrs) { contentPanel = elmnt.findElementById("#tab-content-panel"); if (tabButtonPanel == null) { - log.severe("Panel for the tabs not found. Tab group will not work properly. Looked for: #tab-button-panel"); + log.log(Level.ERROR, "Panel for the tabs not found. Tab group will not work properly. Looked for: #tab-button-panel"); } else { final Element buttonElement = tabButtonPanel.findElementById("#button-template"); if (buttonElement == null) { - log.severe("No template for tab button found. Tab group will be unable to display tabs. Looked for: " + log.log(Level.ERROR, "No template for tab button found. Tab group will be unable to display tabs. Looked for: " + "#button-template"); } else { buttonTemplate = buttonElement.getElementType().copy(); @@ -271,7 +271,7 @@ public void perform() { } } if (contentPanel == null) { - log.severe("Content panel not found. Tab group will be unable to display tab content. Looked for: " + log.log(Level.ERROR, "Content panel not found. Tab group will be unable to display tab content. Looked for: " + "#tab-content-pane"); } } @@ -314,7 +314,7 @@ private void initTab(final Tab tab) { Element button = getButton(tabIndex); if (button == null) { if (buttonTemplate == null || nifty == null || screen == null || tabButtonPanel == null) { - log.severe("Tab can't be initialized. Binding not done yet or binding failed."); + log.log(Level.ERROR, "Tab can't be initialized. Binding not done yet or binding failed."); return; } final ElementType newButtonTemplate = buttonTemplate.copy(); @@ -446,7 +446,7 @@ private void checkVisibility() { final Element button = getButton(i); if (button == null) { - log.warning("Something is wrong with the tabs. Tab button not there anymore."); + log.log(Level.WARNING, "Something is wrong with the tabs. Tab button not there anymore."); continue; } @@ -494,7 +494,7 @@ public boolean isTabInGroup(final Tab tab) { @Override public void onStartScreen() { if (nifty == null || screen == null) { - log.severe("Starting screen failed. Seems the binding is not done yet."); + log.log(Level.ERROR, "Starting screen failed. Seems the binding is not done yet."); } String id = getId(); if (id != null) { @@ -548,7 +548,7 @@ public void setSelectedTabIndex(final int index) { if (id != null) { Tab tab = getTabAtIndex(index); if (tab == null) { - log.severe("Tab with valid index returned null. This looks like a internal error."); + log.log(Level.ERROR, "Tab with valid index returned null. This looks like a internal error."); } else { nifty.publishEvent(id, new TabSelectedEvent(this, tab, index)); } diff --git a/src/toniarts/openkeeper/gui/nifty/chat/ChatBoxViewConverter.java b/src/toniarts/openkeeper/gui/nifty/chat/ChatBoxViewConverter.java index b274ab496..7cc27a596 100644 --- a/src/toniarts/openkeeper/gui/nifty/chat/ChatBoxViewConverter.java +++ b/src/toniarts/openkeeper/gui/nifty/chat/ChatBoxViewConverter.java @@ -20,7 +20,8 @@ import de.lessvoid.nifty.elements.Element; import de.lessvoid.nifty.elements.render.TextRenderer; import de.lessvoid.nifty.tools.Color; -import java.util.logging.Logger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import toniarts.openkeeper.utils.MapThumbnailGenerator; /** @@ -31,7 +32,7 @@ */ public class ChatBoxViewConverter implements ListBoxViewConverter { - private static final Logger log = Logger.getLogger(ChatBoxViewConverter.class.getName()); + private static final Logger log = System.getLogger(ChatBoxViewConverter.class.getName()); private static final String CHAT_LINE_TEXT = "#chat-line-text"; @@ -45,11 +46,11 @@ public ChatBoxViewConverter() { public final void display(final Element listBoxItem, final ChatEntry item) { final Element text = listBoxItem.findElementById(CHAT_LINE_TEXT); if (text == null) { - log.severe("Failed to locate text part of chat line! Can't display entry."); + log.log(Level.ERROR, "Failed to locate text part of chat line! Can't display entry."); } final TextRenderer textRenderer = text.getRenderer(TextRenderer.class); if (textRenderer == null) { - log.severe("Text entry of the chat line does not contain the required text renderer."); + log.log(Level.ERROR, "Text entry of the chat line does not contain the required text renderer."); return; } textRenderer.setText(item.getLabel()); @@ -67,12 +68,12 @@ public final void display(final Element listBoxItem, final ChatEntry item) { public final int getWidth(final Element listBoxItem, final ChatEntry item) { final Element text = listBoxItem.findElementById(CHAT_LINE_TEXT); if (text == null) { - log.severe("Failed to locate text part of chat line! Can't display entry."); + log.log(Level.ERROR, "Failed to locate text part of chat line! Can't display entry."); return 0; } final TextRenderer textRenderer = text.getRenderer(TextRenderer.class); if (textRenderer == null) { - log.severe("Text entry of the chat line does not contain the required text renderer."); + log.log(Level.ERROR, "Text entry of the chat line does not contain the required text renderer."); return 0; } return ((textRenderer.getFont() == null) ? 0 : textRenderer.getFont().getWidth(item.getLabel())); diff --git a/src/toniarts/openkeeper/gui/nifty/chat/ChatControl.java b/src/toniarts/openkeeper/gui/nifty/chat/ChatControl.java index 0040af5a5..0c8d505f4 100644 --- a/src/toniarts/openkeeper/gui/nifty/chat/ChatControl.java +++ b/src/toniarts/openkeeper/gui/nifty/chat/ChatControl.java @@ -26,13 +26,13 @@ import de.lessvoid.nifty.input.NiftyStandardInputEvent; import de.lessvoid.nifty.screen.KeyInputHandler; import de.lessvoid.nifty.screen.Screen; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Queue; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.gui.nifty.chat.event.ChatTextSendEvent; /** @@ -43,7 +43,7 @@ */ public class ChatControl extends AbstractController implements KeyInputHandler, Chat { - private static final Logger LOGGER = Logger.getLogger(ChatControl.class.getName()); + private static final Logger LOGGER = System.getLogger(ChatControl.class.getName()); private static final String CHAT_BOX = "#chatBox"; private static final String CHAT_TEXT_INPUT = "#chat-text-input"; @@ -65,17 +65,17 @@ public final void bind( final Element newElement, final Parameters properties) { super.bind(newElement); - LOGGER.fine("binding chat control"); + LOGGER.log(Level.DEBUG, "binding chat control"); nifty = niftyParam; // this buffer is needed because in some cases the entry is added to either list before the element is bound. final ListBox chatBox = getListBox(CHAT_BOX); if (chatBox == null) { - LOGGER.severe("Element for chat box \"" + CHAT_BOX + "\" not found. ChatControl will not work."); + LOGGER.log(Level.ERROR, "Element for chat box \"" + CHAT_BOX + "\" not found. ChatControl will not work."); } else { while (!linesBuffer.isEmpty()) { ChatEntry line = linesBuffer.poll(); - LOGGER.log(Level.FINE, "adding message {0}", (chatBox.itemCount() + 1)); + LOGGER.log(Level.DEBUG, "adding message {0}", (chatBox.itemCount() + 1)); chatBox.addItem(line); chatBox.showItemByIndex(chatBox.itemCount() - 1); } @@ -95,7 +95,7 @@ public final void onStartScreen() { if (element != null) { textControl = element.findNiftyControl(CHAT_TEXT_INPUT, TextField.class); if (textControl == null) { - LOGGER.severe("Text input field for chat box was not found!"); + LOGGER.log(Level.ERROR, "Text input field for chat box was not found!"); } else { Element textControlElement = textControl.getElement(); if (textControlElement != null) { @@ -159,7 +159,7 @@ public void receivedChatLine(String text, int playerId, short keeperId) { if (linesBuffer.isEmpty()) { final ListBox chatBox = getListBox(CHAT_BOX); if (chatBox != null) { - LOGGER.log(Level.FINE, "adding message {0}", (chatBox.itemCount() + 1)); + LOGGER.log(Level.DEBUG, "adding message {0}", (chatBox.itemCount() + 1)); chatBox.addItem(new ChatEntry(text, playerId, keeperId)); chatBox.showItemByIndex(chatBox.itemCount() - 1); } else { diff --git a/src/toniarts/openkeeper/gui/nifty/table/TableControl.java b/src/toniarts/openkeeper/gui/nifty/table/TableControl.java index 32f1d3486..a422f322a 100644 --- a/src/toniarts/openkeeper/gui/nifty/table/TableControl.java +++ b/src/toniarts/openkeeper/gui/nifty/table/TableControl.java @@ -30,10 +30,11 @@ import de.lessvoid.nifty.input.mapping.MenuInputMapping; import de.lessvoid.nifty.screen.Screen; import de.lessvoid.nifty.tools.Color; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.ArrayList; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; + /** * Table control, build on top of the Nifty ListBox
@@ -45,7 +46,7 @@ */ public class TableControl extends ListBoxControl { - private static final Logger logger = Logger.getLogger(TableControl.class.getName()); + private static final Logger logger = System.getLogger(TableControl.class.getName()); private List tableColumns; private Element headers; @@ -61,7 +62,7 @@ public void bind(Nifty nifty, Screen screen, Element elmnt, Parameters prmtrs) { try { tableColumns.add(TableColumn.parse(prmtrs.get("col" + i))); } catch (ClassNotFoundException ex) { - logger.log(Level.SEVERE, "Failed to init a column!", ex); + logger.log(Level.ERROR, "Failed to init a column!", ex); } } diff --git a/src/toniarts/openkeeper/setup/DKConverter.java b/src/toniarts/openkeeper/setup/DKConverter.java index 8c95fa6da..ac6cf0b53 100644 --- a/src/toniarts/openkeeper/setup/DKConverter.java +++ b/src/toniarts/openkeeper/setup/DKConverter.java @@ -18,13 +18,13 @@ import com.jme3.asset.AssetManager; import java.awt.event.WindowEvent; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.lang.reflect.InvocationTargetException; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import javax.swing.ToolTipManager; @@ -38,7 +38,7 @@ */ public abstract class DKConverter extends javax.swing.JFrame implements IFrameClosingBehavior { - private static final Logger logger = Logger.getLogger(DKConverter.class.getName()); + private static final Logger logger = System.getLogger(DKConverter.class.getName()); private static volatile boolean convertDone = false; private final String dungeonKeeperFolder; @@ -155,7 +155,7 @@ public static void main(String args[]) throws InterruptedException, InvocationTa } } } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) { - logger.log(java.util.logging.Level.SEVERE, null, ex); + logger.log(Level.ERROR, ex); } // @@ -319,7 +319,7 @@ public void onError(Exception ex, AssetsConverter.ConvertProcess process) { } catch (Exception e) { // Fug - logger.log(Level.SEVERE, "Failed to convert the assets!", e); + logger.log(Level.ERROR, "Failed to convert the assets!", e); frame.onError(e); } finally { diff --git a/src/toniarts/openkeeper/setup/DKFolderSelector.java b/src/toniarts/openkeeper/setup/DKFolderSelector.java index 0b2c0bc11..5e79a3572 100644 --- a/src/toniarts/openkeeper/setup/DKFolderSelector.java +++ b/src/toniarts/openkeeper/setup/DKFolderSelector.java @@ -17,8 +17,9 @@ package toniarts.openkeeper.setup; import java.awt.event.WindowEvent; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.Arrays; -import java.util.logging.Logger; import javax.swing.ImageIcon; import javax.swing.JFileChooser; import toniarts.openkeeper.Main; @@ -30,7 +31,7 @@ */ public abstract class DKFolderSelector extends javax.swing.JFrame { - private static final Logger logger = Logger.getLogger(DKFolderSelector.class.getName()); + private static final Logger logger = System.getLogger(DKFolderSelector.class.getName()); final JFileChooser fc = new JFileChooser(); @@ -178,7 +179,7 @@ public static void main(String args[]) { } } } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) { - logger.log(java.util.logging.Level.SEVERE, null, ex); + logger.log(Level.ERROR, ex); } // diff --git a/src/toniarts/openkeeper/tools/convert/AssetsConverter.java b/src/toniarts/openkeeper/tools/convert/AssetsConverter.java index 4b9d7de90..9a6ade30c 100644 --- a/src/toniarts/openkeeper/tools/convert/AssetsConverter.java +++ b/src/toniarts/openkeeper/tools/convert/AssetsConverter.java @@ -20,12 +20,12 @@ import com.jme3.system.AppSettings; import java.io.File; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.tools.convert.conversion.ConversionTaskManager; import toniarts.openkeeper.tools.convert.conversion.task.ConvertFonts; @@ -100,7 +100,7 @@ public String toString() { private final ConvertProcess[] dependencies; } - private static final Logger LOGGER = Logger.getLogger(AssetsConverter.class.getName()); + private static final Logger LOGGER = System.getLogger(AssetsConverter.class.getName()); private static final boolean OVERWRITE_DATA = true; // Not exhausting your SDD :) or our custom graphics private static final String ASSETS_FOLDER = "assets" + File.separator + "Converted"; diff --git a/src/toniarts/openkeeper/tools/convert/BufferedResourceReader.java b/src/toniarts/openkeeper/tools/convert/BufferedResourceReader.java index 5c8a40155..0215ac53a 100644 --- a/src/toniarts/openkeeper/tools/convert/BufferedResourceReader.java +++ b/src/toniarts/openkeeper/tools/convert/BufferedResourceReader.java @@ -19,14 +19,14 @@ import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; -import java.util.logging.Level; -import java.util.logging.Logger; /** * Resource reader is a convenience wrapper around any Dungeon Keeper 2 resource @@ -39,7 +39,7 @@ */ public class BufferedResourceReader implements IResourceReader { - private static final Logger LOGGER = Logger.getLogger(BufferedResourceReader.class.getName()); + private static final Logger LOGGER = System.getLogger(BufferedResourceReader.class.getName()); private final BufferedInputStream input; @@ -101,7 +101,7 @@ public void close() { try { input.close(); } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Closing file error", ex); + LOGGER.log(Level.ERROR, "Closing file error", ex); } } diff --git a/src/toniarts/openkeeper/tools/convert/ConversionUtils.java b/src/toniarts/openkeeper/tools/convert/ConversionUtils.java index 2ebdccef1..ef51290b6 100644 --- a/src/toniarts/openkeeper/tools/convert/ConversionUtils.java +++ b/src/toniarts/openkeeper/tools/convert/ConversionUtils.java @@ -17,13 +17,14 @@ package toniarts.openkeeper.tools.convert; import com.jme3.math.Vector3f; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.charset.Charset; import java.util.EnumSet; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; + /** * Contains static helper methods @@ -32,7 +33,7 @@ */ public class ConversionUtils { - private static final Logger LOGGER = Logger.getLogger(ConversionUtils.class.getName()); + private static final Logger LOGGER = System.getLogger(ConversionUtils.class.getName()); public static final float FLOAT = 4096f; // or DIVIDER_FLOAT Fixed Point Single Precision Divider public static final float DOUBLE = 65536f; // or DIVIDER_DOUBLE Fixed Point Double Precision Divider @@ -51,7 +52,7 @@ public static int toUnsignedInteger(byte[] unsignedInt) { // Yes, this should be long, however, in our purpose this might be sufficient as int // Safety measure - LOGGER.warning("This unsigned integer doesn't fit to JAVA integer! Use a different method!"); + LOGGER.log(Level.WARNING, "This unsigned integer doesn't fit to JAVA integer! Use a different method!"); } return result; } diff --git a/src/toniarts/openkeeper/tools/convert/FileResourceReader.java b/src/toniarts/openkeeper/tools/convert/FileResourceReader.java index 6761c56d3..a49a0132e 100644 --- a/src/toniarts/openkeeper/tools/convert/FileResourceReader.java +++ b/src/toniarts/openkeeper/tools/convert/FileResourceReader.java @@ -17,6 +17,8 @@ package toniarts.openkeeper.tools.convert; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.channels.SeekableByteChannel; @@ -24,8 +26,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; -import java.util.logging.Level; -import java.util.logging.Logger; + /** * Resource reader is a convenience wrapper around any Dungeon Keeper 2 resource @@ -36,7 +37,7 @@ */ public class FileResourceReader implements ISeekableResourceReader { - private static final Logger LOGGER = Logger.getLogger(FileResourceReader.class.getName()); + private static final Logger LOGGER = System.getLogger(FileResourceReader.class.getName()); private final SeekableByteChannel file; @@ -126,7 +127,7 @@ public void close() { try { file.close(); } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Closing file error", ex); + LOGGER.log(Level.ERROR, "Closing file error", ex); } } diff --git a/src/toniarts/openkeeper/tools/convert/KmfModelLoader.java b/src/toniarts/openkeeper/tools/convert/KmfModelLoader.java index 6f40fc80e..1b95d2616 100644 --- a/src/toniarts/openkeeper/tools/convert/KmfModelLoader.java +++ b/src/toniarts/openkeeper/tools/convert/KmfModelLoader.java @@ -44,6 +44,8 @@ import java.io.File; import java.io.IOException; import java.io.OutputStream; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -53,8 +55,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; import toniarts.openkeeper.animation.Pose; @@ -84,7 +84,7 @@ public final class KmfModelLoader implements AssetLoader { // there's 1 kmf per animation so we only use 1 dummy JME animation clip public static final String DUMMY_ANIM_CLIP_NAME = "dummyAnimClipName"; - private static final Logger logger = Logger.getLogger(KmfModelLoader.class.getName()); + private static final Logger logger = System.getLogger(KmfModelLoader.class.getName()); /* Some textures are broken */ private final static Map textureFixes; diff --git a/src/toniarts/openkeeper/tools/convert/ResourceChunkReader.java b/src/toniarts/openkeeper/tools/convert/ResourceChunkReader.java index 4dd984faa..a3a3b4899 100644 --- a/src/toniarts/openkeeper/tools/convert/ResourceChunkReader.java +++ b/src/toniarts/openkeeper/tools/convert/ResourceChunkReader.java @@ -17,14 +17,15 @@ package toniarts.openkeeper.tools.convert; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.ByteBuffer; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.EnumSet; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; + /** * Offers our resource specific methods for translating binary data to our @@ -34,7 +35,7 @@ */ public class ResourceChunkReader implements IResourceChunkReader { - private static final Logger LOGGER = Logger.getLogger(ResourceChunkReader.class.getName()); + private static final Logger LOGGER = System.getLogger(ResourceChunkReader.class.getName()); private final ByteBuffer buffer; @@ -186,7 +187,7 @@ public int readUnsignedInteger() { // Yes, this should be long, however, in our purpose this might be sufficient as int // Safety measure - LOGGER.warning("This unsigned integer doesn't fit to JAVA integer! Use a different method!"); + LOGGER.log(Level.WARNING, "This unsigned integer doesn't fit to JAVA integer! Use a different method!"); } return result; } diff --git a/src/toniarts/openkeeper/tools/convert/conversion/ConversionTaskManager.java b/src/toniarts/openkeeper/tools/convert/conversion/ConversionTaskManager.java index 557a0e46e..3fb5485d1 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/ConversionTaskManager.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/ConversionTaskManager.java @@ -16,6 +16,8 @@ */ package toniarts.openkeeper.tools.convert.conversion; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; @@ -28,8 +30,6 @@ import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.AssetsConverter; import toniarts.openkeeper.tools.convert.conversion.graph.BreadthFirstTraverser; import toniarts.openkeeper.tools.convert.conversion.graph.Graph; @@ -44,7 +44,7 @@ */ public class ConversionTaskManager { - private static final Logger LOGGER = Logger.getLogger(ConversionTaskManager.class.getName()); + private static final Logger LOGGER = System.getLogger(ConversionTaskManager.class.getName()); private static final int MAX_THREADS = Runtime.getRuntime().availableProcessors(); private final ExecutorService executorService; @@ -99,7 +99,7 @@ public boolean executeTasks() { try { executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.HOURS); } catch (InterruptedException ex) { - LOGGER.log(Level.SEVERE, "Conversion tasks failed to complete!", ex); + LOGGER.log(Level.ERROR, "Conversion tasks failed to complete!", ex); } return !failure; @@ -136,7 +136,7 @@ private void executeTask(TaskNode node) { executeNextTask(node); } catch (Exception e) { failure = true; - LOGGER.log(Level.SEVERE, "Task " + node + " failed! Aborting...", e); + LOGGER.log(Level.ERROR, "Task " + node + " failed! Aborting...", e); executorService.shutdown(); } diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertFonts.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertFonts.java index b6cb885e6..f1ac75877 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertFonts.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertFonts.java @@ -20,6 +20,8 @@ import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStream; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.charset.StandardCharsets; import java.nio.file.FileVisitResult; import java.nio.file.Files; @@ -35,8 +37,6 @@ import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -import java.util.logging.Level; -import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.imageio.ImageIO; @@ -55,7 +55,7 @@ */ public class ConvertFonts extends ConversionTask { - private static final Logger LOGGER = Logger.getLogger(ConvertFonts.class.getName()); + private static final Logger LOGGER = System.getLogger(ConvertFonts.class.getName()); private final ExecutorService executorService; @@ -83,7 +83,7 @@ public void internalExecuteTask() { try { executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); } catch (InterruptedException ex) { - LOGGER.log(Level.SEVERE, "Failed to wait font conversion complete!", ex); + LOGGER.log(Level.ERROR, "Failed to wait font conversion complete!", ex); } } } @@ -135,7 +135,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IO } catch (Exception ex) { String msg = "Failed to save the font files to " + destination + "!"; - LOGGER.log(Level.SEVERE, msg, ex); + LOGGER.log(Level.ERROR, msg, ex); throw new RuntimeException(msg, ex); } } @@ -150,7 +150,7 @@ private void handleFontFile(Pattern pattern, Path file, final String destination Matcher matcher = pattern.matcher(file.getFileName().toString()); boolean found = matcher.find(); if (!found) { - LOGGER.log(Level.SEVERE, "Font name {0} not recognized!", file.getFileName()); + LOGGER.log(Level.ERROR, "Font name {0} not recognized!", file.getFileName()); throw new RuntimeException("Unknown font name!"); } @@ -177,7 +177,7 @@ private void handleFontFile(Pattern pattern, Path file, final String destination updateStatus(progress.incrementAndGet(), total); } catch (Exception ex) { String msg = "Failed to export font file " + file + "!"; - LOGGER.log(Level.SEVERE, msg, ex); + LOGGER.log(Level.ERROR, msg, ex); onError(new RuntimeException(msg, ex)); } } diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertHiScores.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertHiScores.java index f98d62d72..871e7b6c1 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertHiScores.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertHiScores.java @@ -16,10 +16,10 @@ */ package toniarts.openkeeper.tools.convert.conversion.task; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.data.HiScores; import toniarts.openkeeper.tools.convert.AssetsConverter; import toniarts.openkeeper.tools.convert.hiscores.HiScoresEntry; @@ -34,7 +34,7 @@ */ public class ConvertHiScores extends ConversionTask { - private static final Logger LOGGER = Logger.getLogger(ConvertHiScores.class.getName()); + private static final Logger LOGGER = System.getLogger(ConvertHiScores.class.getName()); public ConvertHiScores(String dungeonKeeperFolder, boolean overwriteData) { super(dungeonKeeperFolder, null, overwriteData); diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertMapThumbnails.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertMapThumbnails.java index f024103cf..7f6370ecd 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertMapThumbnails.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertMapThumbnails.java @@ -20,6 +20,8 @@ import java.io.BufferedOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; @@ -27,8 +29,6 @@ import java.nio.file.StandardOpenOption; import java.util.ArrayList; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.imageio.ImageIO; import toniarts.openkeeper.tools.convert.AssetsConverter; import toniarts.openkeeper.tools.convert.map.GameLevel; @@ -45,7 +45,7 @@ */ public class ConvertMapThumbnails extends ConversionTask { - private static final Logger LOGGER = Logger.getLogger(ConvertMapThumbnails.class.getName()); + private static final Logger LOGGER = System.getLogger(ConvertMapThumbnails.class.getName()); public ConvertMapThumbnails(String dungeonKeeperFolder, String destination, boolean overwriteData) { super(dungeonKeeperFolder, destination, overwriteData); @@ -91,7 +91,7 @@ private void generateMapThumbnails(String dungeonKeeperFolder, String destinatio } } } catch (Exception ex) { - LOGGER.log(Level.SEVERE, "Failed to search for the map files!", ex); + LOGGER.log(Level.ERROR, "Failed to search for the map files!", ex); } // Go through the map files diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertModels.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertModels.java index d4372aa28..b2ea7032f 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertModels.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertModels.java @@ -23,6 +23,8 @@ import java.io.BufferedOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -33,8 +35,6 @@ import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.AssetsConverter; import static toniarts.openkeeper.tools.convert.AssetsConverter.getAssetsFolder; import toniarts.openkeeper.tools.convert.KmfAssetInfo; @@ -52,7 +52,7 @@ */ public class ConvertModels extends ConversionTask { - private static final Logger LOGGER = Logger.getLogger(ConvertModels.class.getName()); + private static final Logger LOGGER = System.getLogger(ConvertModels.class.getName()); private final AssetManager assetManager; private final ExecutorService executorService; @@ -82,7 +82,7 @@ public void internalExecuteTask() { try { executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); } catch (InterruptedException ex) { - LOGGER.log(Level.SEVERE, "Failed to wait model saving complete!", ex); + LOGGER.log(Level.ERROR, "Failed to wait model saving complete!", ex); } } } @@ -151,7 +151,7 @@ private void convertModels(String dungeonKeeperFolder, String destination, Asset return; } } catch (Exception ex) { - LOGGER.log(Level.SEVERE, "Failed to create a file for WAD entry " + entry + "!", ex); + LOGGER.log(Level.ERROR, "Failed to create a file for WAD entry " + entry + "!", ex); throw ex; } } @@ -198,13 +198,13 @@ private void convertModel(AssetManager assetManager, String name, KmfFile model, updateStatus(progress.incrementAndGet(), total); } catch (Exception ex) { String msg = "Failed to export KMF entry " + name + "!"; - LOGGER.log(Level.SEVERE, msg, ex); + LOGGER.log(Level.ERROR, msg, ex); onError(new RuntimeException(msg, ex)); } }); } catch (Exception ex) { String msg = "Failed to convert KMF entry " + name + "!"; - LOGGER.log(Level.SEVERE, msg, ex); + LOGGER.log(Level.ERROR, msg, ex); throw new RuntimeException(msg, ex); } } diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertMouseCursors.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertMouseCursors.java index 4b4a3d5fc..ecda56f5f 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertMouseCursors.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertMouseCursors.java @@ -17,11 +17,11 @@ package toniarts.openkeeper.tools.convert.conversion.task; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.AssetsConverter; import static toniarts.openkeeper.tools.convert.AssetsConverter.SPRITES_FOLDER; import static toniarts.openkeeper.tools.convert.AssetsConverter.getAssetsFolder; @@ -37,7 +37,7 @@ */ public class ConvertMouseCursors extends ConversionTask { - private static final Logger LOGGER = Logger.getLogger(ConvertMouseCursors.class.getName()); + private static final Logger LOGGER = System.getLogger(ConvertMouseCursors.class.getName()); public ConvertMouseCursors(String dungeonKeeperFolder, String destination, boolean overwriteData) { super(dungeonKeeperFolder, destination, overwriteData); @@ -88,7 +88,7 @@ private void convertMouseCursors(String dungeonKeeperFolder, String destination) try { sprFile.extract(destinationFolderAsString, fileName.substring(0, fileName.length() - 4)); } catch (Exception ex) { - LOGGER.log(Level.SEVERE, "Error Sprite: {0}", ex); + LOGGER.log(Level.ERROR, "Error Sprite: {0}", ex); } } else { diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertPaths.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertPaths.java index cd13a7fce..26831aecd 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertPaths.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertPaths.java @@ -24,13 +24,13 @@ import java.io.BufferedOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.cinematics.CameraSweepData; import toniarts.openkeeper.cinematics.CameraSweepDataEntry; import toniarts.openkeeper.cinematics.CameraSweepDataLoader; @@ -49,7 +49,7 @@ */ public class ConvertPaths extends ConversionTask { - private static final Logger LOGGER = Logger.getLogger(ConvertPaths.class.getName()); + private static final Logger LOGGER = System.getLogger(ConvertPaths.class.getName()); public ConvertPaths(String dungeonKeeperFolder, String destination, boolean overwriteData) { super(dungeonKeeperFolder, destination, overwriteData); @@ -130,7 +130,7 @@ private void convertPaths(String dungeonKeeperFolder, String destination) { } catch (Exception ex) { String msg = "Failed to save the path file to " + destination + "!"; - LOGGER.log(Level.SEVERE, msg, ex); + LOGGER.log(Level.ERROR, msg, ex); throw new RuntimeException(msg, ex); } } diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertSounds.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertSounds.java index 955e50513..b042c9907 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertSounds.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertSounds.java @@ -17,6 +17,8 @@ package toniarts.openkeeper.tools.convert.conversion.task; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; @@ -25,8 +27,6 @@ import java.nio.file.attribute.BasicFileAttributes; import java.util.ArrayList; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.AssetsConverter; import toniarts.openkeeper.tools.convert.sound.SdtFile; import toniarts.openkeeper.utils.PathUtils; @@ -39,7 +39,7 @@ */ public class ConvertSounds extends ConversionTask { - private static final Logger LOGGER = Logger.getLogger(ConvertSounds.class.getName()); + private static final Logger LOGGER = System.getLogger(ConvertSounds.class.getName()); public ConvertSounds(String dungeonKeeperFolder, String destination, boolean overwriteData) { super(dungeonKeeperFolder, destination, overwriteData); @@ -82,7 +82,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IO }); } catch (IOException ex) { String msg = "Failed to scan sounds folder " + dataDirectory + "!"; - LOGGER.log(Level.SEVERE, msg, ex); + LOGGER.log(Level.ERROR, msg, ex); throw new RuntimeException(msg, ex); } diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertTexts.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertTexts.java index 3eb45aa87..3cde55554 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertTexts.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertTexts.java @@ -18,6 +18,8 @@ import java.io.BufferedWriter; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.charset.StandardCharsets; import java.nio.file.FileVisitOption; import java.nio.file.FileVisitResult; @@ -31,8 +33,6 @@ import java.util.EnumSet; import java.util.List; import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.AssetsConverter; import toniarts.openkeeper.tools.convert.str.MbToUniFile; import toniarts.openkeeper.tools.convert.str.StrFile; @@ -46,7 +46,7 @@ */ public class ConvertTexts extends ConversionTask { - private static final Logger LOGGER = Logger.getLogger(ConvertTexts.class.getName()); + private static final Logger LOGGER = System.getLogger(ConvertTexts.class.getName()); public ConvertTexts(String dungeonKeeperFolder, String destination, boolean overwriteData) { super(dungeonKeeperFolder, destination, overwriteData); @@ -88,7 +88,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IO }); } catch (IOException ex) { String msg = "Failed to scan texts folder " + dataDirectory + "!"; - LOGGER.log(Level.SEVERE, msg, ex); + LOGGER.log(Level.ERROR, msg, ex); throw new RuntimeException(msg, ex); } @@ -127,7 +127,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IO } } catch (IOException ex) { String msg = "Failed to save the dictionary file to " + dictFile + "!"; - LOGGER.log(Level.SEVERE, msg, ex); + LOGGER.log(Level.ERROR, msg, ex); throw new RuntimeException(msg, ex); } } diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertTextures.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertTextures.java index 23e2ae844..0cf41ed58 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertTextures.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertTextures.java @@ -19,6 +19,8 @@ import java.io.BufferedOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; @@ -29,8 +31,6 @@ import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -import java.util.logging.Level; -import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.imageio.ImageIO; @@ -48,7 +48,7 @@ */ public class ConvertTextures extends ConversionTask { - private static final Logger LOGGER = Logger.getLogger(ConvertTextures.class.getName()); + private static final Logger LOGGER = System.getLogger(ConvertTextures.class.getName()); private final ExecutorService executorService; @@ -76,7 +76,7 @@ public void internalExecuteTask() { try { executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); } catch (InterruptedException ex) { - LOGGER.log(Level.SEVERE, "Failed to wait textures conversion complete!", ex); + LOGGER.log(Level.ERROR, "Failed to wait textures conversion complete!", ex); } } } @@ -160,7 +160,7 @@ private void extractEngineTextureContainer(AtomicInteger progress, int total, En } Files.move(f, newFile); } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Failed to handle " + textureFile + "!", ex); + LOGGER.log(Level.ERROR, "Failed to handle " + textureFile + "!", ex); onError(new RuntimeException("Failed to handle " + textureFile + "!", ex)); return; @@ -171,7 +171,7 @@ private void extractEngineTextureContainer(AtomicInteger progress, int total, En // No mipmap levels, just extract etFile.extractFileData(textureFile, destination, overwriteData); } catch (Exception ex) { - LOGGER.log(Level.SEVERE, "Failed to extract the texture file entry " + textureFile + "!", ex); + LOGGER.log(Level.ERROR, "Failed to extract the texture file entry " + textureFile + "!", ex); onError(new RuntimeException("Failed to save the texture file entry " + textureFile + "!", ex)); return; @@ -204,7 +204,7 @@ private void extractTextureContainer(AtomicInteger progress, int total, WadFile ImageIO.write(lsf.getImage(), "png", bos); } } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Failed to save the wad entry " + entry + "!", ex); + LOGGER.log(Level.ERROR, "Failed to save the wad entry " + entry + "!", ex); onError(new RuntimeException("Failed to save the wad entry " + entry + "!", ex)); return; @@ -213,7 +213,7 @@ private void extractTextureContainer(AtomicInteger progress, int total, WadFile try { wad.extractFileData(entry, destination); } catch (Exception ex) { - LOGGER.log(Level.SEVERE, "Failed to extract the wad entry " + entry + "!", ex); + LOGGER.log(Level.ERROR, "Failed to extract the wad entry " + entry + "!", ex); onError(new RuntimeException("Failed to save the wad entry " + entry + "!", ex)); return; diff --git a/src/toniarts/openkeeper/tools/convert/map/KwdFile.java b/src/toniarts/openkeeper/tools/convert/map/KwdFile.java index 934503045..5d3389c05 100644 --- a/src/toniarts/openkeeper/tools/convert/map/KwdFile.java +++ b/src/toniarts/openkeeper/tools/convert/map/KwdFile.java @@ -18,6 +18,8 @@ import java.awt.Color; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Path; import java.nio.file.Paths; import java.time.LocalDateTime; @@ -29,8 +31,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.ConversionUtils; import toniarts.openkeeper.tools.convert.FileResourceReader; import toniarts.openkeeper.tools.convert.IResourceChunkReader; @@ -80,7 +80,7 @@ */ public final class KwdFile { - private static final Logger LOGGER = Logger.getLogger(KwdFile.class.getName()); + private static final Logger LOGGER = System.getLogger(KwdFile.class.getName()); // These are needed in various places, I don't know how to else regognize these private final static short ROOM_PORTAL_ID = 3; @@ -312,7 +312,7 @@ private KwdHeader readKwdHeader(ISeekableResourceReader data) throws IOException } if (data.getFilePointer() != startOffset + header.getHeaderSize()) { - LOGGER.warning("Incorrect parsing of file header"); + LOGGER.log(Level.WARNING, "Incorrect parsing of file header"); } // Not part of the header, part of the data really @@ -430,7 +430,7 @@ private void readFileContents(KwdHeader header, IResourceReader data) throws IOE private void readMap(KwdHeader header, IResourceReader file) throws IOException { // Read the requested MAP file - LOGGER.info("Reading map!"); + LOGGER.log(Level.INFO, "Reading map!"); if (map == null) { map = new GameMap(header.getWidth(), header.getHeight()); } @@ -459,10 +459,10 @@ private void readPlayers(KwdHeader header, IResourceReader file) throws IOExcept // Read the requested PLAYER file if (players == null) { - LOGGER.info("Reading players!"); + LOGGER.log(Level.INFO, "Reading players!"); players = new HashMap<>(header.getItemCount()); } else { - LOGGER.warning("Overrides players!"); + LOGGER.log(Level.WARNING, "Overrides players!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -588,10 +588,10 @@ private void readTerrain(KwdHeader header, IResourceReader file) throws RuntimeE // Read the terrain catalog if (terrainTiles == null) { - LOGGER.info("Reading terrain!"); + LOGGER.log(Level.INFO, "Reading terrain!"); terrainTiles = new HashMap<>(header.getItemCount()); } else { - LOGGER.warning("Overrides terrain!"); + LOGGER.log(Level.WARNING, "Overrides terrain!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -798,10 +798,10 @@ private void readDoors(KwdHeader header, IResourceReader file) throws IOExceptio // Read the doors catalog if (doors == null) { - LOGGER.info("Reading doors!"); + LOGGER.log(Level.INFO, "Reading doors!"); doors = new HashMap<>(header.getItemCount()); } else { - LOGGER.warning("Overrides doors!"); + LOGGER.log(Level.WARNING, "Overrides doors!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -864,10 +864,10 @@ private void readTraps(KwdHeader header, IResourceReader file) throws IOExceptio // Read the traps catalog if (traps == null) { - LOGGER.info("Reading traps!"); + LOGGER.log(Level.INFO, "Reading traps!"); traps = new HashMap<>(header.getItemCount()); } else { - LOGGER.warning("Overrides traps!"); + LOGGER.log(Level.WARNING, "Overrides traps!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -943,11 +943,11 @@ private void readRooms(KwdHeader header, IResourceReader file) throws RuntimeExc // Read the rooms catalog if (rooms == null) { - LOGGER.info("Reading rooms!"); + LOGGER.log(Level.INFO, "Reading rooms!"); rooms = new HashMap<>(header.getItemCount()); roomsByTerrainId = new HashMap<>(header.getItemCount()); } else { - LOGGER.warning("Overrides rooms!"); + LOGGER.log(Level.WARNING, "Overrides rooms!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -1025,10 +1025,10 @@ private void readMapInfo(KwdHeader header, IResourceReader data) throws IOExcept // Additional header data if (gameLevel == null) { - LOGGER.info("Reading level info!"); + LOGGER.log(Level.INFO, "Reading level info!"); gameLevel = new GameLevel(); } else { - LOGGER.warning("Overrides level!"); + LOGGER.log(Level.WARNING, "Overrides level!"); } // Property data @@ -1147,7 +1147,7 @@ private void readMapInfo(KwdHeader header, IResourceReader data) throws IOExcept // See if the globals are present if (readerPath.getId() == MapDataTypeEnum.GLOBALS) { customOverrides = true; - LOGGER.info("The map uses custom overrides!"); + LOGGER.log(Level.INFO, "The map uses custom overrides!"); } readerPath.setPath(path); @@ -1187,10 +1187,10 @@ private void readCreatures(KwdHeader header, IResourceReader file) throws IOExce // Read the creatures catalog if (creatures == null) { - LOGGER.info("Reading creatures!"); + LOGGER.log(Level.INFO, "Reading creatures!"); creatures = new HashMap<>(header.getItemCount()); } else { - LOGGER.warning("Overrides creatures!"); + LOGGER.log(Level.WARNING, "Overrides creatures!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -1558,10 +1558,10 @@ private void readObjects(KwdHeader header, IResourceReader file) throws IOExcept // Read the objects catalog if (objects == null) { - LOGGER.info("Reading objects!"); + LOGGER.log(Level.INFO, "Reading objects!"); objects = new HashMap<>(header.getItemCount()); } else { - LOGGER.warning("Overrides objects!"); + LOGGER.log(Level.WARNING, "Overrides objects!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -1636,10 +1636,10 @@ private void readCreatureSpells(KwdHeader header, IResourceReader file) throws I // Read the creature spells catalog if (creatureSpells == null) { - LOGGER.info("Reading creature spells!"); + LOGGER.log(Level.INFO, "Reading creature spells!"); creatureSpells = new HashMap<>(header.getItemCount()); } else { - LOGGER.warning("Overrides creature spells!"); + LOGGER.log(Level.WARNING, "Overrides creature spells!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -1692,10 +1692,10 @@ private void readEffectElements(KwdHeader header, IResourceReader file) throws I // Read the effect elements catalog if (effectElements == null) { - LOGGER.info("Reading effect elements!"); + LOGGER.log(Level.INFO, "Reading effect elements!"); effectElements = new HashMap<>(header.getItemCount()); } else { - LOGGER.warning("Overrides effect elements!"); + LOGGER.log(Level.WARNING, "Overrides effect elements!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -1748,10 +1748,10 @@ private void readEffects(KwdHeader header, IResourceReader file) throws IOExcept // Read the effects catalog if (effects == null) { - LOGGER.info("Reading effects!"); + LOGGER.log(Level.INFO, "Reading effects!"); effects = new HashMap<>(header.getItemCount()); } else { - LOGGER.warning("Overrides effects!"); + LOGGER.log(Level.WARNING, "Overrides effects!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -1825,10 +1825,10 @@ private void readKeeperSpells(KwdHeader header, IResourceReader file) throws IOE // Read the keeper spells catalog if (keeperSpells == null) { - LOGGER.info("Reading keeper spells!"); + LOGGER.log(Level.INFO, "Reading keeper spells!"); keeperSpells = new HashMap<>(header.getItemCount()); } else { - LOGGER.warning("Overrides keeper spells!"); + LOGGER.log(Level.WARNING, "Overrides keeper spells!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -1889,10 +1889,10 @@ private void readThings(KwdHeader header, IResourceReader file) throws IOExcepti // Read the requested Things file if (thingsByType == null) { - LOGGER.info("Reading things!"); + LOGGER.log(Level.INFO, "Reading things!"); thingsByType = new HashMap<>(12); } else { - LOGGER.warning("Overrides things!"); + LOGGER.log(Level.WARNING, "Overrides things!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -2209,10 +2209,10 @@ private void readShots(KwdHeader header, IResourceReader file) throws IOExceptio // Read the shots catalog if (shots == null) { - LOGGER.info("Reading shots!"); + LOGGER.log(Level.INFO, "Reading shots!"); shots = new HashMap<>(header.getItemCount()); } else { - LOGGER.warning("Overrides shots!"); + LOGGER.log(Level.WARNING, "Overrides shots!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -2277,10 +2277,10 @@ private void readTriggers(KwdHeader header, IResourceReader file) throws IOExcep // Read the requested Triggers file if (triggers == null) { - LOGGER.info("Reading triggers!"); + LOGGER.log(Level.INFO, "Reading triggers!"); triggers = new HashMap<>(header.getItemCount()); } else { - LOGGER.warning("Overrides triggers!"); + LOGGER.log(Level.WARNING, "Overrides triggers!"); } IResourceChunkReader reader = file.readChunk((int) header.size - header.headerSize); @@ -2496,7 +2496,7 @@ private void readTriggers(KwdHeader header, IResourceReader file) throws IOExcep default: reader.readAndCheckNull(8); // reader.skipBytes(8); - LOGGER.warning("Unsupported Type of TriggerGeneric"); + LOGGER.log(Level.WARNING, "Unsupported Type of TriggerGeneric"); break; } @@ -2737,7 +2737,7 @@ private void readTriggers(KwdHeader header, IResourceReader file) throws IOExcep default: reader.readAndCheckNull(8); // reader.skipBytes(8); - LOGGER.warning("Unsupported Type of TriggerAction"); + LOGGER.log(Level.WARNING, "Unsupported Type of TriggerAction"); break; } @@ -2778,7 +2778,7 @@ private void readVariables(KwdHeader header, IResourceReader file) throws IOExce // Read the requested VARIABLES file // Should be the GlobalVariables first, then the level's own if (variables == null) { - LOGGER.info("Reading variables!"); + LOGGER.log(Level.INFO, "Reading variables!"); availabilities = new ArrayList<>(); creaturePools = new HashMap<>(4); creatureStatistics = new HashMap<>(10); @@ -2788,13 +2788,13 @@ private void readVariables(KwdHeader header, IResourceReader file) throws IOExce playerAlliances = new HashSet<>(); unknownVariables = new HashSet<>(); } else { - LOGGER.info("Overrides variables!"); + LOGGER.log(Level.INFO, "Overrides variables!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); for (int i = 0; i < header.getItemCount(); i++) { if (!reader.hasRemaining()) { - LOGGER.warning("Variables end prematurely!"); + LOGGER.log(Level.WARNING, "Variables end prematurely!"); break; } int id = reader.readInteger(); diff --git a/src/toniarts/openkeeper/tools/convert/spr/SprFile.java b/src/toniarts/openkeeper/tools/convert/spr/SprFile.java index aa7712f7e..f89967aeb 100644 --- a/src/toniarts/openkeeper/tools/convert/spr/SprFile.java +++ b/src/toniarts/openkeeper/tools/convert/spr/SprFile.java @@ -21,13 +21,13 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.OutputStream; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.BufferedResourceReader; import toniarts.openkeeper.tools.convert.ByteArrayResourceReader; import toniarts.openkeeper.tools.convert.IResourceChunkReader; @@ -46,7 +46,7 @@ private class SprHeader { protected int framesCount; } - private static final Logger LOGGER = Logger.getLogger(SprFile.class.getName()); + private static final Logger LOGGER = System.getLogger(SprFile.class.getName()); public static final int[] PALETTE = getHalftonePalette(); @@ -80,7 +80,7 @@ private void parseSprFile(final IResourceReader data) throws RuntimeException, I header.tag = dataReader.readString(4); if (!header.tag.equals(PSFB)) { - LOGGER.log(Level.SEVERE, "This is not sprite file"); + LOGGER.log(Level.ERROR, "This is not sprite file"); throw new RuntimeException("This is not sprite file"); } diff --git a/src/toniarts/openkeeper/tools/convert/str/StrFile.java b/src/toniarts/openkeeper/tools/convert/str/StrFile.java index 32b7e8ca6..c6db8e7c6 100644 --- a/src/toniarts/openkeeper/tools/convert/str/StrFile.java +++ b/src/toniarts/openkeeper/tools/convert/str/StrFile.java @@ -17,6 +17,8 @@ package toniarts.openkeeper.tools.convert.str; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.ByteBuffer; import java.nio.file.Path; import java.util.ArrayList; @@ -25,11 +27,9 @@ import java.util.List; import java.util.Map.Entry; import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.ConversionUtils; -import toniarts.openkeeper.tools.convert.IResourceChunkReader; import toniarts.openkeeper.tools.convert.FileResourceReader; +import toniarts.openkeeper.tools.convert.IResourceChunkReader; import toniarts.openkeeper.tools.convert.ISeekableResourceReader; /** @@ -41,7 +41,7 @@ */ public class StrFile { - private static final Logger LOGGER = Logger.getLogger(StrFile.class.getName()); + private static final Logger LOGGER = System.getLogger(StrFile.class.getName()); private static final String STR_HEADER_IDENTIFIER = "BFST"; private static final int STR_HEADER_SIZE = 12; @@ -166,7 +166,7 @@ private String decodeEntry(final IResourceChunkReader data) { switch (chunkType) { case CHUNK_TYPE_END: { // End if (chunkLength != 0) { - LOGGER.severe("End chunk has non-zero length!"); + LOGGER.log(Level.ERROR, "End chunk has non-zero length!"); return null; } break; @@ -183,7 +183,7 @@ private String decodeEntry(final IResourceChunkReader data) { } case CHUNK_TYPE_STRING: { // String if (chunkLength > byteBuffer.remaining()) { - LOGGER.severe("Chunk length exceeds the remaining bytes length!"); + LOGGER.log(Level.ERROR, "Chunk length exceeds the remaining bytes length!"); return null; } @@ -194,7 +194,7 @@ private String decodeEntry(final IResourceChunkReader data) { break; } default: { - LOGGER.severe("Invalid chunk type!"); + LOGGER.log(Level.ERROR, "Invalid chunk type!"); return null; } } diff --git a/src/toniarts/openkeeper/tools/convert/textures/enginetextures/EngineTexturesFile.java b/src/toniarts/openkeeper/tools/convert/textures/enginetextures/EngineTexturesFile.java index 1122e03a0..2227c5b04 100644 --- a/src/toniarts/openkeeper/tools/convert/textures/enginetextures/EngineTexturesFile.java +++ b/src/toniarts/openkeeper/tools/convert/textures/enginetextures/EngineTexturesFile.java @@ -23,14 +23,14 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.HashMap; import java.util.Iterator; import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.imageio.ImageIO; import toniarts.openkeeper.tools.convert.FileResourceReader; import toniarts.openkeeper.tools.convert.IResourceChunkReader; @@ -49,7 +49,7 @@ */ public class EngineTexturesFile implements Iterable { - private static final Logger LOGGER = Logger.getLogger(EngineTexturesFile.class.getName()); + private static final Logger LOGGER = System.getLogger(EngineTexturesFile.class.getName()); private static final boolean DECOMPRESSION_ENABLED = true; private static final int CHESS_BOARD_GRID_SIZE = 8; diff --git a/src/toniarts/openkeeper/tools/convert/wad/WadFile.java b/src/toniarts/openkeeper/tools/convert/wad/WadFile.java index 43ecda65a..f435b7b8c 100644 --- a/src/toniarts/openkeeper/tools/convert/wad/WadFile.java +++ b/src/toniarts/openkeeper/tools/convert/wad/WadFile.java @@ -21,6 +21,8 @@ import java.io.File; import java.io.IOException; import java.io.OutputStream; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -29,8 +31,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.ConversionUtils; import toniarts.openkeeper.tools.convert.FileResourceReader; import toniarts.openkeeper.tools.convert.IResourceChunkReader; @@ -48,7 +48,7 @@ */ public class WadFile { - private static final Logger LOGGER = Logger.getLogger(WadFile.class.getName()); + private static final Logger LOGGER = System.getLogger(WadFile.class.getName()); private final Path file; private final Map wadFileEntries; diff --git a/src/toniarts/openkeeper/tools/modelviewer/ModelViewer.java b/src/toniarts/openkeeper/tools/modelviewer/ModelViewer.java index 2b13e5f3b..d2ff7b722 100644 --- a/src/toniarts/openkeeper/tools/modelviewer/ModelViewer.java +++ b/src/toniarts/openkeeper/tools/modelviewer/ModelViewer.java @@ -53,6 +53,8 @@ import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; @@ -62,11 +64,8 @@ import java.util.Collection; import java.util.Collections; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.audio.plugins.MP2Loader; -import toniarts.openkeeper.game.MapSelector; import toniarts.openkeeper.game.data.ISoundable; import toniarts.openkeeper.game.sound.SoundCategory; import toniarts.openkeeper.game.sound.SoundFile; @@ -124,7 +123,7 @@ public String toString() { } } - private static final Logger LOGGER = Logger.getLogger(ModelViewer.class.getName()); + private static final Logger LOGGER = System.getLogger(ModelViewer.class.getName()); //private final static float SCALE = 2; private static String dkIIFolder; @@ -266,7 +265,7 @@ public void simpleInitApp() { Node node = (Node) loader.load(asset); setupModel(node, false); } catch (Exception e) { - LOGGER.log(Level.SEVERE, "Failed to handle: " + kmfModel, e); + LOGGER.log(Level.ERROR, "Failed to handle: " + kmfModel, e); } } } @@ -619,7 +618,7 @@ private void fillWithFiles(List object, object.add(key.substring(0, key.length() - 4)); } } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Failed to load the maps!", ex); + LOGGER.log(Level.ERROR, "Failed to load the maps!", ex); } } diff --git a/src/toniarts/openkeeper/tools/modelviewer/SoundsLoader.java b/src/toniarts/openkeeper/tools/modelviewer/SoundsLoader.java index 5b3f2052f..53c04725e 100644 --- a/src/toniarts/openkeeper/tools/modelviewer/SoundsLoader.java +++ b/src/toniarts/openkeeper/tools/modelviewer/SoundsLoader.java @@ -22,13 +22,13 @@ import com.jme3.scene.Node; import java.awt.Point; import java.io.File; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.annotation.Nullable; import toniarts.openkeeper.Main; import toniarts.openkeeper.game.data.Settings; @@ -44,7 +44,7 @@ */ public class SoundsLoader { - private static final Logger LOGGER = Logger.getLogger(SoundsLoader.class.getName()); + private static final Logger LOGGER = System.getLogger(SoundsLoader.class.getName()); private static final Map CACHE = new HashMap<>(); diff --git a/src/toniarts/openkeeper/utils/AssetUtils.java b/src/toniarts/openkeeper/utils/AssetUtils.java index 107efaaa9..9966780e6 100644 --- a/src/toniarts/openkeeper/utils/AssetUtils.java +++ b/src/toniarts/openkeeper/utils/AssetUtils.java @@ -44,6 +44,8 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; @@ -51,8 +53,6 @@ import java.util.List; import java.util.Map; import java.util.function.Supplier; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.imageio.ImageIO; import toniarts.openkeeper.Main; import toniarts.openkeeper.cinematics.CameraSweepData; @@ -72,7 +72,7 @@ */ public class AssetUtils { - private static final Logger LOGGER = Logger.getLogger(AssetUtils.class.getName()); + private static final Logger LOGGER = System.getLogger(AssetUtils.class.getName()); private final static Object ASSET_LOCK = new Object(); private final static AssetCache ASSET_CACHE = new SimpleAssetCache(); @@ -197,7 +197,7 @@ public static CameraSweepData loadCameraSweep(final AssetManager assetManager, S if (asset == null || !(asset instanceof CameraSweepData)) { String msg = "Failed to load the camera sweep file " + resourceName + "!"; - LOGGER.severe(msg); + LOGGER.log(Level.ERROR, msg); throw new RuntimeException(msg); } @@ -317,7 +317,7 @@ private static Material createLightningSpriteMaterial(String name, boolean hasAl // Load the texture up mat.setTexture("DiffuseMap", tex); } catch (Exception e) { - LOGGER.log(Level.SEVERE, "Can't create a texture out of " + name + "!", e); + LOGGER.log(Level.ERROR, "Can't create a texture out of " + name + "!", e); } // Add to cache @@ -344,7 +344,7 @@ public static Material createParticleMaterial(ArtResource resource, AssetManager try { mat.setTexture("Texture", createArtResourceTexture(resource, assetManager)); } catch (Exception e) { - LOGGER.log(Level.SEVERE, "Can't create a texture out of " + resource + "!", e); + LOGGER.log(Level.ERROR, "Can't create a texture out of " + resource + "!", e); } // Add to cache @@ -460,7 +460,7 @@ public static void prewarmAssets(KwdFile kwdFile, AssetManager assetManager, Mai // Rooms prewarmArtResources(kwdFile.getRooms(), assetManager, app); } catch (Exception e) { - LOGGER.log(Level.SEVERE, "Failed to prewarm assets!", e); + LOGGER.log(Level.ERROR, "Failed to prewarm assets!", e); } finally { preWarmedAssets = true; } diff --git a/src/toniarts/openkeeper/utils/MapThumbnailGenerator.java b/src/toniarts/openkeeper/utils/MapThumbnailGenerator.java index 61a61aa5d..13163e28b 100644 --- a/src/toniarts/openkeeper/utils/MapThumbnailGenerator.java +++ b/src/toniarts/openkeeper/utils/MapThumbnailGenerator.java @@ -32,13 +32,13 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.HashMap; import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.imageio.ImageIO; import toniarts.openkeeper.tools.convert.AssetsConverter; import toniarts.openkeeper.tools.convert.map.KwdFile; @@ -55,7 +55,7 @@ */ public class MapThumbnailGenerator { - private static final Logger LOGGER = Logger.getLogger(MapThumbnailGenerator.class.getName()); + private static final Logger LOGGER = System.getLogger(MapThumbnailGenerator.class.getName()); private static final String PALETTE_IMAGE = "Textures".concat(File.separator).concat("Thumbnails").concat(File.separator).concat("MapColours.png"); private static ColorModel cm; diff --git a/src/toniarts/openkeeper/utils/PathUtils.java b/src/toniarts/openkeeper/utils/PathUtils.java index 8054d1ef1..fe6c60d28 100644 --- a/src/toniarts/openkeeper/utils/PathUtils.java +++ b/src/toniarts/openkeeper/utils/PathUtils.java @@ -19,6 +19,8 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.DirectoryStream; import java.nio.file.FileVisitResult; import java.nio.file.Files; @@ -32,13 +34,11 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.logging.Level; -import java.util.logging.Logger; import java.util.regex.Matcher; public class PathUtils { - private static final Logger LOGGER = Logger.getLogger(PathUtils.class.getName()); + private static final Logger LOGGER = System.getLogger(PathUtils.class.getName()); private static final Map FILENAME_CACHE = new HashMap<>(); private static final PathTree PATH_CACHE = new PathTree(); @@ -278,9 +278,9 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IO } }); } catch (IOException ex) { - LOGGER.log(Level.SEVERE, ex, () -> { + LOGGER.log(Level.ERROR, () -> { return "Failed to delete file/folder " + file + "!"; - }); + }, ex); return false; } return true; diff --git a/src/toniarts/openkeeper/utils/SettingUtils.java b/src/toniarts/openkeeper/utils/SettingUtils.java index 90db159be..7d483d1b0 100644 --- a/src/toniarts/openkeeper/utils/SettingUtils.java +++ b/src/toniarts/openkeeper/utils/SettingUtils.java @@ -22,15 +22,17 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.logging.Level; -import java.util.logging.Logger; + + public class SettingUtils { - private static final Logger LOGGER = Logger.getLogger(SettingUtils.class.getName()); + private static final Logger LOGGER = System.getLogger(SettingUtils.class.getName()); private final static Path SETTINGS_FILE = Paths.get("openkeeper.properties"); private final AppSettings settings; diff --git a/src/toniarts/openkeeper/utils/Utils.java b/src/toniarts/openkeeper/utils/Utils.java index 86b7e2a59..0f6a8cde0 100644 --- a/src/toniarts/openkeeper/utils/Utils.java +++ b/src/toniarts/openkeeper/utils/Utils.java @@ -16,6 +16,8 @@ */ package toniarts.openkeeper.utils; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.lang.management.ManagementFactory; import java.net.Inet4Address; import java.net.InetAddress; @@ -27,8 +29,6 @@ import java.util.Optional; import java.util.Random; import java.util.ResourceBundle; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.management.MBeanServer; import javax.management.ObjectName; import toniarts.openkeeper.Main; @@ -41,7 +41,7 @@ */ public class Utils { - private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); + private static final Logger LOGGER = System.getLogger(Utils.class.getName()); private static final Random RANDOM = new Random(); private static final String[] BLOOD_TYPES = {"IkI", "BO", "PoE", "BA", "MoO", "O", "ARh"}; diff --git a/src/toniarts/openkeeper/video/MovieMaterial.java b/src/toniarts/openkeeper/video/MovieMaterial.java index 6fa582bdf..d3c7f0ccc 100644 --- a/src/toniarts/openkeeper/video/MovieMaterial.java +++ b/src/toniarts/openkeeper/video/MovieMaterial.java @@ -25,9 +25,9 @@ import com.jme3.texture.Texture2D; import com.jme3.texture.image.ColorSpace; import com.jme3.util.BufferUtils; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.ByteBuffer; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.video.tgq.TgqFrame; /** @@ -38,7 +38,7 @@ */ public class MovieMaterial { - private static final Logger logger = Logger.getLogger(MovieMaterial.class.getName()); + private static final Logger logger = System.getLogger(MovieMaterial.class.getName()); private static final Image emptyImage = new Image(Format.ABGR8, 1, 1, BufferUtils.createByteBuffer(new byte[]{0, 0, 0, 0}), ColorSpace.Linear); private boolean noFrame = true; @@ -88,7 +88,7 @@ protected void videoFrameUpdated(TgqFrame frame) { } } catch (Exception ex) { - logger.log(Level.SEVERE, "Failed to update the frame!", ex); + logger.log(Level.ERROR, "Failed to update the frame!", ex); } } diff --git a/src/toniarts/openkeeper/video/TgqPlayer.java b/src/toniarts/openkeeper/video/TgqPlayer.java index 5a9e35a83..8a2d41f07 100644 --- a/src/toniarts/openkeeper/video/TgqPlayer.java +++ b/src/toniarts/openkeeper/video/TgqPlayer.java @@ -16,12 +16,12 @@ */ package toniarts.openkeeper.video; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.ByteBuffer; import java.nio.file.Path; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; @@ -45,7 +45,7 @@ */ public abstract class TgqPlayer { - private static final Logger logger = Logger.getLogger(TgqPlayer.class.getName()); + private static final Logger logger = System.getLogger(TgqPlayer.class.getName()); private final Path file; private static final int FPS = 25; // The specs say 15 FPS, but with this they are totally in sync, dunno why @@ -228,7 +228,7 @@ public void run() { } catch (InterruptedException e) { // Just stopped by the user } catch (Exception e) { - logger.log(Level.SEVERE, "Audio player failed!", e); + logger.log(Level.ERROR, "Audio player failed!", e); } finally { // Let the audio die nicely @@ -400,7 +400,7 @@ protected void onAudioHeader(EAAudioHeader audioHeader) { } catch (InterruptedException ex) { // No biggie } catch (Exception ex) { - logger.log(Level.SEVERE, "Failed to decode the frames on file " + file + "!", ex); + logger.log(Level.ERROR, "Failed to decode the frames on file " + file + "!", ex); stop(); } } finally { diff --git a/src/toniarts/openkeeper/video/tgq/TgqFile.java b/src/toniarts/openkeeper/video/tgq/TgqFile.java index 5f20fea23..5b7b30de9 100644 --- a/src/toniarts/openkeeper/video/tgq/TgqFile.java +++ b/src/toniarts/openkeeper/video/tgq/TgqFile.java @@ -20,11 +20,11 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.imageio.ImageIO; import toniarts.openkeeper.tools.convert.BufferedResourceReader; import toniarts.openkeeper.tools.convert.IResourceChunkReader; @@ -43,7 +43,7 @@ */ public abstract class TgqFile implements AutoCloseable { - private static final Logger LOGGER = Logger.getLogger(TgqFile.class.getName()); + private static final Logger LOGGER = System.getLogger(TgqFile.class.getName()); private final IResourceReader file; private EAAudioHeader audioHeader; diff --git a/src/toniarts/openkeeper/video/tgq/TgqFrame.java b/src/toniarts/openkeeper/video/tgq/TgqFrame.java index c783ad13a..903d64df6 100644 --- a/src/toniarts/openkeeper/video/tgq/TgqFrame.java +++ b/src/toniarts/openkeeper/video/tgq/TgqFrame.java @@ -17,10 +17,11 @@ package toniarts.openkeeper.video.tgq; import java.awt.image.BufferedImage; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.IntBuffer; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.BitReader; import toniarts.openkeeper.tools.convert.ConversionUtils; @@ -37,7 +38,7 @@ */ public class TgqFrame implements Comparable { - private static final Logger logger = Logger.getLogger(TgqFrame.class.getName()); + private static final Logger logger = System.getLogger(TgqFrame.class.getName()); private final int width; private final int height; @@ -278,7 +279,7 @@ private int decodeDc(BitReader bitReader, int component) { code = decodeVlc(bitReader, DC_VLC_BITS, DC_CROMINANCE_VLC)[2]; } if (code < 0) { - logger.severe("Invalid DC code!"); + logger.log(Level.ERROR, "Invalid DC code!"); return 0xFFFF; } diff --git a/src/toniarts/openkeeper/view/PlayerCameraState.java b/src/toniarts/openkeeper/view/PlayerCameraState.java index ffa08fd79..6f7339519 100644 --- a/src/toniarts/openkeeper/view/PlayerCameraState.java +++ b/src/toniarts/openkeeper/view/PlayerCameraState.java @@ -32,9 +32,9 @@ import com.jme3.renderer.Camera; import com.jme3.scene.Spatial; import java.awt.Point; +import java.lang.System.Logger; import java.util.HashSet; import java.util.Set; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.cinematics.Cinematic; import toniarts.openkeeper.game.control.Container; @@ -60,7 +60,7 @@ */ public class PlayerCameraState extends AbstractPauseAwareState implements ActionListener, AnalogListener { - private static final Logger LOGGER = Logger.getLogger(PlayerCameraState.class.getName()); + private static final Logger LOGGER = System.getLogger(PlayerCameraState.class.getName()); private Main app; private AppStateManager stateManager; diff --git a/src/toniarts/openkeeper/view/PlayerEntityViewState.java b/src/toniarts/openkeeper/view/PlayerEntityViewState.java index 4ec1b4bd1..bb1d8122e 100644 --- a/src/toniarts/openkeeper/view/PlayerEntityViewState.java +++ b/src/toniarts/openkeeper/view/PlayerEntityViewState.java @@ -26,10 +26,10 @@ import com.simsilica.es.EntityContainer; import com.simsilica.es.EntityData; import com.simsilica.es.EntityId; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.HashMap; import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.game.component.CreatureViewState; import toniarts.openkeeper.game.component.DoorViewState; import toniarts.openkeeper.game.component.ObjectViewState; @@ -63,7 +63,7 @@ */ public class PlayerEntityViewState extends AbstractAppState { - private static final Logger LOGGER = Logger.getLogger(PlayerEntityViewState.class.getName()); + private static final Logger LOGGER = System.getLogger(PlayerEntityViewState.class.getName()); private AppStateManager stateManager; private final KwdFile kwdFile; @@ -364,7 +364,7 @@ public ObjectModelContainer(EntityData ed) { @Override protected Spatial addObject(Entity e) { - LOGGER.log(Level.FINEST, "ObjectModelContainer.addObject({0})", e); + LOGGER.log(Level.TRACE, "ObjectModelContainer.addObject({0})", e); Spatial result = createObjectModel(e); updateObject(result, e); return result; @@ -372,7 +372,7 @@ protected Spatial addObject(Entity e) { @Override protected void updateObject(Spatial object, Entity e) { - LOGGER.log(Level.FINEST, "ObjectModelContainer.updateObject({0})", e); + LOGGER.log(Level.TRACE, "ObjectModelContainer.updateObject({0})", e); updateModelPosition(object, e); updateObjectModelState(object, e); } @@ -395,7 +395,7 @@ public CreatureModelContainer(EntityData ed) { @Override protected Spatial addObject(Entity e) { - LOGGER.log(Level.FINEST, "CreatureModelContainer.addObject({0})", e); + LOGGER.log(Level.TRACE, "CreatureModelContainer.addObject({0})", e); Spatial result = createCreatureModel(e); updateObject(result, e); return result; @@ -403,7 +403,7 @@ protected Spatial addObject(Entity e) { @Override protected void updateObject(Spatial object, Entity e) { - LOGGER.log(Level.FINEST, "CreatureModelContainer.updateObject({0})", e); + LOGGER.log(Level.TRACE, "CreatureModelContainer.updateObject({0})", e); updateModelPosition(object, e); updateCreatureModelAnimation(object, e); } @@ -426,7 +426,7 @@ public DoorModelContainer(EntityData ed) { @Override protected Spatial addObject(Entity e) { - LOGGER.log(Level.FINEST, "DoorModelContainer.addObject({0})", e); + LOGGER.log(Level.TRACE, "DoorModelContainer.addObject({0})", e); Spatial result = createDoorModel(e); updateObject(result, e); return result; @@ -434,7 +434,7 @@ protected Spatial addObject(Entity e) { @Override protected void updateObject(Spatial object, Entity e) { - LOGGER.log(Level.FINEST, "DoorModelContainer.updateObject({0})", e); + LOGGER.log(Level.TRACE, "DoorModelContainer.updateObject({0})", e); updateModelPosition(object, e); // LOL, but ok updateDoorModelState(object, e); } @@ -456,7 +456,7 @@ public TrapModelContainer(EntityData ed) { @Override protected Spatial addObject(Entity e) { - LOGGER.log(Level.FINEST, "TrapModelContainer.addObject({0})", e); + LOGGER.log(Level.TRACE, "TrapModelContainer.addObject({0})", e); Spatial result = createTrapModel(e); updateObject(result, e); return result; @@ -464,7 +464,7 @@ protected Spatial addObject(Entity e) { @Override protected void updateObject(Spatial object, Entity e) { - LOGGER.log(Level.FINEST, "TrapModelContainer.updateObject({0})", e); + LOGGER.log(Level.TRACE, "TrapModelContainer.updateObject({0})", e); updateModelPosition(object, e); //updateModelAnimation(object, e); } diff --git a/src/toniarts/openkeeper/view/PlayerInteractionState.java b/src/toniarts/openkeeper/view/PlayerInteractionState.java index e1dd1b729..ff5475405 100644 --- a/src/toniarts/openkeeper/view/PlayerInteractionState.java +++ b/src/toniarts/openkeeper/view/PlayerInteractionState.java @@ -39,9 +39,9 @@ import de.lessvoid.nifty.controls.Label; import de.lessvoid.nifty.elements.Element; import java.awt.Point; +import java.lang.System.Logger; import java.util.HashSet; import java.util.Set; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.game.console.ConsoleState; import toniarts.openkeeper.game.data.Settings; @@ -78,7 +78,7 @@ // TODO: States, now only selection public abstract class PlayerInteractionState extends AbstractPauseAwareState { - private static final Logger LOGGER = Logger.getLogger(PlayerInteractionState.class.getName()); + private static final Logger LOGGER = System.getLogger(PlayerInteractionState.class.getName()); private static final int SPELL_POSSESSION_ID = 2; private static final float CURSOR_UPDATE_INTERVAL = 0.25f; diff --git a/src/toniarts/openkeeper/view/PlayerMapViewState.java b/src/toniarts/openkeeper/view/PlayerMapViewState.java index 51d981239..c0cdc93df 100644 --- a/src/toniarts/openkeeper/view/PlayerMapViewState.java +++ b/src/toniarts/openkeeper/view/PlayerMapViewState.java @@ -27,12 +27,12 @@ import com.simsilica.es.EntityContainer; import com.simsilica.es.EntityData; import java.awt.Point; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.game.component.Gold; import toniarts.openkeeper.game.component.Health; @@ -62,7 +62,7 @@ */ public abstract class PlayerMapViewState extends AbstractAppState implements MapListener, PlayerActionListener { - private static final Logger LOGGER = Logger.getLogger(PlayerMapViewState.class.getName()); + private static final Logger LOGGER = System.getLogger(PlayerMapViewState.class.getName()); private Main app; private AppStateManager stateManager; @@ -256,7 +256,7 @@ public MapTileContainer(EntityData entityData, KwdFile kwdFile) { @Override protected IMapTileInformation addObject(Entity e) { - LOGGER.log(Level.FINEST, "MapTileContainer.addObject({0})", e); + LOGGER.log(Level.TRACE, "MapTileContainer.addObject({0})", e); IMapTileInformation result = new MapTileInformation(e); Point p = result.getLocation(); @@ -277,7 +277,7 @@ protected void updateObjects(Set set) { return; } - LOGGER.log(Level.FINEST, "MapTileContainer.updateObjects({0})", set.size()); + LOGGER.log(Level.TRACE, "MapTileContainer.updateObjects({0})", set.size()); // Collect the tiles Point[] updatableTiles = new Point[set.size()]; @@ -304,7 +304,7 @@ protected void updateObject(IMapTileInformation object, Entity e) { @Override protected void removeObject(IMapTileInformation object, Entity e) { - LOGGER.log(Level.FINEST, "MapTileContainer.removeObject({0})", e); + LOGGER.log(Level.TRACE, "MapTileContainer.removeObject({0})", e); } @Override diff --git a/src/toniarts/openkeeper/view/PossessionCameraState.java b/src/toniarts/openkeeper/view/PossessionCameraState.java index 8f7563038..a1dad2853 100644 --- a/src/toniarts/openkeeper/view/PossessionCameraState.java +++ b/src/toniarts/openkeeper/view/PossessionCameraState.java @@ -28,7 +28,7 @@ import com.jme3.math.Vector3f; import com.jme3.renderer.Camera; import java.awt.Point; -import java.util.logging.Logger; +import java.lang.System.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.game.FunnyCameraContol; import toniarts.openkeeper.game.data.Settings; @@ -42,7 +42,7 @@ */ public class PossessionCameraState extends AbstractPauseAwareState implements ActionListener, AnalogListener { - private static final Logger logger = Logger.getLogger(PossessionCameraState.class.getName()); + private static final Logger logger = System.getLogger(PossessionCameraState.class.getName()); private Main app; private InputManager inputManager; diff --git a/src/toniarts/openkeeper/view/PossessionInteractionState.java b/src/toniarts/openkeeper/view/PossessionInteractionState.java index 2d8bea2e8..93de945d8 100644 --- a/src/toniarts/openkeeper/view/PossessionInteractionState.java +++ b/src/toniarts/openkeeper/view/PossessionInteractionState.java @@ -28,7 +28,7 @@ import com.jme3.input.event.MouseMotionEvent; import com.jme3.input.event.TouchEvent; import com.jme3.math.Vector2f; -import java.util.logging.Logger; +import java.lang.System.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.game.data.Settings; import toniarts.openkeeper.game.state.AbstractPauseAwareState; @@ -50,7 +50,7 @@ public enum Action { MELEE, SPELL_1, SPELL_2, SPELL_3, ABILITY_1, ABILITY_2, GROUP } - private static final Logger logger = Logger.getLogger(PossessionInteractionState.class.getName()); + private static final Logger logger = System.getLogger(PossessionInteractionState.class.getName()); private Main app; diff --git a/src/toniarts/openkeeper/view/animation/AnimationLoader.java b/src/toniarts/openkeeper/view/animation/AnimationLoader.java index 9d4c32957..246b59a87 100644 --- a/src/toniarts/openkeeper/view/animation/AnimationLoader.java +++ b/src/toniarts/openkeeper/view/animation/AnimationLoader.java @@ -21,8 +21,8 @@ import com.jme3.asset.AssetManager; import com.jme3.scene.Node; import com.jme3.scene.Spatial; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import toniarts.openkeeper.tools.convert.KmfModelLoader; import toniarts.openkeeper.tools.convert.kmf.Anim; import toniarts.openkeeper.tools.convert.map.ArtResource; @@ -35,7 +35,7 @@ */ public final class AnimationLoader { - private static final Logger LOGGER = Logger.getLogger(AnimationLoader.class.getName()); + private static final Logger LOGGER = System.getLogger(AnimationLoader.class.getName()); private static final String START_ANIM_NODE_NAME = "Start"; private static final String END_ANIM_NODE_NAME = "End"; @@ -170,7 +170,7 @@ public static void playAnimation(Spatial spatial, ArtResource anim, AssetManager } catch (Exception e) { // FIXME sometimes NPE in CreatureControl.java // line: playAnimation(creature.getAnimEntranceResource()); - LOGGER.log(Level.SEVERE, e, () -> "Creature animation playing error: " + e.toString()); + LOGGER.log(Level.ERROR, () -> "Creature animation playing error: " + e.toString(), e); } } diff --git a/src/toniarts/openkeeper/view/control/TorchControl.java b/src/toniarts/openkeeper/view/control/TorchControl.java index 09540a604..40c0ecdc7 100644 --- a/src/toniarts/openkeeper/view/control/TorchControl.java +++ b/src/toniarts/openkeeper/view/control/TorchControl.java @@ -41,8 +41,8 @@ import java.awt.image.ImageProducer; import java.awt.image.RGBImageFilter; import java.io.IOException; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import toniarts.openkeeper.tools.convert.map.KwdFile; import toniarts.openkeeper.utils.AssetUtils; @@ -52,7 +52,7 @@ */ public final class TorchControl extends BillboardControl { - private static final Logger log = Logger.getLogger(TorchControl.class.getName()); + private static final Logger log = System.getLogger(TorchControl.class.getName()); private final int frames = 20; private Material material; diff --git a/src/toniarts/openkeeper/view/control/UnitFlowerControl.java b/src/toniarts/openkeeper/view/control/UnitFlowerControl.java index 8d5ed0c51..54dfef1c9 100644 --- a/src/toniarts/openkeeper/view/control/UnitFlowerControl.java +++ b/src/toniarts/openkeeper/view/control/UnitFlowerControl.java @@ -36,12 +36,12 @@ import com.simsilica.es.EntityId; import com.simsilica.es.WatchedEntity; import java.awt.Color; +import java.lang.System.Logger; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import java.util.logging.Logger; import toniarts.openkeeper.game.component.Health; import toniarts.openkeeper.game.component.Owner; import toniarts.openkeeper.utils.AssetUtils; @@ -56,7 +56,7 @@ */ public abstract class UnitFlowerControl extends BillboardControl implements IUnitFlowerControl { - private static final Logger LOGGER = Logger.getLogger(UnitFlowerControl.class.getName()); + private static final Logger LOGGER = System.getLogger(UnitFlowerControl.class.getName()); private static final float DISPLAY_SECONDS = 2.5f; private static final Collection> WATCHED_COMPONENTS = Arrays.asList(Health.class, Owner.class); diff --git a/src/toniarts/openkeeper/view/loader/CreatureLoader.java b/src/toniarts/openkeeper/view/loader/CreatureLoader.java index bb03b7d17..379c01519 100644 --- a/src/toniarts/openkeeper/view/loader/CreatureLoader.java +++ b/src/toniarts/openkeeper/view/loader/CreatureLoader.java @@ -19,8 +19,8 @@ import com.jme3.asset.AssetManager; import com.jme3.scene.Node; import com.jme3.scene.Spatial; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import toniarts.openkeeper.game.component.CreatureViewState; import toniarts.openkeeper.tools.convert.map.Creature; import toniarts.openkeeper.tools.convert.map.KwdFile; @@ -32,7 +32,7 @@ */ public class CreatureLoader implements ILoader { - private static final Logger LOGGER = Logger.getLogger(CreatureLoader.class.getName()); + private static final Logger LOGGER = System.getLogger(CreatureLoader.class.getName()); private final KwdFile kwdFile; @@ -47,7 +47,7 @@ public Spatial load(AssetManager assetManager, CreatureViewState creatureViewSta Node creatureRoot = new Node(creature.getName()); return creatureRoot; } catch (Exception e) { - LOGGER.log(Level.SEVERE, "Failed to load creature " + creatureViewState + "!", e); + LOGGER.log(Level.ERROR, "Failed to load creature " + creatureViewState + "!", e); } return null; } diff --git a/src/toniarts/openkeeper/view/loader/DoorLoader.java b/src/toniarts/openkeeper/view/loader/DoorLoader.java index 56eccb689..76f18f947 100644 --- a/src/toniarts/openkeeper/view/loader/DoorLoader.java +++ b/src/toniarts/openkeeper/view/loader/DoorLoader.java @@ -19,8 +19,8 @@ import com.jme3.asset.AssetManager; import com.jme3.scene.Node; import com.jme3.scene.Spatial; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import toniarts.openkeeper.game.component.DoorViewState; import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.tools.convert.map.Door; @@ -34,7 +34,7 @@ */ public class DoorLoader implements ILoader { - private static final Logger LOGGER = Logger.getLogger(DoorLoader.class.getName()); + private static final Logger LOGGER = System.getLogger(DoorLoader.class.getName()); private final KwdFile kwdFile; @@ -50,7 +50,7 @@ public Spatial load(AssetManager assetManager, DoorViewState door) { Node nodeObject = (Node) AssetUtils.loadModel(assetManager, artResource.getName(), artResource); return nodeObject; } catch (Exception e) { - LOGGER.log(Level.SEVERE, "Failed to load door " + door + "!", e); + LOGGER.log(Level.ERROR, "Failed to load door " + door + "!", e); } return null; } diff --git a/src/toniarts/openkeeper/view/loader/ObjectLoader.java b/src/toniarts/openkeeper/view/loader/ObjectLoader.java index f652c95d2..ada517a54 100644 --- a/src/toniarts/openkeeper/view/loader/ObjectLoader.java +++ b/src/toniarts/openkeeper/view/loader/ObjectLoader.java @@ -19,8 +19,8 @@ import com.jme3.asset.AssetManager; import com.jme3.scene.Node; import com.jme3.scene.Spatial; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import toniarts.openkeeper.game.component.ObjectViewState; import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.tools.convert.map.KwdFile; @@ -33,7 +33,7 @@ */ public class ObjectLoader implements ILoader { - private static final Logger LOGGER = Logger.getLogger(ObjectLoader.class.getName()); + private static final Logger LOGGER = System.getLogger(ObjectLoader.class.getName()); private final KwdFile kwdFile; @@ -48,7 +48,7 @@ public Spatial load(AssetManager assetManager, ObjectViewState object) { Node nodeObject = (Node) AssetUtils.loadModel(assetManager, artResource.getName(), artResource); return nodeObject; } catch (Exception e) { - LOGGER.log(Level.SEVERE, "Failed to load object " + object + "!", e); + LOGGER.log(Level.ERROR, "Failed to load object " + object + "!", e); } return null; } diff --git a/src/toniarts/openkeeper/view/loader/TrapLoader.java b/src/toniarts/openkeeper/view/loader/TrapLoader.java index 703413859..55a1d0560 100644 --- a/src/toniarts/openkeeper/view/loader/TrapLoader.java +++ b/src/toniarts/openkeeper/view/loader/TrapLoader.java @@ -19,8 +19,8 @@ import com.jme3.asset.AssetManager; import com.jme3.scene.Node; import com.jme3.scene.Spatial; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import toniarts.openkeeper.game.component.TrapViewState; import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.tools.convert.map.KwdFile; @@ -33,7 +33,7 @@ */ public class TrapLoader implements ILoader { - private static final Logger LOGGER = Logger.getLogger(TrapLoader.class.getName()); + private static final Logger LOGGER = System.getLogger(TrapLoader.class.getName()); private final KwdFile kwdFile; @@ -48,7 +48,7 @@ public Spatial load(AssetManager assetManager, TrapViewState trap) { Node nodeObject = (Node) AssetUtils.loadModel(assetManager, artResource.getName(), artResource); return nodeObject; } catch (Exception e) { - LOGGER.log(Level.SEVERE, "Failed to load trap " + trap + "!", e); + LOGGER.log(Level.ERROR, "Failed to load trap " + trap + "!", e); } return null; } diff --git a/src/toniarts/openkeeper/view/map/MapViewController.java b/src/toniarts/openkeeper/view/map/MapViewController.java index 526a4ec89..b6cb45914 100644 --- a/src/toniarts/openkeeper/view/map/MapViewController.java +++ b/src/toniarts/openkeeper/view/map/MapViewController.java @@ -33,6 +33,8 @@ import com.jme3.texture.Texture; import java.awt.Color; import java.awt.Point; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.ArrayList; import java.util.Arrays; import java.util.EnumSet; @@ -41,8 +43,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.common.EntityInstance; import toniarts.openkeeper.common.RoomInstance; import toniarts.openkeeper.game.map.IMapDataInformation; @@ -71,7 +71,7 @@ */ public abstract class MapViewController implements ILoader { - private static final Logger LOGGER = Logger.getLogger(MapViewController.class.getName()); + private static final Logger LOGGER = System.getLogger(MapViewController.class.getName()); public final static float TILE_WIDTH = 1; public final static float TILE_HEIGHT = 1; @@ -143,7 +143,7 @@ public Spatial load(AssetManager assetManager, KwdFile object) { try { handleTile(tile, terrain); } catch (Exception e) { - LOGGER.log(Level.SEVERE, "Failed to handle tile at " + tile.getLocation() + "!", e); + LOGGER.log(Level.ERROR, "Failed to handle tile at " + tile.getLocation() + "!", e); } // Update progress diff --git a/src/toniarts/openkeeper/view/map/RoomFactory.java b/src/toniarts/openkeeper/view/map/RoomFactory.java index 3147d4a2b..c297fa2d6 100644 --- a/src/toniarts/openkeeper/view/map/RoomFactory.java +++ b/src/toniarts/openkeeper/view/map/RoomFactory.java @@ -17,8 +17,8 @@ package toniarts.openkeeper.view.map; import com.jme3.asset.AssetManager; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import toniarts.openkeeper.common.RoomInstance; import toniarts.openkeeper.tools.convert.map.KwdFile; import toniarts.openkeeper.view.map.construction.DoubleQuadConstructor; @@ -45,7 +45,7 @@ */ public final class RoomFactory { - private static final Logger LOGGER = Logger.getLogger(RoomFactory.class.getName()); + private static final Logger LOGGER = System.getLogger(RoomFactory.class.getName()); private RoomFactory() { // Nope diff --git a/src/toniarts/openkeeper/view/map/Water.java b/src/toniarts/openkeeper/view/map/Water.java index 52545fda0..bba7549b2 100644 --- a/src/toniarts/openkeeper/view/map/Water.java +++ b/src/toniarts/openkeeper/view/map/Water.java @@ -31,12 +31,12 @@ import com.jme3.texture.Texture; import com.jme3.util.BufferUtils; import java.awt.Point; +import java.lang.System.Logger; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.logging.Logger; import toniarts.openkeeper.common.EntityInstance; import toniarts.openkeeper.tools.convert.AssetsConverter; import toniarts.openkeeper.tools.convert.map.ArtResource; @@ -60,7 +60,7 @@ public enum WaterType { SIMPLE, CLASSIC; }; - private static final Logger LOGGER = Logger.getLogger(Water.class.getName()); + private static final Logger LOGGER = System.getLogger(Water.class.getName()); private static final WaterType WATER_TYPE = WaterType.CLASSIC; diff --git a/src/toniarts/openkeeper/world/MapLoader.java b/src/toniarts/openkeeper/world/MapLoader.java index c5ec0c117..63dd2fe23 100644 --- a/src/toniarts/openkeeper/world/MapLoader.java +++ b/src/toniarts/openkeeper/world/MapLoader.java @@ -31,6 +31,8 @@ import com.jme3.texture.Texture; import java.awt.Color; import java.awt.Point; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.ArrayList; import java.util.EnumSet; import java.util.HashMap; @@ -40,8 +42,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.KmfModelLoader; import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.tools.convert.map.KwdFile; @@ -69,7 +69,7 @@ @Deprecated public abstract class MapLoader implements ILoader { - private static final Logger logger = Logger.getLogger(MapLoader.class.getName()); + private static final Logger logger = System.getLogger(MapLoader.class.getName()); public final static float TILE_WIDTH = 1; public final static float TILE_HEIGHT = 1; @@ -141,7 +141,7 @@ public Spatial load(AssetManager assetManager, KwdFile object) { try { handleTile(mapData.getTile(x, y), terrain); } catch (Exception e) { - logger.log(Level.SEVERE, "Failed to handle tile at " + x + ", " + y + "!", e); + logger.log(Level.ERROR, "Failed to handle tile at " + x + ", " + y + "!", e); } // Update progress diff --git a/src/toniarts/openkeeper/world/ThingLoader.java b/src/toniarts/openkeeper/world/ThingLoader.java index 49ef777b0..f2a36ef93 100644 --- a/src/toniarts/openkeeper/world/ThingLoader.java +++ b/src/toniarts/openkeeper/world/ThingLoader.java @@ -22,14 +22,14 @@ import com.jme3.scene.Node; import com.jme3.scene.Spatial; import java.awt.Point; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.annotation.Nullable; import toniarts.openkeeper.ai.creature.CreatureState; import toniarts.openkeeper.game.data.PlayerSpell; @@ -63,7 +63,7 @@ @Deprecated public class ThingLoader { - private static final Logger logger = Logger.getLogger(ThingLoader.class.getName()); + private static final Logger logger = System.getLogger(ThingLoader.class.getName()); private final WorldState worldState; private final CreatureLoader creatureLoader; diff --git a/src/toniarts/openkeeper/world/WorldState.java b/src/toniarts/openkeeper/world/WorldState.java index e484c81a2..99fd4bb67 100644 --- a/src/toniarts/openkeeper/world/WorldState.java +++ b/src/toniarts/openkeeper/world/WorldState.java @@ -37,6 +37,7 @@ import com.jme3.scene.Spatial; import com.jme3.scene.shape.Line; import java.awt.Point; +import java.lang.System.Logger; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -47,7 +48,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import java.util.logging.Logger; import java.util.stream.Collectors; import toniarts.openkeeper.Main; import toniarts.openkeeper.ai.creature.CreatureState; @@ -92,7 +92,7 @@ @Deprecated public abstract class WorldState extends AbstractAppState { - private static final Logger logger = Logger.getLogger(WorldState.class.getName()); + private static final Logger logger = System.getLogger(WorldState.class.getName()); private Main app; private AppStateManager stateManager; diff --git a/src/toniarts/openkeeper/world/control/UnitFlowerControl.java b/src/toniarts/openkeeper/world/control/UnitFlowerControl.java index e4d48e302..8657745fa 100644 --- a/src/toniarts/openkeeper/world/control/UnitFlowerControl.java +++ b/src/toniarts/openkeeper/world/control/UnitFlowerControl.java @@ -36,8 +36,8 @@ import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import javax.imageio.ImageIO; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.MapThumbnailGenerator; @@ -50,7 +50,7 @@ @Deprecated public class UnitFlowerControl extends BillboardControl { - private static final Logger logger = Logger.getLogger(UnitFlowerControl.class.getName()); + private static final Logger logger = System.getLogger(UnitFlowerControl.class.getName()); private static final float DISPLAY_SECONDS = 2.5f; @@ -300,7 +300,7 @@ private static void drawImage(AssetManager assetManager, Graphics2D g, int width BufferedImage img = ImageIO.read(assetManager.locateAsset(new AssetKey(image)).openStream()); g.drawImage(img, (width - img.getWidth()) / 2, (height - img.getHeight()) / 2, null); } catch (Exception ex) { - logger.log(Level.SEVERE, "Can't load the texture " + image + "!", ex); + logger.log(Level.ERROR, "Can't load the texture " + image + "!", ex); } } } diff --git a/src/toniarts/openkeeper/world/creature/CreatureLoader.java b/src/toniarts/openkeeper/world/creature/CreatureLoader.java index d56e2ab21..c6ef08362 100644 --- a/src/toniarts/openkeeper/world/creature/CreatureLoader.java +++ b/src/toniarts/openkeeper/world/creature/CreatureLoader.java @@ -20,7 +20,7 @@ import com.jme3.math.Vector2f; import com.jme3.scene.Node; import com.jme3.scene.Spatial; -import java.util.logging.Logger; +import java.lang.System.Logger; import toniarts.openkeeper.ai.creature.CreatureState; import toniarts.openkeeper.tools.convert.map.Creature; import toniarts.openkeeper.tools.convert.map.KwdFile; @@ -40,7 +40,7 @@ @Deprecated public abstract class CreatureLoader implements ILoader, CreatureListener { - private static final Logger logger = Logger.getLogger(CreatureLoader.class.getName()); + private static final Logger logger = System.getLogger(CreatureLoader.class.getName()); private final KwdFile kwdFile; private final WorldState worldState; diff --git a/src/toniarts/openkeeper/world/door/DoorLoader.java b/src/toniarts/openkeeper/world/door/DoorLoader.java index be8e830bc..0a5ccc98d 100644 --- a/src/toniarts/openkeeper/world/door/DoorLoader.java +++ b/src/toniarts/openkeeper/world/door/DoorLoader.java @@ -20,7 +20,7 @@ import com.jme3.math.FastMath; import com.jme3.scene.Node; import com.jme3.scene.Spatial; -import java.util.logging.Logger; +import java.lang.System.Logger; import toniarts.openkeeper.tools.convert.map.Door; import toniarts.openkeeper.tools.convert.map.KwdFile; import toniarts.openkeeper.tools.convert.map.Terrain; @@ -41,7 +41,7 @@ @Deprecated public class DoorLoader implements ILoader { - private static final Logger logger = Logger.getLogger(DoorLoader.class.getName()); + private static final Logger logger = System.getLogger(DoorLoader.class.getName()); private final KwdFile kwdFile; private final WorldState worldState; diff --git a/src/toniarts/openkeeper/world/effect/EffectControl.java b/src/toniarts/openkeeper/world/effect/EffectControl.java index 23a24481c..843ea04c8 100644 --- a/src/toniarts/openkeeper/world/effect/EffectControl.java +++ b/src/toniarts/openkeeper/world/effect/EffectControl.java @@ -22,7 +22,7 @@ import com.jme3.renderer.ViewPort; import com.jme3.scene.Spatial; import com.jme3.scene.control.AbstractControl; -import java.util.logging.Logger; +import java.lang.System.Logger; import toniarts.openkeeper.tools.convert.map.Effect; /** @@ -32,7 +32,7 @@ @Deprecated public abstract class EffectControl extends AbstractControl { - private static final Logger log = Logger.getLogger(EffectControl.class.getName()); + private static final Logger log = System.getLogger(EffectControl.class.getName()); private Effect effect; diff --git a/src/toniarts/openkeeper/world/effect/EffectElementControl.java b/src/toniarts/openkeeper/world/effect/EffectElementControl.java index d72edb194..5f64f89c8 100644 --- a/src/toniarts/openkeeper/world/effect/EffectElementControl.java +++ b/src/toniarts/openkeeper/world/effect/EffectElementControl.java @@ -22,7 +22,7 @@ import com.jme3.renderer.ViewPort; import com.jme3.scene.Spatial; import com.jme3.scene.control.AbstractControl; -import java.util.logging.Logger; +import java.lang.System.Logger; import toniarts.openkeeper.tools.convert.map.EffectElement; import static toniarts.openkeeper.world.effect.EffectControl.calculateVelocity; @@ -33,7 +33,7 @@ @Deprecated public abstract class EffectElementControl extends AbstractControl { - private static final Logger log = Logger.getLogger(EffectElementControl.class.getName()); + private static final Logger log = System.getLogger(EffectElementControl.class.getName()); private EffectElement effect; diff --git a/src/toniarts/openkeeper/world/effect/EffectManagerState.java b/src/toniarts/openkeeper/world/effect/EffectManagerState.java index 3c7162ac2..5519554ff 100644 --- a/src/toniarts/openkeeper/world/effect/EffectManagerState.java +++ b/src/toniarts/openkeeper/world/effect/EffectManagerState.java @@ -22,10 +22,10 @@ import com.jme3.asset.AssetManager; import com.jme3.math.Vector3f; import com.jme3.scene.Node; +import java.lang.System.Logger; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.map.KwdFile; import toniarts.openkeeper.world.WorldState; @@ -38,7 +38,7 @@ @Deprecated public class EffectManagerState extends AbstractAppState { - private static final Logger logger = Logger.getLogger(EffectManagerState.class.getName()); + private static final Logger logger = System.getLogger(EffectManagerState.class.getName()); public static int ROOM_CLAIM_ID = 2; diff --git a/src/toniarts/openkeeper/world/effect/VisualEffect.java b/src/toniarts/openkeeper/world/effect/VisualEffect.java index 94ab87422..fa6d90916 100644 --- a/src/toniarts/openkeeper/world/effect/VisualEffect.java +++ b/src/toniarts/openkeeper/world/effect/VisualEffect.java @@ -27,6 +27,8 @@ import com.jme3.scene.Node; import com.jme3.scene.Spatial; import java.awt.Color; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -34,8 +36,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; -import java.util.logging.Level; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.tools.convert.map.ArtResource.ArtResourceType; import toniarts.openkeeper.tools.convert.map.Effect; @@ -62,7 +62,7 @@ @Deprecated public class VisualEffect { - private static final Logger logger = Logger.getLogger(VisualEffect.class.getName()); + private static final Logger logger = System.getLogger(VisualEffect.class.getName()); private final Effect effect; private final Map effectElements; @@ -166,7 +166,7 @@ public void onDie(Vector3f location) { public void onHit(Vector3f location) { TileData tile = effectManagerState.getWorldState().getMapData().getTile(WorldUtils.vectorToPoint(location)); if (tile == null) { - logger.warning("Effect hit error"); + logger.log(Level.WARNING, "Effect hit error"); return; } @@ -316,7 +316,7 @@ public void onDeath(Vector3f location) { public void onHit(Vector3f location) { TileData tile = effectManagerState.getWorldState().getMapData().getTile(WorldUtils.vectorToPoint(location)); if (tile == null) { - logger.warning("Effect hit error"); + logger.log(Level.WARNING, "Effect hit error"); return; } diff --git a/src/toniarts/openkeeper/world/object/HighlightControl.java b/src/toniarts/openkeeper/world/object/HighlightControl.java index e1500e811..e08bec7c7 100644 --- a/src/toniarts/openkeeper/world/object/HighlightControl.java +++ b/src/toniarts/openkeeper/world/object/HighlightControl.java @@ -17,7 +17,7 @@ package toniarts.openkeeper.world.object; import com.jme3.scene.control.AbstractControl; -import java.util.logging.Logger; +import java.lang.System.Logger; import toniarts.openkeeper.utils.AssetUtils; import static toniarts.openkeeper.world.MapLoader.COLOR_FLASH; import toniarts.openkeeper.world.control.IInteractiveControl; @@ -29,7 +29,7 @@ @Deprecated public abstract class HighlightControl extends AbstractControl implements IInteractiveControl { - private static final Logger logger = Logger.getLogger(HighlightControl.class.getName()); + private static final Logger logger = System.getLogger(HighlightControl.class.getName()); private boolean active = false; diff --git a/src/toniarts/openkeeper/world/object/ObjectLoader.java b/src/toniarts/openkeeper/world/object/ObjectLoader.java index c5e6dd285..c77b00e23 100644 --- a/src/toniarts/openkeeper/world/object/ObjectLoader.java +++ b/src/toniarts/openkeeper/world/object/ObjectLoader.java @@ -21,8 +21,8 @@ import com.jme3.scene.Node; import com.jme3.scene.Spatial; import java.awt.Point; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import javax.annotation.Nonnull; import toniarts.openkeeper.game.data.PlayerSpell; import toniarts.openkeeper.tools.convert.map.GameObject; @@ -45,7 +45,7 @@ @Deprecated public class ObjectLoader implements ILoader { - private static final Logger LOGGER = Logger.getLogger(ObjectLoader.class.getName()); + private static final Logger LOGGER = System.getLogger(ObjectLoader.class.getName()); public final static short OBJECT_GOLD_ID = 1; //public final static short OBJECT_GOLD_BAG_ID = 2; diff --git a/src/toniarts/openkeeper/world/room/RoomConstructor.java b/src/toniarts/openkeeper/world/room/RoomConstructor.java index 3c1e3423c..15962154c 100644 --- a/src/toniarts/openkeeper/world/room/RoomConstructor.java +++ b/src/toniarts/openkeeper/world/room/RoomConstructor.java @@ -17,8 +17,8 @@ package toniarts.openkeeper.world.room; import com.jme3.asset.AssetManager; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import static toniarts.openkeeper.tools.convert.map.Room.TileConstruction.*; import toniarts.openkeeper.world.WorldState; import toniarts.openkeeper.world.effect.EffectManagerState; @@ -32,7 +32,7 @@ @Deprecated public final class RoomConstructor { - private static final Logger logger = Logger.getLogger(RoomConstructor.class.getName()); + private static final Logger logger = System.getLogger(RoomConstructor.class.getName()); private RoomConstructor() { // Nope diff --git a/src/toniarts/openkeeper/world/terrain/Water.java b/src/toniarts/openkeeper/world/terrain/Water.java index e94895131..99104aabb 100644 --- a/src/toniarts/openkeeper/world/terrain/Water.java +++ b/src/toniarts/openkeeper/world/terrain/Water.java @@ -31,12 +31,12 @@ import com.jme3.texture.Texture; import com.jme3.util.BufferUtils; import java.awt.Point; +import java.lang.System.Logger; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.logging.Logger; import toniarts.openkeeper.tools.convert.AssetsConverter; import toniarts.openkeeper.tools.convert.map.ArtResource; import toniarts.openkeeper.tools.convert.map.Terrain; @@ -62,7 +62,7 @@ public enum WaterType { SIMPLE, CLASSIC; }; - private static final Logger logger = Logger.getLogger(Water.class.getName()); + private static final Logger logger = System.getLogger(Water.class.getName()); private static final WaterType WATER_TYPE = WaterType.CLASSIC; diff --git a/src/toniarts/openkeeper/world/trap/TrapLoader.java b/src/toniarts/openkeeper/world/trap/TrapLoader.java index 12b1be9c5..e2215d3b7 100644 --- a/src/toniarts/openkeeper/world/trap/TrapLoader.java +++ b/src/toniarts/openkeeper/world/trap/TrapLoader.java @@ -19,7 +19,7 @@ import com.jme3.asset.AssetManager; import com.jme3.scene.Node; import com.jme3.scene.Spatial; -import java.util.logging.Logger; +import java.lang.System.Logger; import toniarts.openkeeper.tools.convert.map.KwdFile; import toniarts.openkeeper.tools.convert.map.Thing; import toniarts.openkeeper.utils.AssetUtils; @@ -38,7 +38,7 @@ @Deprecated public class TrapLoader implements ILoader { - private static final Logger logger = Logger.getLogger(TrapLoader.class.getName()); + private static final Logger logger = System.getLogger(TrapLoader.class.getName()); private final KwdFile kwdFile; private final WorldState worldState; From 11adf503c13ab8a431f45ed3727dba367718a90d Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Tue, 12 Dec 2023 21:09:53 +0200 Subject: [PATCH 19/47] Unified logger variable naming --- src/toniarts/openkeeper/Main.java | 28 +++--- .../openkeeper/audio/plugins/MP2Loader.java | 4 +- .../openkeeper/cinematics/Cinematic.java | 2 +- src/toniarts/openkeeper/game/MapSelector.java | 4 +- .../game/controller/CreaturesController.java | 14 +-- .../game/controller/DoorsController.java | 4 +- .../game/controller/GameController.java | 6 +- .../game/controller/ObjectsController.java | 4 +- .../controller/RoomControllerFactory.java | 4 +- .../game/controller/TrapsController.java | 4 +- .../controller/chicken/ChickenController.java | 4 +- .../creature/CreatureController.java | 6 +- .../controller/entity/EntityController.java | 4 +- .../openkeeper/game/data/Settings.java | 8 +- .../openkeeper/game/logic/DeathSystem.java | 2 +- .../openkeeper/game/logic/DecaySystem.java | 2 +- .../game/logic/GameLogicManager.java | 6 +- .../openkeeper/game/logic/MovementSystem.java | 2 +- .../game/navigation/NavigationService.java | 4 +- .../game/network/NetworkClient.java | 14 +-- .../game/network/game/GameClientService.java | 22 ++--- .../game/network/game/GameHostedService.java | 10 +-- .../network/lobby/LobbyHostedService.java | 6 +- .../openkeeper/game/sound/GlobalCategory.java | 4 +- .../openkeeper/game/sound/SoundCategory.java | 6 +- .../openkeeper/game/sound/SoundGroup.java | 4 +- .../openkeeper/game/state/CheatState.java | 8 +- .../game/state/ConnectionState.java | 30 +++---- .../game/state/GameClientState.java | 4 +- .../game/state/GameServerState.java | 8 +- .../game/state/MainMenuScreenController.java | 12 +-- .../openkeeper/game/state/MainMenuState.java | 16 ++-- .../game/state/PlayerScreenController.java | 6 +- .../openkeeper/game/state/PlayerState.java | 2 +- .../openkeeper/game/state/SoundState.java | 8 +- .../game/state/loading/LoadingState.java | 6 +- .../game/state/session/LocalGameSession.java | 4 +- .../openkeeper/game/task/AbstractTask.java | 4 +- .../openkeeper/game/task/TaskManager.java | 6 +- .../trigger/AbstractThingTriggerControl.java | 2 +- .../game/trigger/TriggerControl.java | 14 +-- .../openkeeper/game/trigger/TriggerData.java | 4 +- .../game/trigger/TriggerGenericData.java | 14 +-- .../ActionPointTriggerControl.java | 6 +- .../creature/CreatureTriggerControl.java | 2 +- .../game/trigger/door/DoorTriggerControl.java | 2 +- .../trigger/object/ObjectTriggerControl.java | 2 +- .../trigger/party/PartyTriggerControl.java | 2 +- .../trigger/player/PlayerTriggerControl.java | 6 +- .../gui/nifty/CustomTabControl.java | 8 +- .../gui/nifty/CustomTabGroupControl.java | 18 ++-- .../gui/nifty/chat/ChatBoxViewConverter.java | 10 +-- .../gui/nifty/chat/ChatControl.java | 12 +-- .../tools/convert/AssetsConverter.java | 8 +- .../tools/convert/BufferedResourceReader.java | 4 +- .../tools/convert/ConversionUtils.java | 8 +- .../tools/convert/FileResourceReader.java | 4 +- .../tools/convert/ResourceChunkReader.java | 6 +- .../conversion/ConversionTaskManager.java | 12 +-- .../convert/conversion/task/ConvertFonts.java | 12 +-- .../conversion/task/ConvertHiScores.java | 6 +- .../conversion/task/ConvertMapThumbnails.java | 10 +-- .../conversion/task/ConvertModels.java | 14 +-- .../conversion/task/ConvertMouseCursors.java | 6 +- .../convert/conversion/task/ConvertPaths.java | 6 +- .../conversion/task/ConvertSounds.java | 6 +- .../convert/conversion/task/ConvertTexts.java | 8 +- .../conversion/task/ConvertTextures.java | 16 ++-- .../openkeeper/tools/convert/map/KwdFile.java | 88 +++++++++---------- .../openkeeper/tools/convert/spr/SprFile.java | 4 +- .../openkeeper/tools/convert/str/StrFile.java | 10 +-- .../enginetextures/EngineTexturesFile.java | 4 +- .../openkeeper/tools/convert/wad/WadFile.java | 4 +- .../tools/modelviewer/ModelViewer.java | 6 +- .../tools/modelviewer/SoundsLoader.java | 6 +- src/toniarts/openkeeper/utils/AssetUtils.java | 18 ++-- .../utils/MapThumbnailGenerator.java | 6 +- src/toniarts/openkeeper/utils/PathUtils.java | 6 +- .../openkeeper/utils/SettingUtils.java | 6 +- src/toniarts/openkeeper/utils/Utils.java | 6 +- .../openkeeper/video/tgq/TgqFile.java | 8 +- .../openkeeper/view/PlayerCameraState.java | 2 +- .../view/PlayerEntityViewState.java | 18 ++-- .../view/PlayerInteractionState.java | 2 +- .../openkeeper/view/PlayerMapViewState.java | 10 +-- .../view/animation/AnimationLoader.java | 8 +- .../openkeeper/view/control/TorchControl.java | 4 +- .../view/control/UnitFlowerControl.java | 2 +- .../view/loader/CreatureLoader.java | 4 +- .../openkeeper/view/loader/DoorLoader.java | 4 +- .../openkeeper/view/loader/ObjectLoader.java | 4 +- .../openkeeper/view/loader/TrapLoader.java | 4 +- .../view/map/MapViewController.java | 8 +- .../openkeeper/view/map/RoomFactory.java | 4 +- src/toniarts/openkeeper/view/map/Water.java | 2 +- .../openkeeper/world/object/ObjectLoader.java | 4 +- 96 files changed, 386 insertions(+), 386 deletions(-) diff --git a/src/toniarts/openkeeper/Main.java b/src/toniarts/openkeeper/Main.java index f3d0040dd..15c846108 100644 --- a/src/toniarts/openkeeper/Main.java +++ b/src/toniarts/openkeeper/Main.java @@ -88,7 +88,7 @@ */ public class Main extends SimpleApplication { - private static final Logger LOGGER = System.getLogger(Main.class.getName()); + private static final Logger logger = System.getLogger(Main.class.getName()); private static boolean folderOk = false; private static boolean conversionOk = false; @@ -123,7 +123,7 @@ public static void main(String[] args) throws InvocationTargetException, Interru if (checkSetup(app)) { app.start(); } else { - LOGGER.log(Level.WARNING, "Application setup not complete!!"); + logger.log(Level.WARNING, "Application setup not complete!!"); } } @@ -171,7 +171,7 @@ private static boolean checkSetup(final Main app) throws InterruptedException { // First and foremost, the folder if (!PathUtils.checkDkFolder(getDkIIFolder())) { - LOGGER.log(Level.INFO, "Dungeon Keeper II folder not found or valid! Prompting user!"); + logger.log(Level.INFO, "Dungeon Keeper II folder not found or valid! Prompting user!"); saveSetup = true; // Let the user select @@ -190,7 +190,7 @@ protected void continueOk(String path) { // If the folder is ok, check the conversion if (folderOk && (AssetsConverter.isConversionNeeded(Main.getSettings()))) { - LOGGER.log(Level.INFO, "Need to convert the assets!"); + logger.log(Level.INFO, "Need to convert the assets!"); saveSetup = true; // Convert @@ -225,12 +225,12 @@ private static void initSettings(Main app) { try { Files.createDirectories(Paths.get(USER_HOME_FOLDER)); } catch (IOException ex) { - LOGGER.log(Level.ERROR, "Failed to create folder " + USER_HOME_FOLDER + "!", ex); + logger.log(Level.ERROR, "Failed to create folder " + USER_HOME_FOLDER + "!", ex); } try { Files.createDirectories(Paths.get(SCREENSHOTS_FOLDER)); } catch (IOException ex) { - LOGGER.log(Level.ERROR, "Failed to create folder " + SCREENSHOTS_FOLDER + "!", ex); + logger.log(Level.ERROR, "Failed to create folder " + SCREENSHOTS_FOLDER + "!", ex); } // Init the user settings (which in JME are app settings) @@ -295,7 +295,7 @@ public void run() { try { LOCK.wait(); } catch (InterruptedException e) { - LOGGER.log(Level.WARNING, "Lock interrupted!"); + logger.log(Level.WARNING, "Lock interrupted!"); } } } @@ -411,7 +411,7 @@ public void onLoad() { // Eventually we are going to use Nifty, the XML files take some time to parse nifty.addXml(new ByteArrayInputStream(mainMenuUiXml)); } catch (Exception e) { - LOGGER.log(Level.ERROR, "Failed to load the game!", e); + logger.log(Level.ERROR, "Failed to load the game!", e); app.stop(); } } @@ -510,7 +510,7 @@ public static BufferedImage[] getApplicationIcons() { readIcon("/Icons/openkeeper16.png") }; } catch (IOException ex) { - LOGGER.log(Level.ERROR, "Failed to load the application icons!", ex); + logger.log(Level.ERROR, "Failed to load the application icons!", ex); } return null; } @@ -544,7 +544,7 @@ public void restart() { // Continue to save the settings Settings.getInstance().save(); } catch (IOException ex) { - LOGGER.log(Level.WARNING, "Can not save the settings!", ex); + logger.log(Level.WARNING, "Can not save the settings!", ex); } } catch (Exception e) { @@ -587,7 +587,7 @@ public static ResourceBundle getResourceBundle(String baseName) { ClassLoader loader = new URLClassLoader(urls); return ResourceBundle.getBundle(baseName, Locale.getDefault(), loader); } catch (Exception e) { - LOGGER.log(Level.ERROR, "Failed to locate the resource bundle " + baseName + " in " + file + "!", e); + logger.log(Level.ERROR, "Failed to locate the resource bundle " + baseName + " in " + file + "!", e); } // Works only from the IDE @@ -626,12 +626,12 @@ private void playIntro() { try { introSequence.add(PathUtils.getRealFileName(getDkIIFolder(), PathUtils.DKII_MOVIES_FOLDER + "BullfrogIntro.tgq")); } catch (IOException ex) { - LOGGER.log(Level.INFO, "Could not find the Bullfrog intro!", ex); + logger.log(Level.INFO, "Could not find the Bullfrog intro!", ex); } try { introSequence.add(PathUtils.getRealFileName(getDkIIFolder(), PathUtils.DKII_MOVIES_FOLDER + "INTRO.TGQ")); } catch (IOException ex) { - LOGGER.log(Level.INFO, "Could not find the game intro!", ex); + logger.log(Level.INFO, "Could not find the game intro!", ex); } playMovie(introSequence); } @@ -655,7 +655,7 @@ protected void onPlayingEnd() { }; stateManager.attach(movieState); } catch (Exception e) { - LOGGER.log(Level.WARNING, "Failed to initiate playing " + movieFile + "!", e); + logger.log(Level.WARNING, "Failed to initiate playing " + movieFile + "!", e); // Continue with the movie list playMovie(introSequence); diff --git a/src/toniarts/openkeeper/audio/plugins/MP2Loader.java b/src/toniarts/openkeeper/audio/plugins/MP2Loader.java index 34819fd12..cb2c9cd89 100644 --- a/src/toniarts/openkeeper/audio/plugins/MP2Loader.java +++ b/src/toniarts/openkeeper/audio/plugins/MP2Loader.java @@ -42,7 +42,7 @@ */ public class MP2Loader implements AssetLoader { - private static final Logger LOGGER = System.getLogger(MP2Loader.class.getName()); + private static final Logger logger = System.getLogger(MP2Loader.class.getName()); public static final String FILE_EXTENSION = "mp2"; @@ -155,7 +155,7 @@ private AudioData load(InputStream inputStream, boolean stream) throws IOExcepti return audioData; } } catch (IOException | UnsupportedMediaException ex) { - LOGGER.log(Level.ERROR, "Failed to read a frame!", ex); + logger.log(Level.ERROR, "Failed to read a frame!", ex); throw new IOException("Failed to read a frame!"); } } diff --git a/src/toniarts/openkeeper/cinematics/Cinematic.java b/src/toniarts/openkeeper/cinematics/Cinematic.java index e146a3c78..3d72219ef 100644 --- a/src/toniarts/openkeeper/cinematics/Cinematic.java +++ b/src/toniarts/openkeeper/cinematics/Cinematic.java @@ -50,7 +50,7 @@ */ public class Cinematic extends com.jme3.cinematic.Cinematic { - private static final Logger LOGGER = System.getLogger(Cinematic.class.getName()); + private static final Logger logger = System.getLogger(Cinematic.class.getName()); private final AssetManager assetManager; private static final boolean IS_DEBUG = false; diff --git a/src/toniarts/openkeeper/game/MapSelector.java b/src/toniarts/openkeeper/game/MapSelector.java index 1b1861d34..bab9d28c0 100644 --- a/src/toniarts/openkeeper/game/MapSelector.java +++ b/src/toniarts/openkeeper/game/MapSelector.java @@ -40,7 +40,7 @@ */ public class MapSelector { - private static final Logger LOGGER = System.getLogger(MapSelector.class.getName()); + private static final Logger logger = System.getLogger(MapSelector.class.getName()); private final List skirmishMaps = new ArrayList<>(); private final List multiplayerMaps = new ArrayList<>(); @@ -69,7 +69,7 @@ public MapSelector() { } } } catch (IOException ex) { - LOGGER.log(Level.ERROR, "Failed to load the maps!", ex); + logger.log(Level.ERROR, "Failed to load the maps!", ex); } // Sort them diff --git a/src/toniarts/openkeeper/game/controller/CreaturesController.java b/src/toniarts/openkeeper/game/controller/CreaturesController.java index e6b9e65a1..3c666ecdf 100644 --- a/src/toniarts/openkeeper/game/controller/CreaturesController.java +++ b/src/toniarts/openkeeper/game/controller/CreaturesController.java @@ -84,7 +84,7 @@ */ public class CreaturesController implements ICreaturesController { - private static final Logger LOGGER = System.getLogger(CreaturesController.class.getName()); + private static final Logger logger = System.getLogger(CreaturesController.class.getName()); private final KwdFile kwdFile; private final EntityData entityData; @@ -143,14 +143,14 @@ private void loadCreatures() { try { spawnCreature(creature, new Vector2f(creature.getPosX(), creature.getPosY())); } catch (Exception ex) { - LOGGER.log(Level.WARNING, "Could not load Thing " + creature + "!", ex); + logger.log(Level.WARNING, "Could not load Thing " + creature + "!", ex); } } for (Thing.NeutralCreature creature : kwdFile.getThings(Thing.NeutralCreature.class)) { try { spawnCreature(creature, new Vector2f(creature.getPosX(), creature.getPosY())); } catch (Exception ex) { - LOGGER.log(Level.WARNING, "Could not load Thing " + creature + "!", ex); + logger.log(Level.WARNING, "Could not load Thing " + creature + "!", ex); } } for (Thing.KeeperCreature creature : kwdFile.getThings(Thing.KeeperCreature.class)) { @@ -160,7 +160,7 @@ private void loadCreatures() { } spawnCreature(creature, new Vector2f(creature.getPosX(), creature.getPosY())); } catch (Exception ex) { - LOGGER.log(Level.WARNING, "Could not load Thing " + creature + "!", ex); + logger.log(Level.WARNING, "Could not load Thing " + creature + "!", ex); } } for (Thing.DeadBody creature : kwdFile.getThings(Thing.DeadBody.class)) { @@ -170,7 +170,7 @@ private void loadCreatures() { } spawnCreature(creature, new Vector2f(creature.getPosX(), creature.getPosY())); } catch (Exception ex) { - LOGGER.log(Level.WARNING, "Could not load Thing " + creature + "!", ex); + logger.log(Level.WARNING, "Could not load Thing " + creature + "!", ex); } } for (Thing.HeroParty heroParty : kwdFile.getThings(Thing.HeroParty.class)) { @@ -178,7 +178,7 @@ private void loadCreatures() { heroParties.put(heroParty.getId(), heroParty); creaturePartiesByPartyId.put(heroParty.getId(), new PartyController(heroParty)); } catch (Exception ex) { - LOGGER.log(Level.WARNING, "Could not load Thing " + heroParty + "!", ex); + logger.log(Level.WARNING, "Could not load Thing " + heroParty + "!", ex); } } } @@ -492,7 +492,7 @@ public void spawnHeroParty(short partyId, PartyType partyType, Vector2f position IPartyController partyController = creaturePartiesByPartyId.get(partyId); if (partyController.isCreated()) { partyController = new PartyController(heroParties.get(partyId)); - LOGGER.log(Level.TRACE, "Re-spawning party {0}!", partyId); + logger.log(Level.TRACE, "Re-spawning party {0}!", partyId); } partyController.setType(partyType); partyController.create(); diff --git a/src/toniarts/openkeeper/game/controller/DoorsController.java b/src/toniarts/openkeeper/game/controller/DoorsController.java index 4647d9969..a63a71a65 100644 --- a/src/toniarts/openkeeper/game/controller/DoorsController.java +++ b/src/toniarts/openkeeper/game/controller/DoorsController.java @@ -52,7 +52,7 @@ */ public class DoorsController implements IDoorsController { - private static final Logger LOGGER = System.getLogger(DoorsController.class.getName()); + private static final Logger logger = System.getLogger(DoorsController.class.getName()); private KwdFile kwdFile; private EntityData entityData; @@ -96,7 +96,7 @@ private void loadDoors() { } loadDoor(door); } catch (Exception ex) { - LOGGER.log(Level.WARNING, "Could not load Thing.", ex); + logger.log(Level.WARNING, "Could not load Thing.", ex); } } } diff --git a/src/toniarts/openkeeper/game/controller/GameController.java b/src/toniarts/openkeeper/game/controller/GameController.java index 8d4b74f27..bbec0a29a 100644 --- a/src/toniarts/openkeeper/game/controller/GameController.java +++ b/src/toniarts/openkeeper/game/controller/GameController.java @@ -89,7 +89,7 @@ */ public class GameController implements IGameLogicUpdatable, AutoCloseable, IGameTimer, ILevelInfo, IGameController { - private static final Logger LOGGER = System.getLogger(GameController.class.getName()); + private static final Logger logger = System.getLogger(GameController.class.getName()); public static final int LEVEL_TIMER_MAX_COUNT = 16; private static final int LEVEL_FLAG_MAX_COUNT = 128; @@ -203,7 +203,7 @@ public void createNewGame() { kwdFile.load(); } } catch (IOException ex) { - LOGGER.log(Level.ERROR, "Failed to load the map file!", ex); + logger.log(Level.ERROR, "Failed to load the map file!", ex); throw new RuntimeException(level, ex); } @@ -550,7 +550,7 @@ public void setEnd(boolean win) { try { Main.getUserSettings().save(); } catch (IOException ex) { - LOGGER.log(Level.ERROR, "Failed to save the level progress!", ex); + logger.log(Level.ERROR, "Failed to save the level progress!", ex); } } } diff --git a/src/toniarts/openkeeper/game/controller/ObjectsController.java b/src/toniarts/openkeeper/game/controller/ObjectsController.java index 86d980590..303af5e1d 100644 --- a/src/toniarts/openkeeper/game/controller/ObjectsController.java +++ b/src/toniarts/openkeeper/game/controller/ObjectsController.java @@ -67,7 +67,7 @@ */ public class ObjectsController implements IObjectsController { - private static final Logger LOGGER = System.getLogger(ObjectsController.class.getName()); + private static final Logger logger = System.getLogger(ObjectsController.class.getName()); public final static short OBJECT_GOLD_ID = 1; //public final static short OBJECT_GOLD_BAG_ID = 2; @@ -133,7 +133,7 @@ private void loadObjects() { } loadObject(object); } catch (Exception ex) { - LOGGER.log(Level.WARNING, "Could not load Thing.", ex); + logger.log(Level.WARNING, "Could not load Thing.", ex); } } } diff --git a/src/toniarts/openkeeper/game/controller/RoomControllerFactory.java b/src/toniarts/openkeeper/game/controller/RoomControllerFactory.java index 43fb6a1ac..0c7f86457 100644 --- a/src/toniarts/openkeeper/game/controller/RoomControllerFactory.java +++ b/src/toniarts/openkeeper/game/controller/RoomControllerFactory.java @@ -46,7 +46,7 @@ */ public final class RoomControllerFactory { - private static final Logger LOGGER = System.getLogger(RoomControllerFactory.class.getName()); + private static final Logger logger = System.getLogger(RoomControllerFactory.class.getName()); private RoomControllerFactory() { // Nope @@ -116,7 +116,7 @@ public static IRoomController constructRoom(KwdFile kwdFile, RoomInstance roomIn default: // TODO - LOGGER.log(Level.WARNING, "Room {0} not exist", roomName); + logger.log(Level.WARNING, "Room {0} not exist", roomName); return new NormalRoomController(kwdFile, roomInstance, objectsController); } } diff --git a/src/toniarts/openkeeper/game/controller/TrapsController.java b/src/toniarts/openkeeper/game/controller/TrapsController.java index 241f932d7..e4d73a030 100644 --- a/src/toniarts/openkeeper/game/controller/TrapsController.java +++ b/src/toniarts/openkeeper/game/controller/TrapsController.java @@ -48,7 +48,7 @@ */ public class TrapsController implements ITrapsController { - private static final Logger LOGGER = System.getLogger(TrapsController.class.getName()); + private static final Logger logger = System.getLogger(TrapsController.class.getName()); private KwdFile kwdFile; private EntityData entityData; @@ -89,7 +89,7 @@ private void loadTraps() { } loadTrap(trap); } catch (Exception ex) { - LOGGER.log(Level.WARNING, "Could not load Thing.", ex); + logger.log(Level.WARNING, "Could not load Thing.", ex); } } } diff --git a/src/toniarts/openkeeper/game/controller/chicken/ChickenController.java b/src/toniarts/openkeeper/game/controller/chicken/ChickenController.java index a14545d3b..9e8c9bdc3 100644 --- a/src/toniarts/openkeeper/game/controller/chicken/ChickenController.java +++ b/src/toniarts/openkeeper/game/controller/chicken/ChickenController.java @@ -49,7 +49,7 @@ */ public class ChickenController extends EntityController implements IChickenController { - private static final Logger LOGGER = System.getLogger(ChickenController.class.getName()); + private static final Logger logger = System.getLogger(ChickenController.class.getName()); private final INavigationService navigationService; private final IGameTimer gameTimer; @@ -113,7 +113,7 @@ public boolean isStopped() { private boolean createNavigation(Point currentLocation, Point destination, Point faceTarget) { GraphPath path = navigationService.findPath(currentLocation, destination, this); if (path == null) { - LOGGER.log(Level.WARNING, "No path from {0} to {1}", new Object[]{getChickenCoordinates(), destination}); + logger.log(Level.WARNING, "No path from {0} to {1}", new Object[]{getChickenCoordinates(), destination}); return true; } entityData.setComponent(entityId, new Navigation(destination, faceTarget, SteeringUtils.pathToList(path))); diff --git a/src/toniarts/openkeeper/game/controller/creature/CreatureController.java b/src/toniarts/openkeeper/game/controller/creature/CreatureController.java index c538dc5dd..ad271f142 100644 --- a/src/toniarts/openkeeper/game/controller/creature/CreatureController.java +++ b/src/toniarts/openkeeper/game/controller/creature/CreatureController.java @@ -93,7 +93,7 @@ */ public class CreatureController extends EntityController implements ICreatureController { - private static final Logger LOGGER = System.getLogger(CreatureController.class.getName()); + private static final Logger logger = System.getLogger(CreatureController.class.getName()); private final INavigationService navigationService; private final ITaskManager taskManager; @@ -442,7 +442,7 @@ public void navigateToAssignedTask() { private boolean createNavigation(Point currentLocation, Point destination, Point faceTarget) { GraphPath path = navigationService.findPath(currentLocation, destination, this); if (path == null) { - LOGGER.log(Level.WARNING, "No path from {0} to {1}", getCreatureCoordinates(), destination); + logger.log(Level.WARNING, "No path from {0} to {1}", getCreatureCoordinates(), destination); return true; } entityData.setComponent(entityId, new Navigation(destination, faceTarget, SteeringUtils.pathToList(path))); @@ -1239,7 +1239,7 @@ public void giveObject(IObjectController object) { entityData.removeComponent(object.getEntityId(), Gold.class); object.remove(); } else { - LOGGER.log(Level.WARNING, "Object {0} receiving not specified!", object.getType()); + logger.log(Level.WARNING, "Object {0} receiving not specified!", object.getType()); } } diff --git a/src/toniarts/openkeeper/game/controller/entity/EntityController.java b/src/toniarts/openkeeper/game/controller/entity/EntityController.java index 32dbb8388..de2135d53 100644 --- a/src/toniarts/openkeeper/game/controller/entity/EntityController.java +++ b/src/toniarts/openkeeper/game/controller/entity/EntityController.java @@ -47,7 +47,7 @@ */ public class EntityController implements IEntityController { - private static final Logger LOGGER = System.getLogger(EntityController.class.getName()); + private static final Logger logger = System.getLogger(EntityController.class.getName()); protected final EntityId entityId; protected final EntityData entityData; @@ -166,7 +166,7 @@ private void removeRoomStorage(RoomStorage roomStorage, Position position, Entit return; } if (position == null) { - LOGGER.log(Level.WARNING, () -> "Entity died and is part of room storage (" + roomStorage + ") but hasn't got location!"); + logger.log(Level.WARNING, () -> "Entity died and is part of room storage (" + roomStorage + ") but hasn't got location!"); return; } diff --git a/src/toniarts/openkeeper/game/data/Settings.java b/src/toniarts/openkeeper/game/data/Settings.java index 23208b50f..ffa39a05b 100644 --- a/src/toniarts/openkeeper/game/data/Settings.java +++ b/src/toniarts/openkeeper/game/data/Settings.java @@ -246,7 +246,7 @@ public static List getSettings(SettingCategory category) { private final Integer specialKey; // Control, Alt, Shift } - private static final Logger LOGGER = System.getLogger(Settings.class.getName()); + private static final Logger logger = System.getLogger(Settings.class.getName()); private static final Settings INSTANCE; private static final int MAX_FPS = 200; @@ -276,7 +276,7 @@ private Settings(final AppSettings settings) { BufferedInputStream bin = new BufferedInputStream(in)) { settings.load(bin); } catch (IOException ex) { - LOGGER.log(Logger.Level.WARNING, "Settings file failed to load from " + USER_SETTINGS_FILE + "!", ex); + logger.log(Logger.Level.WARNING, "Settings file failed to load from " + USER_SETTINGS_FILE + "!", ex); } } this.settings.setFrameRate(Math.max(MAX_FPS, settings.getFrequency())); @@ -318,7 +318,7 @@ public static List getRenderers() { } } } catch (IllegalAccessException | IllegalArgumentException | SecurityException ex) { - LOGGER.log(Logger.Level.ERROR, ex.getMessage()); + logger.log(Logger.Level.ERROR, ex.getMessage()); } return renderers; @@ -334,7 +334,7 @@ public void save() throws IOException { BufferedOutputStream bout = new BufferedOutputStream(out)) { settings.save(bout); } catch (IOException ex) { - LOGGER.log(Logger.Level.WARNING, "Settings file failed to save!", ex); + logger.log(Logger.Level.WARNING, "Settings file failed to save!", ex); } } diff --git a/src/toniarts/openkeeper/game/logic/DeathSystem.java b/src/toniarts/openkeeper/game/logic/DeathSystem.java index 7e62e7264..2da200164 100644 --- a/src/toniarts/openkeeper/game/logic/DeathSystem.java +++ b/src/toniarts/openkeeper/game/logic/DeathSystem.java @@ -38,7 +38,7 @@ */ public class DeathSystem implements IGameLogicUpdatable { - private static final Logger LOGGER = System.getLogger(DeathSystem.class.getName()); + private static final Logger logger = System.getLogger(DeathSystem.class.getName()); private final IEntityPositionLookup entityPositionLookup; private final EntitySet deathEntities; diff --git a/src/toniarts/openkeeper/game/logic/DecaySystem.java b/src/toniarts/openkeeper/game/logic/DecaySystem.java index 05a2913f7..9a9961ba2 100644 --- a/src/toniarts/openkeeper/game/logic/DecaySystem.java +++ b/src/toniarts/openkeeper/game/logic/DecaySystem.java @@ -36,7 +36,7 @@ */ public class DecaySystem implements IGameLogicUpdatable { - private static final Logger LOGGER = System.getLogger(DecaySystem.class.getName()); + private static final Logger logger = System.getLogger(DecaySystem.class.getName()); private final EntitySet decayEntities; private final EntityData entityData; diff --git a/src/toniarts/openkeeper/game/logic/GameLogicManager.java b/src/toniarts/openkeeper/game/logic/GameLogicManager.java index a2aabf16c..eea5170a6 100644 --- a/src/toniarts/openkeeper/game/logic/GameLogicManager.java +++ b/src/toniarts/openkeeper/game/logic/GameLogicManager.java @@ -28,7 +28,7 @@ */ public class GameLogicManager implements IGameLoopManager { - private static final Logger LOGGER = System.getLogger(GameLogicManager.class.getName()); + private static final Logger logger = System.getLogger(GameLogicManager.class.getName()); private long ticks = 0; private double timeElapsed = 0.0; @@ -57,13 +57,13 @@ public void processTick(long delta) { try { updatable.processTick(tpf, timeElapsed); } catch (Exception e) { - LOGGER.log(Level.ERROR, "Error in game logic tick on " + updatable.getClass() + "!", e); + logger.log(Level.ERROR, "Error in game logic tick on " + updatable.getClass() + "!", e); } } // Logging long tickTime = System.nanoTime() - start; - LOGGER.log(tickTime < delta ? Level.TRACE : Level.ERROR, "Tick took {0} ms!", TimeUnit.MILLISECONDS.convert(tickTime, TimeUnit.NANOSECONDS)); + logger.log(tickTime < delta ? Level.TRACE : Level.ERROR, "Tick took {0} ms!", TimeUnit.MILLISECONDS.convert(tickTime, TimeUnit.NANOSECONDS)); // Increase ticks & time timeElapsed += tpf; diff --git a/src/toniarts/openkeeper/game/logic/MovementSystem.java b/src/toniarts/openkeeper/game/logic/MovementSystem.java index 0ddd57b98..8cc2daa13 100644 --- a/src/toniarts/openkeeper/game/logic/MovementSystem.java +++ b/src/toniarts/openkeeper/game/logic/MovementSystem.java @@ -45,7 +45,7 @@ */ public class MovementSystem implements IGameLogicUpdatable { - private static final Logger LOGGER = System.getLogger(MovementSystem.class.getName()); + private static final Logger logger = System.getLogger(MovementSystem.class.getName()); private final static boolean INDEPENDENT_FACING = false; diff --git a/src/toniarts/openkeeper/game/navigation/NavigationService.java b/src/toniarts/openkeeper/game/navigation/NavigationService.java index c3b1f762c..dd005895e 100644 --- a/src/toniarts/openkeeper/game/navigation/NavigationService.java +++ b/src/toniarts/openkeeper/game/navigation/NavigationService.java @@ -41,7 +41,7 @@ */ public class NavigationService implements INavigationService { - private static final Logger LOGGER = System.getLogger(NavigationService.class.getName()); + private static final Logger logger = System.getLogger(NavigationService.class.getName()); private final IMapController mapController; private final IEntityPositionLookup entityPositionLookup; @@ -68,7 +68,7 @@ public Point findRandomAccessibleTile(Point start, int radius, INavigable naviga public Point findRandomTileInRoom(Point start, int radius, INavigable navigable) { RoomInstance roomInstance = mapController.getRoomInstanceByCoordinates(start); if (roomInstance == null) { - LOGGER.log(Level.WARNING, () -> "Starting point " + start + " is not in a room!"); + logger.log(Level.WARNING, () -> "Starting point " + start + " is not in a room!"); return null; } Set allowedTiles = new HashSet<>(roomInstance.getCoordinates()); diff --git a/src/toniarts/openkeeper/game/network/NetworkClient.java b/src/toniarts/openkeeper/game/network/NetworkClient.java index 017f964b6..9431c032d 100644 --- a/src/toniarts/openkeeper/game/network/NetworkClient.java +++ b/src/toniarts/openkeeper/game/network/NetworkClient.java @@ -45,7 +45,7 @@ */ public class NetworkClient implements ChatSession { - private static final Logger LOGGER = System.getLogger(NetworkClient.class.getName()); + private static final Logger logger = System.getLogger(NetworkClient.class.getName()); private final Client client; @@ -97,7 +97,7 @@ protected void sendPing() { } public void start() throws IOException { - LOGGER.log(Level.INFO, "Network: Player starting"); + logger.log(Level.INFO, "Network: Player starting"); client.start(); } @@ -106,7 +106,7 @@ public T getService(Class type) { } public void close() { - LOGGER.log(Level.INFO, "Network: closing client connection"); + logger.log(Level.INFO, "Network: closing client connection"); if (client != null && client.isConnected()) { client.close(); @@ -156,20 +156,20 @@ protected void onMessageTime(MessageTime msg) { } protected void onMessagePlayerInfo(MessagePlayerInfo msg) { - LOGGER.log(Level.INFO, "Network: player info {0}", msg); + logger.log(Level.INFO, "Network: player info {0}", msg); //entity = msg.getEntityId(); } protected void onMessageServerInfo(MessageServerInfo msg) { - LOGGER.log(Level.INFO, "Network: server info {0}", msg); + logger.log(Level.INFO, "Network: server info {0}", msg); } protected void onConnected() { - LOGGER.log(Level.INFO, "Network: Player connected"); + logger.log(Level.INFO, "Network: Player connected"); } protected void onDisconnected(ClientStateListener.DisconnectInfo di) { - LOGGER.log(Level.INFO, "Network: player disconnected {0}", di); + logger.log(Level.INFO, "Network: player disconnected {0}", di); } } diff --git a/src/toniarts/openkeeper/game/network/game/GameClientService.java b/src/toniarts/openkeeper/game/network/game/GameClientService.java index 539409583..3045fa217 100644 --- a/src/toniarts/openkeeper/game/network/game/GameClientService.java +++ b/src/toniarts/openkeeper/game/network/game/GameClientService.java @@ -51,7 +51,7 @@ public class GameClientService extends AbstractClientService implements GameSessionClientService { - private static final Logger LOGGER = System.getLogger(GameClientService.class.getName()); + private static final Logger logger = System.getLogger(GameClientService.class.getName()); private RmiClientService rmiService; private GameSession delegate; @@ -84,18 +84,18 @@ public void removeGameSessionListener(GameSessionListener l) { @Override protected void onInitialize(ClientServiceManager s) { - LOGGER.log(Level.TRACE, "onInitialize({0})", s); + logger.log(Level.TRACE, "onInitialize({0})", s); this.rmiService = getService(RmiClientService.class); if (rmiService == null) { throw new RuntimeException("GameClientService requires RMI service"); } - LOGGER.log(Level.TRACE, "Sharing session callback."); + logger.log(Level.TRACE, "Sharing session callback."); rmiService.share(NetworkConstants.GAME_CHANNEL, sessionCallback, GameSessionListener.class); // Listen for the streaming messages // s.getService(StreamingClientService.class).addListener(GameHostedService.MessageType.GAME_DATA.ordinal(), (StreamedMessageListener) (GameData data) -> { // -// LOGGER.log(Level.FINEST, "onGameDataLoaded({0})", new Object[]{data}); +// logger.log(Level.FINEST, "onGameDataLoaded({0})", new Object[]{data}); // for (GameSessionListener l : listeners.getArray()) { // l.onGameDataLoaded(data.getPlayers(), data.getMapData()); // } @@ -113,7 +113,7 @@ protected void onInitialize(ClientServiceManager s) { */ @Override public void start() { - LOGGER.log(Level.TRACE, "start()"); + logger.log(Level.TRACE, "start()"); super.start(); } @@ -125,7 +125,7 @@ private GameSession getDelegate() { if (delegate == null) { // Look it up this.delegate = rmiService.getRemoteObject(GameSession.class); - LOGGER.log(Level.TRACE, "delegate:{0}", delegate); + logger.log(Level.TRACE, "delegate:{0}", delegate); if (delegate == null) { throw new RuntimeException("No game session found"); } @@ -216,7 +216,7 @@ public ClientMessageListener() { public void messageReceived(Client source, Message message) { if (message instanceof GameLoadProgressData) { GameLoadProgressData data = (GameLoadProgressData) message; - LOGGER.log(Level.TRACE, "onLoadStatusUpdate({0},{1})", new Object[]{data.getProgress(), data.getKeeperId()}); + logger.log(Level.TRACE, "onLoadStatusUpdate({0},{1})", new Object[]{data.getProgress(), data.getKeeperId()}); for (GameSessionListener l : listeners.getArray()) { l.onLoadStatusUpdate(data.getProgress(), data.getKeeperId()); } @@ -234,7 +234,7 @@ private class GameSessionCallback implements GameSessionListener { public void onGameDataLoaded(Collection players) { // This is dealt with streaming - LOGGER.log(Level.TRACE, "onGameDataLoaded({0})", new Object[]{players}); + logger.log(Level.TRACE, "onGameDataLoaded({0})", new Object[]{players}); for (GameSessionListener l : listeners) { l.onGameDataLoaded(players); } @@ -242,7 +242,7 @@ public void onGameDataLoaded(Collection players) { @Override public void onGameStarted() { - LOGGER.log(Level.TRACE, "onGameStarted()"); + logger.log(Level.TRACE, "onGameStarted()"); for (GameSessionListener l : listeners.getArray()) { l.onGameStarted(); } @@ -250,7 +250,7 @@ public void onGameStarted() { @Override public void onLoadComplete(short keeperId) { - LOGGER.log(Level.TRACE, "onLoadComplete({0})", new Object[]{keeperId}); + logger.log(Level.TRACE, "onLoadComplete({0})", new Object[]{keeperId}); for (GameSessionListener l : listeners.getArray()) { l.onLoadComplete(keeperId); } @@ -258,7 +258,7 @@ public void onLoadComplete(short keeperId) { @Override public void onLoadStatusUpdate(float progress, short keeperId) { -// LOGGER.log(Level.FINEST, "onLoadStatusUpdate({0},{1})", new Object[]{progress, keeperId}); +// logger.log(Level.FINEST, "onLoadStatusUpdate({0},{1})", new Object[]{progress, keeperId}); // for (GameSessionListener l : listeners.getArray()) { // l.onLoadStatusUpdate(progress, keeperId); // } diff --git a/src/toniarts/openkeeper/game/network/game/GameHostedService.java b/src/toniarts/openkeeper/game/network/game/GameHostedService.java index 33919979f..159404c1d 100644 --- a/src/toniarts/openkeeper/game/network/game/GameHostedService.java +++ b/src/toniarts/openkeeper/game/network/game/GameHostedService.java @@ -66,7 +66,7 @@ public enum MessageType { GAME_LOAD_PROGRESS } - private static final Logger LOGGER = System.getLogger(GameHostedService.class.getName()); + private static final Logger logger = System.getLogger(GameHostedService.class.getName()); private boolean readyToLoad = false; private final Object loadLock = new Object(); @@ -111,7 +111,7 @@ public void terminate(HostedServiceManager serviceManager) { try { entityUpdater.awaitTermination(1, TimeUnit.MINUTES); } catch (InterruptedException ex) { - LOGGER.log(Level.ERROR, "Failed to wait for the entity updater to shutdown!", ex); + logger.log(Level.ERROR, "Failed to wait for the entity updater to shutdown!", ex); } } } @@ -121,7 +121,7 @@ public void terminate(HostedServiceManager serviceManager) { * generated player name. */ public void startHostingOnConnection(HostedConnection conn, ClientInfo clientInfo) { - LOGGER.log(Level.TRACE, "startHostingOnConnection({0})", conn); + logger.log(Level.TRACE, "startHostingOnConnection({0})", conn); GameSessionImpl session = new GameSessionImpl(conn, clientInfo); players.put(clientInfo, session); @@ -140,7 +140,7 @@ public void startHostingOnConnection(HostedConnection conn) { @Override public void stopHostingOnConnection(HostedConnection conn) { - LOGGER.log(Level.TRACE, "stopHostingOnConnection({0})", conn); + logger.log(Level.TRACE, "stopHostingOnConnection({0})", conn); GameSessionImpl player = getGameSession(conn); if (player != null) { @@ -387,7 +387,7 @@ public void messageReceived(HostedConnection source, Message message) { if (message instanceof GameLoadProgressData) { GameLoadProgressData data = (GameLoadProgressData) message; - LOGGER.log(Level.TRACE, "onLoadStatus({0},{1})", new Object[]{data.getProgress(), clientInfo.getKeeper().getId()}); + logger.log(Level.TRACE, "onLoadStatus({0},{1})", new Object[]{data.getProgress(), clientInfo.getKeeper().getId()}); clientInfo.setLoadingProgress(data.getProgress()); diff --git a/src/toniarts/openkeeper/game/network/lobby/LobbyHostedService.java b/src/toniarts/openkeeper/game/network/lobby/LobbyHostedService.java index ccabcfff1..4d06f1fd4 100644 --- a/src/toniarts/openkeeper/game/network/lobby/LobbyHostedService.java +++ b/src/toniarts/openkeeper/game/network/lobby/LobbyHostedService.java @@ -46,7 +46,7 @@ */ public class LobbyHostedService extends AbstractHostedConnectionService implements LobbyService { - private static final Logger LOGGER = System.getLogger(LobbyHostedService.class.getName()); + private static final Logger logger = System.getLogger(LobbyHostedService.class.getName()); private static final String ATTRIBUTE_SESSION = "lobby.session"; public static final String ATTRIBUTE_KEEPER_ID = "lobby.keeperID"; @@ -88,7 +88,7 @@ protected void onInitialize(HostedServiceManager s) { * and will then be able to send/receive messages. */ public void startHostingOnConnection(HostedConnection conn, String playerName) { - LOGGER.log(Level.TRACE, "startHostingOnConnection({0})", conn); + logger.log(Level.TRACE, "startHostingOnConnection({0})", conn); boolean playerAdded = false; if (players.size() < maxPlayers && !gameStarted) { @@ -136,7 +136,7 @@ public void startHostingOnConnection(HostedConnection conn) { @Override public void stopHostingOnConnection(HostedConnection conn) { - LOGGER.log(Level.TRACE, "stopHostingOnConnection({0})", conn); + logger.log(Level.TRACE, "stopHostingOnConnection({0})", conn); LobbySessionImpl player = getLobbySession(conn); if (player != null) { diff --git a/src/toniarts/openkeeper/game/sound/GlobalCategory.java b/src/toniarts/openkeeper/game/sound/GlobalCategory.java index 1b68052e2..fc0e8df60 100644 --- a/src/toniarts/openkeeper/game/sound/GlobalCategory.java +++ b/src/toniarts/openkeeper/game/sound/GlobalCategory.java @@ -30,7 +30,7 @@ */ public class GlobalCategory { - private static final Logger LOGGER = System.getLogger(GlobalCategory.class.getName()); + private static final Logger logger = System.getLogger(GlobalCategory.class.getName()); public static final String AMBIENCE = "AMBIENCE"; public static final String EFFECTS = "EFFECTS"; @@ -77,7 +77,7 @@ public static List getCategories() { } } } catch (IllegalAccessException | IllegalArgumentException | SecurityException ex) { - LOGGER.log(Level.ERROR, ex.getMessage(), ex); + logger.log(Level.ERROR, ex.getMessage(), ex); } return categories; diff --git a/src/toniarts/openkeeper/game/sound/SoundCategory.java b/src/toniarts/openkeeper/game/sound/SoundCategory.java index 19bdff054..b06ff7990 100644 --- a/src/toniarts/openkeeper/game/sound/SoundCategory.java +++ b/src/toniarts/openkeeper/game/sound/SoundCategory.java @@ -40,7 +40,7 @@ */ public class SoundCategory { - private static final Logger LOGGER = System.getLogger(SoundCategory.class.getName()); + private static final Logger logger = System.getLogger(SoundCategory.class.getName()); public static final String SPEECH_MENTOR = "SPEECH_MENTOR"; public static final String SPEECH_MULTIPLAYER = "SPEECH_MULTIPLAYER"; @@ -95,7 +95,7 @@ public SfxMapFile getSfxMapFile() { return new SfxMapFile(f); } catch (IOException ex) { - LOGGER.log(Level.ERROR, () -> { + logger.log(Level.ERROR, () -> { return String.format("Sfx file of category {0} does not exist", name); }, ex); } @@ -134,7 +134,7 @@ public static SdtFile getSdtFile(String archiveFilename) { } } - LOGGER.log(Level.WARNING, "SDT File archive {0} not found", archiveFilename); + logger.log(Level.WARNING, "SDT File archive {0} not found", archiveFilename); return null; } diff --git a/src/toniarts/openkeeper/game/sound/SoundGroup.java b/src/toniarts/openkeeper/game/sound/SoundGroup.java index 1a9abba54..6282e92ba 100644 --- a/src/toniarts/openkeeper/game/sound/SoundGroup.java +++ b/src/toniarts/openkeeper/game/sound/SoundGroup.java @@ -35,7 +35,7 @@ */ public class SoundGroup { - private static final Logger LOGGER = System.getLogger(SoundGroup.class.getName()); + private static final Logger logger = System.getLogger(SoundGroup.class.getName()); private final SoundCategory category; private final SfxGroupEntry entry; @@ -88,7 +88,7 @@ private void parseFiles() { SoundFile sf = new SoundFile(this, soundId, soundFilename); files.add(sf); } catch (Exception ex) { - LOGGER.log(Level.ERROR, () -> { + logger.log(Level.ERROR, () -> { return "Error in file " + sdt.getFile().toString() + " with id " + soundId; }, ex); } diff --git a/src/toniarts/openkeeper/game/state/CheatState.java b/src/toniarts/openkeeper/game/state/CheatState.java index 3087c7dd3..0308f95b0 100644 --- a/src/toniarts/openkeeper/game/state/CheatState.java +++ b/src/toniarts/openkeeper/game/state/CheatState.java @@ -37,7 +37,7 @@ */ public abstract class CheatState extends AbstractPauseAwareState implements RawInputListener { - private static final Logger LOGGER = System.getLogger(CheatState.class.getName()); + private static final Logger logger = System.getLogger(CheatState.class.getName()); private final Application app; private String cheat = ""; @@ -105,12 +105,12 @@ public void setEnabled(boolean enabled) { super.setEnabled(enabled); this.playSound(enabled); if (enabled) { - LOGGER.log(Level.INFO, "Cheat mode activated. Please enter your cheat code"); + logger.log(Level.INFO, "Cheat mode activated. Please enter your cheat code"); this.app.getInputManager().addRawInputListener(this); } else { this.app.getInputManager().removeRawInputListener(this); if (!this.success) { - LOGGER.log(Level.INFO, "Wrong cheat code. You entered {0}", this.cheat); + logger.log(Level.INFO, "Wrong cheat code. You entered {0}", this.cheat); } this.cheat = ""; } @@ -146,7 +146,7 @@ public void onKeyEvent(KeyInputEvent evt) { } public void executeCheat(@Nonnull CheatType cheatCode) { - LOGGER.log(Level.INFO, "Executing cheat {0}", cheatCode.toString()); + logger.log(Level.INFO, "Executing cheat {0}", cheatCode.toString()); this.onSuccess(cheatCode); } diff --git a/src/toniarts/openkeeper/game/state/ConnectionState.java b/src/toniarts/openkeeper/game/state/ConnectionState.java index e7bc936ff..8b3f36199 100644 --- a/src/toniarts/openkeeper/game/state/ConnectionState.java +++ b/src/toniarts/openkeeper/game/state/ConnectionState.java @@ -51,7 +51,7 @@ */ public class ConnectionState extends AbstractAppState { - private static final Logger LOGGER = System.getLogger(ConnectionState.class.getName()); + private static final Logger logger = System.getLogger(ConnectionState.class.getName()); private Main app; private String serverInfo; @@ -145,9 +145,9 @@ public GameClientService getGameClientService() { } public void disconnect() { - LOGGER.log(Level.INFO, "disconnect()"); + logger.log(Level.INFO, "disconnect()"); closing = true; - LOGGER.log(Level.INFO, "Detaching ConnectionState"); + logger.log(Level.INFO, "Detaching ConnectionState"); stateManager.detach(this); } @@ -207,16 +207,16 @@ public void removeConnectionErrorListener(ConnectionErrorListener listener) { } protected void onConnected() { - LOGGER.log(Level.INFO, "onConnected()"); + logger.log(Level.INFO, "onConnected()"); // Add our client listeners client.getService(AccountClientService.class).addAccountSessionListener(new AccountObserver()); serverInfo = client.getService(AccountClientService.class).getServerInfo(); - LOGGER.log(Level.TRACE, "Server info:{0}", serverInfo); + logger.log(Level.TRACE, "Server info:{0}", serverInfo); - LOGGER.log(Level.INFO, "join({0})", playerName); + logger.log(Level.INFO, "join({0})", playerName); // So here we'd login and then when we get a response from the // server that we are logged in then we'd launch the game state and @@ -225,7 +225,7 @@ protected void onConnected() { } protected void onDisconnected(DisconnectInfo info) { - LOGGER.log(Level.INFO, "onDisconnected({0})", info); + logger.log(Level.INFO, "onDisconnected({0})", info); if (closing) { return; } @@ -240,19 +240,19 @@ private class ConnectionObserver implements ClientStateListener, ErrorListener players) { exporter.save(player, playerStream); copiedPlayers.add((Keeper) importer.load(playerStream.toByteArray())); } catch (IOException ex) { - LOGGER.log(Level.ERROR, "Failed to serialize the players!", ex); + logger.log(Level.ERROR, "Failed to serialize the players!", ex); } } diff --git a/src/toniarts/openkeeper/game/task/AbstractTask.java b/src/toniarts/openkeeper/game/task/AbstractTask.java index 6f17a41cf..fb6b66e70 100644 --- a/src/toniarts/openkeeper/game/task/AbstractTask.java +++ b/src/toniarts/openkeeper/game/task/AbstractTask.java @@ -37,7 +37,7 @@ */ public abstract class AbstractTask implements Task { - private static final Logger LOGGER = System.getLogger(AbstractTask.class.getName()); + private static final Logger logger = System.getLogger(AbstractTask.class.getName()); private static final AtomicLong ID_GENENERATOR = new AtomicLong(); @@ -92,7 +92,7 @@ public int getMaxAllowedNumberOfAsignees() { @Override public void assign(ICreatureController creature, boolean setToCreature) { if (assignees.size() == getMaxAllowedNumberOfAsignees()) { - LOGGER.log(Level.WARNING, "Task already has the maximum number of assignees!"); + logger.log(Level.WARNING, "Task already has the maximum number of assignees!"); } assignees.put(creature, 0.0f); if (setToCreature) { diff --git a/src/toniarts/openkeeper/game/task/TaskManager.java b/src/toniarts/openkeeper/game/task/TaskManager.java index 30f03943e..931ef8b11 100644 --- a/src/toniarts/openkeeper/game/task/TaskManager.java +++ b/src/toniarts/openkeeper/game/task/TaskManager.java @@ -101,7 +101,7 @@ */ public class TaskManager implements ITaskManager, IGameLogicUpdatable { - private static final Logger LOGGER = System.getLogger(TaskManager.class.getName()); + private static final Logger logger = System.getLogger(TaskManager.class.getName()); private final IMapController mapController; private final IGameWorldController gameWorldController; @@ -542,9 +542,9 @@ public void addTask(short playerId, Task task) { if (!tasks.contains(task)) { tasks.add(task); tasksByIds.put(task.getId(), task); - LOGGER.log(Level.INFO, "Added task {0} for player {1}!", new Object[]{task, playerId}); + logger.log(Level.INFO, "Added task {0} for player {1}!", new Object[]{task, playerId}); } else { - LOGGER.log(Level.WARNING, "Already a task {0} for player {1}!", new Object[]{task, playerId}); + logger.log(Level.WARNING, "Already a task {0} for player {1}!", new Object[]{task, playerId}); } } diff --git a/src/toniarts/openkeeper/game/trigger/AbstractThingTriggerControl.java b/src/toniarts/openkeeper/game/trigger/AbstractThingTriggerControl.java index 67b3f74e2..02f5f24d6 100644 --- a/src/toniarts/openkeeper/game/trigger/AbstractThingTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/AbstractThingTriggerControl.java @@ -33,7 +33,7 @@ */ public abstract class AbstractThingTriggerControl extends PlayerTriggerControl { - private static final Logger LOGGER = System.getLogger(AbstractThingTriggerControl.class.getName()); + private static final Logger logger = System.getLogger(AbstractThingTriggerControl.class.getName()); protected T instanceControl; diff --git a/src/toniarts/openkeeper/game/trigger/TriggerControl.java b/src/toniarts/openkeeper/game/trigger/TriggerControl.java index dd3cc7e81..f8fcaf326 100644 --- a/src/toniarts/openkeeper/game/trigger/TriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/TriggerControl.java @@ -45,7 +45,7 @@ */ public class TriggerControl extends Control { - private static final Logger LOGGER = System.getLogger(TriggerControl.class.getName()); + private static final Logger logger = System.getLogger(TriggerControl.class.getName()); private static final short LEVEL_SCORE_FLAG_ID = 128; private static final short TIME_LIMIT_TIMER_ID = 16; @@ -90,7 +90,7 @@ protected void updateControl(float tpf) { TriggerData value = trigger.getChild(i); if (value == null) { - LOGGER.log(Level.WARNING, "Trigger is null!"); + logger.log(Level.WARNING, "Trigger is null!"); } else if (value instanceof TriggerGenericData) { @@ -173,7 +173,7 @@ protected boolean isActive(TriggerGenericData trigger) { case LEVEL_PLAYED: return false; default: - LOGGER.log(Level.WARNING, "Target Type not supported {0}!", targetType); + logger.log(Level.WARNING, "Target Type not supported {0}!", targetType); return false; } @@ -258,7 +258,7 @@ protected void doAction(TriggerActionData trigger) { value = trigger.getUserData("value", int.class); levelInfo.setTimeLimit(value); } else { - LOGGER.log(Level.WARNING, "Only level time limit supported!"); + logger.log(Level.WARNING, "Only level time limit supported!"); } break; @@ -322,7 +322,7 @@ protected void doAction(TriggerActionData trigger) { break; default: - LOGGER.log(Level.WARNING, "Trigger Action not supported!"); + logger.log(Level.WARNING, "Trigger Action not supported!"); break; } } @@ -349,7 +349,7 @@ protected boolean compare(float target, TriggerGeneric.ComparisonType compare, f result = target != value; break; case NONE: - LOGGER.log(Level.WARNING, "Comparison Type not supported!"); + logger.log(Level.WARNING, "Comparison Type not supported!"); break; } return result; @@ -365,7 +365,7 @@ private int getTargetValue(int base, int value, EnumSet= 0; i--) { detachChildAt(i); } - LOGGER.log(Level.DEBUG, "{0}: All children removed.", this.toString()); + logger.log(Level.DEBUG, "{0}: All children removed.", this.toString()); } public int detachChild(TriggerData child) { @@ -241,7 +241,7 @@ public TriggerData detachChildAt(int index) { TriggerData child = children.remove(index); if (child != null) { child.setParent(null); - LOGGER.log(Level.DEBUG, "{0}: Child removed.", this.toString()); + logger.log(Level.DEBUG, "{0}: Child removed.", this.toString()); } return child; diff --git a/src/toniarts/openkeeper/game/trigger/actionpoint/ActionPointTriggerControl.java b/src/toniarts/openkeeper/game/trigger/actionpoint/ActionPointTriggerControl.java index 029f5cf49..264b3ab17 100644 --- a/src/toniarts/openkeeper/game/trigger/actionpoint/ActionPointTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/actionpoint/ActionPointTriggerControl.java @@ -39,7 +39,7 @@ */ public class ActionPointTriggerControl extends TriggerControl { - private static final Logger LOGGER = System.getLogger(ActionPointTriggerControl.class.getName()); + private static final Logger logger = System.getLogger(ActionPointTriggerControl.class.getName()); private ActionPoint ap; private IEntityPositionLookup entityPositionLookup; @@ -86,7 +86,7 @@ protected boolean isActive(TriggerGenericData trigger) { case 6: // Object break; default: - LOGGER.log(Level.WARNING, "AP_CONGREGATE_IN unknown targetType {0}", type); + logger.log(Level.WARNING, "AP_CONGREGATE_IN unknown targetType {0}", type); break; } return false; @@ -103,7 +103,7 @@ protected boolean isActive(TriggerGenericData trigger) { case 6: // Object. Chicken break; default: - LOGGER.log(Level.WARNING, "AP_POSESSED_CREATURE_ENTERS unknown targetType"); + logger.log(Level.WARNING, "AP_POSESSED_CREATURE_ENTERS unknown targetType"); break; } return false; diff --git a/src/toniarts/openkeeper/game/trigger/creature/CreatureTriggerControl.java b/src/toniarts/openkeeper/game/trigger/creature/CreatureTriggerControl.java index 37387ba25..c874d5028 100644 --- a/src/toniarts/openkeeper/game/trigger/creature/CreatureTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/creature/CreatureTriggerControl.java @@ -39,7 +39,7 @@ */ public class CreatureTriggerControl extends AbstractThingTriggerControl { - private static final Logger LOGGER = System.getLogger(CreatureTriggerControl.class.getName()); + private static final Logger logger = System.getLogger(CreatureTriggerControl.class.getName()); public CreatureTriggerControl(final IGameController gameController, final ILevelInfo levelInfo, final IGameTimer gameTimer, final IMapController mapController, final ICreaturesController creaturesController, final int triggerId, final short playerId, diff --git a/src/toniarts/openkeeper/game/trigger/door/DoorTriggerControl.java b/src/toniarts/openkeeper/game/trigger/door/DoorTriggerControl.java index 708cc3f23..b2161bd7a 100644 --- a/src/toniarts/openkeeper/game/trigger/door/DoorTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/door/DoorTriggerControl.java @@ -35,7 +35,7 @@ */ public class DoorTriggerControl extends AbstractThingTriggerControl { - private static final Logger LOGGER = System.getLogger(DoorTriggerControl.class.getName()); + private static final Logger logger = System.getLogger(DoorTriggerControl.class.getName()); public DoorTriggerControl(final IGameController gameController, final ILevelInfo levelInfo, final IGameTimer gameTimer, final IMapController mapController, final ICreaturesController creaturesController, final int triggerId, final short playerId, diff --git a/src/toniarts/openkeeper/game/trigger/object/ObjectTriggerControl.java b/src/toniarts/openkeeper/game/trigger/object/ObjectTriggerControl.java index 95114150c..86987df53 100644 --- a/src/toniarts/openkeeper/game/trigger/object/ObjectTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/object/ObjectTriggerControl.java @@ -35,7 +35,7 @@ */ public class ObjectTriggerControl extends AbstractThingTriggerControl { - private static final Logger LOGGER = System.getLogger(ObjectTriggerControl.class.getName()); + private static final Logger logger = System.getLogger(ObjectTriggerControl.class.getName()); public ObjectTriggerControl(final IGameController gameController, final ILevelInfo levelInfo, final IGameTimer gameTimer, final IMapController mapController, final ICreaturesController creaturesController, final int triggerId, final short playerId, diff --git a/src/toniarts/openkeeper/game/trigger/party/PartyTriggerControl.java b/src/toniarts/openkeeper/game/trigger/party/PartyTriggerControl.java index 72275b60b..339fb4be9 100644 --- a/src/toniarts/openkeeper/game/trigger/party/PartyTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/party/PartyTriggerControl.java @@ -30,7 +30,7 @@ public class PartyTriggerControl extends TriggerControl { - private static final Logger LOGGER = System.getLogger(PartyTriggerControl.class.getName()); + private static final Logger logger = System.getLogger(PartyTriggerControl.class.getName()); private IPartyController partyController; diff --git a/src/toniarts/openkeeper/game/trigger/player/PlayerTriggerControl.java b/src/toniarts/openkeeper/game/trigger/player/PlayerTriggerControl.java index db186a6e6..0b255df17 100644 --- a/src/toniarts/openkeeper/game/trigger/player/PlayerTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/player/PlayerTriggerControl.java @@ -46,7 +46,7 @@ */ public class PlayerTriggerControl extends TriggerControl { - private static final Logger LOGGER = System.getLogger(PlayerTriggerControl.class.getName()); + private static final Logger logger = System.getLogger(PlayerTriggerControl.class.getName()); private short playerId; private PlayerService playerService; @@ -282,7 +282,7 @@ protected void doAction(TriggerActionData trigger) { // Get first spawn point of the player (this flag is only for the players) Set rooms = getPlayerController(playerId).getRoomControl().getRoomControllers().get(levelInfo.getLevelData().getPortal()); if (rooms == null || rooms.isEmpty()) { - LOGGER.log(Level.WARNING, "Generate creature triggered but no entrances found!"); + logger.log(Level.WARNING, "Generate creature triggered but no entrances found!"); break; } ICreatureEntrance room = ((ICreatureEntrance) rooms.iterator().next()); @@ -327,7 +327,7 @@ protected void doAction(TriggerActionData trigger) { if (targetId == 0) { // 0 = Off makeObjectiveOff(); } else { - LOGGER.log(Level.WARNING, "Unsupported MAKE_OBJECTIVE target {0}", targetId); + logger.log(Level.WARNING, "Unsupported MAKE_OBJECTIVE target {0}", targetId); } break; diff --git a/src/toniarts/openkeeper/gui/nifty/CustomTabControl.java b/src/toniarts/openkeeper/gui/nifty/CustomTabControl.java index 0219078d5..bdae03c26 100644 --- a/src/toniarts/openkeeper/gui/nifty/CustomTabControl.java +++ b/src/toniarts/openkeeper/gui/nifty/CustomTabControl.java @@ -34,7 +34,7 @@ */ public class CustomTabControl extends AbstractController implements Tab, TabGroupMember { - private static final Logger log = System.getLogger(CustomTabControl.class.getName()); + private static final Logger logger = System.getLogger(CustomTabControl.class.getName()); /** * The tab group that is the parent of this tab. This might be {@code null} * for the time this tab is not a part of tab group. @@ -56,7 +56,7 @@ public void bind(Nifty nifty, Screen screen, Element elmnt, Parameters prmtrs) { bind(elmnt); if (elmnt.getId() == null) { - log.log(Level.WARNING, "Button element has no ID and can't publish any events properly."); + logger.log(Level.WARNING, "Button element has no ID and can't publish any events properly."); } String image = prmtrs.get("image"); @@ -113,7 +113,7 @@ public String getCaption() { public String getImage() { if (tabImage == null) { - log.log(Level.WARNING, "Tab image is not set yet."); + logger.log(Level.WARNING, "Tab image is not set yet."); return ""; } return tabImage; @@ -121,7 +121,7 @@ public String getImage() { public String getImageActive() { if (tabImage == null) { - log.log(Level.WARNING, "Tab image is not set yet."); + logger.log(Level.WARNING, "Tab image is not set yet."); return ""; } return tabImageActive; diff --git a/src/toniarts/openkeeper/gui/nifty/CustomTabGroupControl.java b/src/toniarts/openkeeper/gui/nifty/CustomTabGroupControl.java index 530a6a1a8..004c8a966 100644 --- a/src/toniarts/openkeeper/gui/nifty/CustomTabGroupControl.java +++ b/src/toniarts/openkeeper/gui/nifty/CustomTabGroupControl.java @@ -165,7 +165,7 @@ public void perform() { /** * The logger that takes care for the output of log messages in this class. */ - private static final Logger log = System.getLogger(CustomTabGroupControl.class.getName()); + private static final Logger logger = System.getLogger(CustomTabGroupControl.class.getName()); /** * The subscriber of the show events for this control. This is required to @@ -254,11 +254,11 @@ public void bind(Nifty nifty, Screen screen, Element elmnt, Parameters prmtrs) { contentPanel = elmnt.findElementById("#tab-content-panel"); if (tabButtonPanel == null) { - log.log(Level.ERROR, "Panel for the tabs not found. Tab group will not work properly. Looked for: #tab-button-panel"); + logger.log(Level.ERROR, "Panel for the tabs not found. Tab group will not work properly. Looked for: #tab-button-panel"); } else { final Element buttonElement = tabButtonPanel.findElementById("#button-template"); if (buttonElement == null) { - log.log(Level.ERROR, "No template for tab button found. Tab group will be unable to display tabs. Looked for: " + logger.log(Level.ERROR, "No template for tab button found. Tab group will be unable to display tabs. Looked for: " + "#button-template"); } else { buttonTemplate = buttonElement.getElementType().copy(); @@ -271,7 +271,7 @@ public void perform() { } } if (contentPanel == null) { - log.log(Level.ERROR, "Content panel not found. Tab group will be unable to display tab content. Looked for: " + logger.log(Level.ERROR, "Content panel not found. Tab group will be unable to display tab content. Looked for: " + "#tab-content-pane"); } } @@ -297,7 +297,7 @@ public void init(Parameters prmtrs) { for (final Element element : contentPanel.getChildren()) { final Tab tabControl = element.getNiftyControl(Tab.class); if (tabControl == null) { - log.log(Level.WARNING, "Element without tab control detected. Removing: {0}", element.getId()); + logger.log(Level.WARNING, "Element without tab control detected. Removing: {0}", element.getId()); element.markForRemoval(); } else { initTab(tabControl); @@ -314,7 +314,7 @@ private void initTab(final Tab tab) { Element button = getButton(tabIndex); if (button == null) { if (buttonTemplate == null || nifty == null || screen == null || tabButtonPanel == null) { - log.log(Level.ERROR, "Tab can't be initialized. Binding not done yet or binding failed."); + logger.log(Level.ERROR, "Tab can't be initialized. Binding not done yet or binding failed."); return; } final ElementType newButtonTemplate = buttonTemplate.copy(); @@ -446,7 +446,7 @@ private void checkVisibility() { final Element button = getButton(i); if (button == null) { - log.log(Level.WARNING, "Something is wrong with the tabs. Tab button not there anymore."); + logger.log(Level.WARNING, "Something is wrong with the tabs. Tab button not there anymore."); continue; } @@ -494,7 +494,7 @@ public boolean isTabInGroup(final Tab tab) { @Override public void onStartScreen() { if (nifty == null || screen == null) { - log.log(Level.ERROR, "Starting screen failed. Seems the binding is not done yet."); + logger.log(Level.ERROR, "Starting screen failed. Seems the binding is not done yet."); } String id = getId(); if (id != null) { @@ -548,7 +548,7 @@ public void setSelectedTabIndex(final int index) { if (id != null) { Tab tab = getTabAtIndex(index); if (tab == null) { - log.log(Level.ERROR, "Tab with valid index returned null. This looks like a internal error."); + logger.log(Level.ERROR, "Tab with valid index returned null. This looks like a internal error."); } else { nifty.publishEvent(id, new TabSelectedEvent(this, tab, index)); } diff --git a/src/toniarts/openkeeper/gui/nifty/chat/ChatBoxViewConverter.java b/src/toniarts/openkeeper/gui/nifty/chat/ChatBoxViewConverter.java index 7cc27a596..5e56f499c 100644 --- a/src/toniarts/openkeeper/gui/nifty/chat/ChatBoxViewConverter.java +++ b/src/toniarts/openkeeper/gui/nifty/chat/ChatBoxViewConverter.java @@ -32,7 +32,7 @@ */ public class ChatBoxViewConverter implements ListBoxViewConverter { - private static final Logger log = System.getLogger(ChatBoxViewConverter.class.getName()); + private static final Logger logger = System.getLogger(ChatBoxViewConverter.class.getName()); private static final String CHAT_LINE_TEXT = "#chat-line-text"; @@ -46,11 +46,11 @@ public ChatBoxViewConverter() { public final void display(final Element listBoxItem, final ChatEntry item) { final Element text = listBoxItem.findElementById(CHAT_LINE_TEXT); if (text == null) { - log.log(Level.ERROR, "Failed to locate text part of chat line! Can't display entry."); + logger.log(Level.ERROR, "Failed to locate text part of chat line! Can't display entry."); } final TextRenderer textRenderer = text.getRenderer(TextRenderer.class); if (textRenderer == null) { - log.log(Level.ERROR, "Text entry of the chat line does not contain the required text renderer."); + logger.log(Level.ERROR, "Text entry of the chat line does not contain the required text renderer."); return; } textRenderer.setText(item.getLabel()); @@ -68,12 +68,12 @@ public final void display(final Element listBoxItem, final ChatEntry item) { public final int getWidth(final Element listBoxItem, final ChatEntry item) { final Element text = listBoxItem.findElementById(CHAT_LINE_TEXT); if (text == null) { - log.log(Level.ERROR, "Failed to locate text part of chat line! Can't display entry."); + logger.log(Level.ERROR, "Failed to locate text part of chat line! Can't display entry."); return 0; } final TextRenderer textRenderer = text.getRenderer(TextRenderer.class); if (textRenderer == null) { - log.log(Level.ERROR, "Text entry of the chat line does not contain the required text renderer."); + logger.log(Level.ERROR, "Text entry of the chat line does not contain the required text renderer."); return 0; } return ((textRenderer.getFont() == null) ? 0 : textRenderer.getFont().getWidth(item.getLabel())); diff --git a/src/toniarts/openkeeper/gui/nifty/chat/ChatControl.java b/src/toniarts/openkeeper/gui/nifty/chat/ChatControl.java index 0c8d505f4..386cbd467 100644 --- a/src/toniarts/openkeeper/gui/nifty/chat/ChatControl.java +++ b/src/toniarts/openkeeper/gui/nifty/chat/ChatControl.java @@ -43,7 +43,7 @@ */ public class ChatControl extends AbstractController implements KeyInputHandler, Chat { - private static final Logger LOGGER = System.getLogger(ChatControl.class.getName()); + private static final Logger logger = System.getLogger(ChatControl.class.getName()); private static final String CHAT_BOX = "#chatBox"; private static final String CHAT_TEXT_INPUT = "#chat-text-input"; @@ -65,17 +65,17 @@ public final void bind( final Element newElement, final Parameters properties) { super.bind(newElement); - LOGGER.log(Level.DEBUG, "binding chat control"); + logger.log(Level.DEBUG, "binding chat control"); nifty = niftyParam; // this buffer is needed because in some cases the entry is added to either list before the element is bound. final ListBox chatBox = getListBox(CHAT_BOX); if (chatBox == null) { - LOGGER.log(Level.ERROR, "Element for chat box \"" + CHAT_BOX + "\" not found. ChatControl will not work."); + logger.log(Level.ERROR, "Element for chat box \"" + CHAT_BOX + "\" not found. ChatControl will not work."); } else { while (!linesBuffer.isEmpty()) { ChatEntry line = linesBuffer.poll(); - LOGGER.log(Level.DEBUG, "adding message {0}", (chatBox.itemCount() + 1)); + logger.log(Level.DEBUG, "adding message {0}", (chatBox.itemCount() + 1)); chatBox.addItem(line); chatBox.showItemByIndex(chatBox.itemCount() - 1); } @@ -95,7 +95,7 @@ public final void onStartScreen() { if (element != null) { textControl = element.findNiftyControl(CHAT_TEXT_INPUT, TextField.class); if (textControl == null) { - LOGGER.log(Level.ERROR, "Text input field for chat box was not found!"); + logger.log(Level.ERROR, "Text input field for chat box was not found!"); } else { Element textControlElement = textControl.getElement(); if (textControlElement != null) { @@ -159,7 +159,7 @@ public void receivedChatLine(String text, int playerId, short keeperId) { if (linesBuffer.isEmpty()) { final ListBox chatBox = getListBox(CHAT_BOX); if (chatBox != null) { - LOGGER.log(Level.DEBUG, "adding message {0}", (chatBox.itemCount() + 1)); + logger.log(Level.DEBUG, "adding message {0}", (chatBox.itemCount() + 1)); chatBox.addItem(new ChatEntry(text, playerId, keeperId)); chatBox.showItemByIndex(chatBox.itemCount() - 1); } else { diff --git a/src/toniarts/openkeeper/tools/convert/AssetsConverter.java b/src/toniarts/openkeeper/tools/convert/AssetsConverter.java index 9a6ade30c..392637a33 100644 --- a/src/toniarts/openkeeper/tools/convert/AssetsConverter.java +++ b/src/toniarts/openkeeper/tools/convert/AssetsConverter.java @@ -100,7 +100,7 @@ public String toString() { private final ConvertProcess[] dependencies; } - private static final Logger LOGGER = System.getLogger(AssetsConverter.class.getName()); + private static final Logger logger = System.getLogger(AssetsConverter.class.getName()); private static final boolean OVERWRITE_DATA = true; // Not exhausting your SDD :) or our custom graphics private static final String ASSETS_FOLDER = "assets" + File.separator + "Converted"; @@ -184,8 +184,8 @@ private static synchronized void setConversionComplete(ConvertProcess process, A public boolean convertAssets() { long start = System.currentTimeMillis(); String currentFolder = getCurrentFolder(); - LOGGER.log(Level.INFO, "Starting asset convertion from DK II folder: {0}", dungeonKeeperFolder); - LOGGER.log(Level.INFO, "Current folder set to: {0}", currentFolder); + logger.log(Level.INFO, "Starting asset convertion from DK II folder: {0}", dungeonKeeperFolder); + logger.log(Level.INFO, "Current folder set to: {0}", currentFolder); // Create an assets folder String assetFolder = currentFolder.concat(ASSETS_FOLDER).concat(File.separator); @@ -227,7 +227,7 @@ public void onError(Exception ex, ConvertProcess process) { // Log the time taken long duration = System.currentTimeMillis() - start; - LOGGER.log(Level.INFO, "Conversion took {0} seconds!", TimeUnit.SECONDS.convert(duration, TimeUnit.MILLISECONDS)); + logger.log(Level.INFO, "Conversion took {0} seconds!", TimeUnit.SECONDS.convert(duration, TimeUnit.MILLISECONDS)); return success; } diff --git a/src/toniarts/openkeeper/tools/convert/BufferedResourceReader.java b/src/toniarts/openkeeper/tools/convert/BufferedResourceReader.java index 0215ac53a..3d0b17e71 100644 --- a/src/toniarts/openkeeper/tools/convert/BufferedResourceReader.java +++ b/src/toniarts/openkeeper/tools/convert/BufferedResourceReader.java @@ -39,7 +39,7 @@ */ public class BufferedResourceReader implements IResourceReader { - private static final Logger LOGGER = System.getLogger(BufferedResourceReader.class.getName()); + private static final Logger logger = System.getLogger(BufferedResourceReader.class.getName()); private final BufferedInputStream input; @@ -101,7 +101,7 @@ public void close() { try { input.close(); } catch (IOException ex) { - LOGGER.log(Level.ERROR, "Closing file error", ex); + logger.log(Level.ERROR, "Closing file error", ex); } } diff --git a/src/toniarts/openkeeper/tools/convert/ConversionUtils.java b/src/toniarts/openkeeper/tools/convert/ConversionUtils.java index ef51290b6..1732d328a 100644 --- a/src/toniarts/openkeeper/tools/convert/ConversionUtils.java +++ b/src/toniarts/openkeeper/tools/convert/ConversionUtils.java @@ -33,7 +33,7 @@ */ public class ConversionUtils { - private static final Logger LOGGER = System.getLogger(ConversionUtils.class.getName()); + private static final Logger logger = System.getLogger(ConversionUtils.class.getName()); public static final float FLOAT = 4096f; // or DIVIDER_FLOAT Fixed Point Single Precision Divider public static final float DOUBLE = 65536f; // or DIVIDER_DOUBLE Fixed Point Double Precision Divider @@ -52,7 +52,7 @@ public static int toUnsignedInteger(byte[] unsignedInt) { // Yes, this should be long, however, in our purpose this might be sufficient as int // Safety measure - LOGGER.log(Level.WARNING, "This unsigned integer doesn't fit to JAVA integer! Use a different method!"); + logger.log(Level.WARNING, "This unsigned integer doesn't fit to JAVA integer! Use a different method!"); } return result; } @@ -220,7 +220,7 @@ public static & IFlagEnum> EnumSet parseFlagValue(long fla sb.append(val); } } - LOGGER.log(Level.WARNING, "Value(s) {0} not specified for enum set class {1}!", new java.lang.Object[]{sb.toString(), enumeration.getName()}); + logger.log(Level.WARNING, "Value(s) {0} not specified for enum set class {1}!", new java.lang.Object[]{sb.toString(), enumeration.getName()}); } return set; } @@ -239,7 +239,7 @@ public static E parseEnum(int value, Class enum return e; } } - LOGGER.log(Level.WARNING, "Value {0} not specified for enum class {1}!", new java.lang.Object[]{value, enumeration.getName()}); + logger.log(Level.WARNING, "Value {0} not specified for enum class {1}!", new java.lang.Object[]{value, enumeration.getName()}); return null; } diff --git a/src/toniarts/openkeeper/tools/convert/FileResourceReader.java b/src/toniarts/openkeeper/tools/convert/FileResourceReader.java index a49a0132e..4d838b758 100644 --- a/src/toniarts/openkeeper/tools/convert/FileResourceReader.java +++ b/src/toniarts/openkeeper/tools/convert/FileResourceReader.java @@ -37,7 +37,7 @@ */ public class FileResourceReader implements ISeekableResourceReader { - private static final Logger LOGGER = System.getLogger(FileResourceReader.class.getName()); + private static final Logger logger = System.getLogger(FileResourceReader.class.getName()); private final SeekableByteChannel file; @@ -127,7 +127,7 @@ public void close() { try { file.close(); } catch (IOException ex) { - LOGGER.log(Level.ERROR, "Closing file error", ex); + logger.log(Level.ERROR, "Closing file error", ex); } } diff --git a/src/toniarts/openkeeper/tools/convert/ResourceChunkReader.java b/src/toniarts/openkeeper/tools/convert/ResourceChunkReader.java index a3a3b4899..c75e9e714 100644 --- a/src/toniarts/openkeeper/tools/convert/ResourceChunkReader.java +++ b/src/toniarts/openkeeper/tools/convert/ResourceChunkReader.java @@ -35,7 +35,7 @@ */ public class ResourceChunkReader implements IResourceChunkReader { - private static final Logger LOGGER = System.getLogger(ResourceChunkReader.class.getName()); + private static final Logger logger = System.getLogger(ResourceChunkReader.class.getName()); private final ByteBuffer buffer; @@ -66,7 +66,7 @@ public void readAndCheckNull(int size) { for (int i = 0; i < size; i++) { byte b = buffer.get(); if (b != 0) { - LOGGER.log(Level.WARNING, "Value not 0! Was {0}!", b); + logger.log(Level.WARNING, "Value not 0! Was {0}!", b); } } } @@ -187,7 +187,7 @@ public int readUnsignedInteger() { // Yes, this should be long, however, in our purpose this might be sufficient as int // Safety measure - LOGGER.log(Level.WARNING, "This unsigned integer doesn't fit to JAVA integer! Use a different method!"); + logger.log(Level.WARNING, "This unsigned integer doesn't fit to JAVA integer! Use a different method!"); } return result; } diff --git a/src/toniarts/openkeeper/tools/convert/conversion/ConversionTaskManager.java b/src/toniarts/openkeeper/tools/convert/conversion/ConversionTaskManager.java index 3fb5485d1..c5d8f2ec5 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/ConversionTaskManager.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/ConversionTaskManager.java @@ -44,7 +44,7 @@ */ public class ConversionTaskManager { - private static final Logger LOGGER = System.getLogger(ConversionTaskManager.class.getName()); + private static final Logger logger = System.getLogger(ConversionTaskManager.class.getName()); private static final int MAX_THREADS = Runtime.getRuntime().availableProcessors(); private final ExecutorService executorService; @@ -99,7 +99,7 @@ public boolean executeTasks() { try { executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.HOURS); } catch (InterruptedException ex) { - LOGGER.log(Level.ERROR, "Conversion tasks failed to complete!", ex); + logger.log(Level.ERROR, "Conversion tasks failed to complete!", ex); } return !failure; @@ -122,21 +122,21 @@ private void createTaskGraph() { private void executeTask(TaskNode node) { if (failure) { - LOGGER.log(Level.INFO, "Aborting execution of task {0}!", node); + logger.log(Level.INFO, "Aborting execution of task {0}!", node); return; } - LOGGER.log(Level.INFO, "Starting task {0}!", node); + logger.log(Level.INFO, "Starting task {0}!", node); Future task = executorService.submit(() -> { try { node.executeTask(); - LOGGER.log(Level.INFO, "Task {0} finished!", node); + logger.log(Level.INFO, "Task {0} finished!", node); executeNextTask(node); } catch (Exception e) { failure = true; - LOGGER.log(Level.ERROR, "Task " + node + " failed! Aborting...", e); + logger.log(Level.ERROR, "Task " + node + " failed! Aborting...", e); executorService.shutdown(); } diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertFonts.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertFonts.java index f1ac75877..44044b783 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertFonts.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertFonts.java @@ -55,7 +55,7 @@ */ public class ConvertFonts extends ConversionTask { - private static final Logger LOGGER = System.getLogger(ConvertFonts.class.getName()); + private static final Logger logger = System.getLogger(ConvertFonts.class.getName()); private final ExecutorService executorService; @@ -83,7 +83,7 @@ public void internalExecuteTask() { try { executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); } catch (InterruptedException ex) { - LOGGER.log(Level.ERROR, "Failed to wait font conversion complete!", ex); + logger.log(Level.ERROR, "Failed to wait font conversion complete!", ex); } } } @@ -95,7 +95,7 @@ public void internalExecuteTask() { * @param destination Destination folder */ private void convertFonts(final String dungeonKeeperFolder, final String destination) { - LOGGER.log(Level.INFO, "Extracting fonts to: {0}", destination); + logger.log(Level.INFO, "Extracting fonts to: {0}", destination); updateStatus(null, null); Path destFolder = Paths.get(destination); PathUtils.deleteFolder(destFolder); @@ -135,7 +135,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IO } catch (Exception ex) { String msg = "Failed to save the font files to " + destination + "!"; - LOGGER.log(Level.ERROR, msg, ex); + logger.log(Level.ERROR, msg, ex); throw new RuntimeException(msg, ex); } } @@ -150,7 +150,7 @@ private void handleFontFile(Pattern pattern, Path file, final String destination Matcher matcher = pattern.matcher(file.getFileName().toString()); boolean found = matcher.find(); if (!found) { - LOGGER.log(Level.ERROR, "Font name {0} not recognized!", file.getFileName()); + logger.log(Level.ERROR, "Font name {0} not recognized!", file.getFileName()); throw new RuntimeException("Unknown font name!"); } @@ -177,7 +177,7 @@ private void handleFontFile(Pattern pattern, Path file, final String destination updateStatus(progress.incrementAndGet(), total); } catch (Exception ex) { String msg = "Failed to export font file " + file + "!"; - LOGGER.log(Level.ERROR, msg, ex); + logger.log(Level.ERROR, msg, ex); onError(new RuntimeException(msg, ex)); } } diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertHiScores.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertHiScores.java index 871e7b6c1..cdb22e9e5 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertHiScores.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertHiScores.java @@ -34,7 +34,7 @@ */ public class ConvertHiScores extends ConversionTask { - private static final Logger LOGGER = System.getLogger(ConvertHiScores.class.getName()); + private static final Logger logger = System.getLogger(ConvertHiScores.class.getName()); public ConvertHiScores(String dungeonKeeperFolder, boolean overwriteData) { super(dungeonKeeperFolder, null, overwriteData); @@ -51,7 +51,7 @@ public void internalExecuteTask() { * @param dungeonKeeperFolder DK II main folder */ private void convertHiScores(String dungeonKeeperFolder) { - LOGGER.log(Level.INFO, "Converting hiscores"); + logger.log(Level.INFO, "Converting hiscores"); updateStatus(0, 1); try { @@ -67,7 +67,7 @@ private void convertHiScores(String dungeonKeeperFolder) { hiScores.save(); updateStatus(1, 1); } catch (Exception ex) { - LOGGER.log(Level.WARNING, "Can not convert HiScores!", ex); + logger.log(Level.WARNING, "Can not convert HiScores!", ex); // By no means fatal :D } diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertMapThumbnails.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertMapThumbnails.java index 7f6370ecd..ab5f0134c 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertMapThumbnails.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertMapThumbnails.java @@ -45,7 +45,7 @@ */ public class ConvertMapThumbnails extends ConversionTask { - private static final Logger LOGGER = System.getLogger(ConvertMapThumbnails.class.getName()); + private static final Logger logger = System.getLogger(ConvertMapThumbnails.class.getName()); public ConvertMapThumbnails(String dungeonKeeperFolder, String destination, boolean overwriteData) { super(dungeonKeeperFolder, destination, overwriteData); @@ -63,7 +63,7 @@ public void internalExecuteTask() { * @param destination Destination folder */ private void generateMapThumbnails(String dungeonKeeperFolder, String destination) { - LOGGER.log(Level.INFO, "Generating map thumbnails to: {0}", destination); + logger.log(Level.INFO, "Generating map thumbnails to: {0}", destination); updateStatus(null, null); Path destFolder = Paths.get(destination); PathUtils.deleteFolder(destFolder); @@ -87,11 +87,11 @@ private void generateMapThumbnails(String dungeonKeeperFolder, String destinatio maps.add(kwd); } } catch (Exception ex) { - LOGGER.log(Level.WARNING, "Failed to open map file: " + path + "!", ex); // Not fatal + logger.log(Level.WARNING, "Failed to open map file: " + path + "!", ex); // Not fatal } } } catch (Exception ex) { - LOGGER.log(Level.ERROR, "Failed to search for the map files!", ex); + logger.log(Level.ERROR, "Failed to search for the map files!", ex); } // Go through the map files @@ -103,7 +103,7 @@ private void generateMapThumbnails(String dungeonKeeperFolder, String destinatio try { genererateMapThumbnail(kwd, destination); } catch (Exception ex) { - LOGGER.log(Level.WARNING, "Failed to create a thumbnail from map: " + kwd.getGameLevel().getName() + "!", ex); // Not fatal + logger.log(Level.WARNING, "Failed to create a thumbnail from map: " + kwd.getGameLevel().getName() + "!", ex); // Not fatal } i++; } diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertModels.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertModels.java index b2ea7032f..f88e29f85 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertModels.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertModels.java @@ -52,7 +52,7 @@ */ public class ConvertModels extends ConversionTask { - private static final Logger LOGGER = System.getLogger(ConvertModels.class.getName()); + private static final Logger logger = System.getLogger(ConvertModels.class.getName()); private final AssetManager assetManager; private final ExecutorService executorService; @@ -82,7 +82,7 @@ public void internalExecuteTask() { try { executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); } catch (InterruptedException ex) { - LOGGER.log(Level.ERROR, "Failed to wait model saving complete!", ex); + logger.log(Level.ERROR, "Failed to wait model saving complete!", ex); } } } @@ -94,7 +94,7 @@ public void internalExecuteTask() { * @param destination Destination folder */ private void convertModels(String dungeonKeeperFolder, String destination, AssetManager assetManager) { - LOGGER.log(Level.INFO, "Extracting models to: {0}", destination); + logger.log(Level.INFO, "Extracting models to: {0}", destination); updateStatus(null, null); Path dest = Paths.get(destination); PathUtils.deleteFolder(dest); @@ -128,7 +128,7 @@ private void convertModels(String dungeonKeeperFolder, String destination, Asset // See if we already have this model if (!overwriteData && Files.exists(Paths.get(destination, entry.substring(0, entry.length() - 4).concat(".j3o")))) { - LOGGER.log(Level.INFO, "File {0} already exists, skipping!", entry); + logger.log(Level.INFO, "File {0} already exists, skipping!", entry); updateStatus(progress.incrementAndGet(), total); continue; } @@ -151,7 +151,7 @@ private void convertModels(String dungeonKeeperFolder, String destination, Asset return; } } catch (Exception ex) { - LOGGER.log(Level.ERROR, "Failed to create a file for WAD entry " + entry + "!", ex); + logger.log(Level.ERROR, "Failed to create a file for WAD entry " + entry + "!", ex); throw ex; } } @@ -198,13 +198,13 @@ private void convertModel(AssetManager assetManager, String name, KmfFile model, updateStatus(progress.incrementAndGet(), total); } catch (Exception ex) { String msg = "Failed to export KMF entry " + name + "!"; - LOGGER.log(Level.ERROR, msg, ex); + logger.log(Level.ERROR, msg, ex); onError(new RuntimeException(msg, ex)); } }); } catch (Exception ex) { String msg = "Failed to convert KMF entry " + name + "!"; - LOGGER.log(Level.ERROR, msg, ex); + logger.log(Level.ERROR, msg, ex); throw new RuntimeException(msg, ex); } } diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertMouseCursors.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertMouseCursors.java index ecda56f5f..251f6c68e 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertMouseCursors.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertMouseCursors.java @@ -37,7 +37,7 @@ */ public class ConvertMouseCursors extends ConversionTask { - private static final Logger LOGGER = System.getLogger(ConvertMouseCursors.class.getName()); + private static final Logger logger = System.getLogger(ConvertMouseCursors.class.getName()); public ConvertMouseCursors(String dungeonKeeperFolder, String destination, boolean overwriteData) { super(dungeonKeeperFolder, destination, overwriteData); @@ -55,7 +55,7 @@ public void internalExecuteTask() { * @param destination Destination folder */ private void convertMouseCursors(String dungeonKeeperFolder, String destination) { - LOGGER.log(Level.INFO, "Extracting mouse cursors to: {0}", destination); + logger.log(Level.INFO, "Extracting mouse cursors to: {0}", destination); updateStatus(null, null); PathUtils.deleteFolder(Paths.get(destination)); @@ -88,7 +88,7 @@ private void convertMouseCursors(String dungeonKeeperFolder, String destination) try { sprFile.extract(destinationFolderAsString, fileName.substring(0, fileName.length() - 4)); } catch (Exception ex) { - LOGGER.log(Level.ERROR, "Error Sprite: {0}", ex); + logger.log(Level.ERROR, "Error Sprite: {0}", ex); } } else { diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertPaths.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertPaths.java index 26831aecd..711401875 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertPaths.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertPaths.java @@ -49,7 +49,7 @@ */ public class ConvertPaths extends ConversionTask { - private static final Logger LOGGER = System.getLogger(ConvertPaths.class.getName()); + private static final Logger logger = System.getLogger(ConvertPaths.class.getName()); public ConvertPaths(String dungeonKeeperFolder, String destination, boolean overwriteData) { super(dungeonKeeperFolder, destination, overwriteData); @@ -67,7 +67,7 @@ public void internalExecuteTask() { * @param destination Destination folder */ private void convertPaths(String dungeonKeeperFolder, String destination) { - LOGGER.log(Level.INFO, "Extracting paths to: {0}", destination); + logger.log(Level.INFO, "Extracting paths to: {0}", destination); updateStatus(null, null); Path dest = Paths.get(destination); PathUtils.deleteFolder(dest); @@ -130,7 +130,7 @@ private void convertPaths(String dungeonKeeperFolder, String destination) { } catch (Exception ex) { String msg = "Failed to save the path file to " + destination + "!"; - LOGGER.log(Level.ERROR, msg, ex); + logger.log(Level.ERROR, msg, ex); throw new RuntimeException(msg, ex); } } diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertSounds.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertSounds.java index b042c9907..781c5877a 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertSounds.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertSounds.java @@ -39,7 +39,7 @@ */ public class ConvertSounds extends ConversionTask { - private static final Logger LOGGER = System.getLogger(ConvertSounds.class.getName()); + private static final Logger logger = System.getLogger(ConvertSounds.class.getName()); public ConvertSounds(String dungeonKeeperFolder, String destination, boolean overwriteData) { super(dungeonKeeperFolder, destination, overwriteData); @@ -57,7 +57,7 @@ public void internalExecuteTask() { * @param destination Destination folder */ private void convertSounds(String dungeonKeeperFolder, String destination) { - LOGGER.log(Level.INFO, "Extracting sounds to: {0}", destination); + logger.log(Level.INFO, "Extracting sounds to: {0}", destination); updateStatus(null, null); PathUtils.deleteFolder(Paths.get(destination)); String dataDirectory = PathUtils.DKII_SFX_FOLDER; @@ -82,7 +82,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IO }); } catch (IOException ex) { String msg = "Failed to scan sounds folder " + dataDirectory + "!"; - LOGGER.log(Level.ERROR, msg, ex); + logger.log(Level.ERROR, msg, ex); throw new RuntimeException(msg, ex); } diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertTexts.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertTexts.java index 3cde55554..fce6c77db 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertTexts.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertTexts.java @@ -46,7 +46,7 @@ */ public class ConvertTexts extends ConversionTask { - private static final Logger LOGGER = System.getLogger(ConvertTexts.class.getName()); + private static final Logger logger = System.getLogger(ConvertTexts.class.getName()); public ConvertTexts(String dungeonKeeperFolder, String destination, boolean overwriteData) { super(dungeonKeeperFolder, destination, overwriteData); @@ -64,7 +64,7 @@ public void internalExecuteTask() { * @param destination Destination folder */ private void convertTexts(String dungeonKeeperFolder, String destination) { - LOGGER.log(Level.INFO, "Extracting texts to: {0}", destination); + logger.log(Level.INFO, "Extracting texts to: {0}", destination); updateStatus(null, null); Path destinationFolder = Paths.get(destination); PathUtils.deleteFolder(destinationFolder); @@ -88,7 +88,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IO }); } catch (IOException ex) { String msg = "Failed to scan texts folder " + dataDirectory + "!"; - LOGGER.log(Level.ERROR, msg, ex); + logger.log(Level.ERROR, msg, ex); throw new RuntimeException(msg, ex); } @@ -127,7 +127,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IO } } catch (IOException ex) { String msg = "Failed to save the dictionary file to " + dictFile + "!"; - LOGGER.log(Level.ERROR, msg, ex); + logger.log(Level.ERROR, msg, ex); throw new RuntimeException(msg, ex); } } diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertTextures.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertTextures.java index 0cf41ed58..1f18f45de 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertTextures.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertTextures.java @@ -48,7 +48,7 @@ */ public class ConvertTextures extends ConversionTask { - private static final Logger LOGGER = System.getLogger(ConvertTextures.class.getName()); + private static final Logger logger = System.getLogger(ConvertTextures.class.getName()); private final ExecutorService executorService; @@ -76,7 +76,7 @@ public void internalExecuteTask() { try { executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); } catch (InterruptedException ex) { - LOGGER.log(Level.ERROR, "Failed to wait textures conversion complete!", ex); + logger.log(Level.ERROR, "Failed to wait textures conversion complete!", ex); } } } @@ -88,7 +88,7 @@ public void internalExecuteTask() { * @param destination Destination folder */ private void convertTextures(String dungeonKeeperFolder, String destination) { - LOGGER.log(Level.INFO, "Extracting textures to: {0}", destination); + logger.log(Level.INFO, "Extracting textures to: {0}", destination); updateStatus(null, null); PathUtils.deleteFolder(Paths.get(destination)); EngineTexturesFile etFile = getEngineTexturesFile(dungeonKeeperFolder); @@ -152,7 +152,7 @@ private void extractEngineTextureContainer(AtomicInteger progress, int total, En } else if (!overwriteData && Files.exists(newFile)) { // Delete the extracted file - LOGGER.log(Level.INFO, "File {0} already exists, skipping!", newFile); + logger.log(Level.INFO, "File {0} already exists, skipping!", newFile); Files.delete(f); updateStatus(progress.incrementAndGet(), total); @@ -160,7 +160,7 @@ private void extractEngineTextureContainer(AtomicInteger progress, int total, En } Files.move(f, newFile); } catch (IOException ex) { - LOGGER.log(Level.ERROR, "Failed to handle " + textureFile + "!", ex); + logger.log(Level.ERROR, "Failed to handle " + textureFile + "!", ex); onError(new RuntimeException("Failed to handle " + textureFile + "!", ex)); return; @@ -171,7 +171,7 @@ private void extractEngineTextureContainer(AtomicInteger progress, int total, En // No mipmap levels, just extract etFile.extractFileData(textureFile, destination, overwriteData); } catch (Exception ex) { - LOGGER.log(Level.ERROR, "Failed to extract the texture file entry " + textureFile + "!", ex); + logger.log(Level.ERROR, "Failed to extract the texture file entry " + textureFile + "!", ex); onError(new RuntimeException("Failed to save the texture file entry " + textureFile + "!", ex)); return; @@ -204,7 +204,7 @@ private void extractTextureContainer(AtomicInteger progress, int total, WadFile ImageIO.write(lsf.getImage(), "png", bos); } } catch (IOException ex) { - LOGGER.log(Level.ERROR, "Failed to save the wad entry " + entry + "!", ex); + logger.log(Level.ERROR, "Failed to save the wad entry " + entry + "!", ex); onError(new RuntimeException("Failed to save the wad entry " + entry + "!", ex)); return; @@ -213,7 +213,7 @@ private void extractTextureContainer(AtomicInteger progress, int total, WadFile try { wad.extractFileData(entry, destination); } catch (Exception ex) { - LOGGER.log(Level.ERROR, "Failed to extract the wad entry " + entry + "!", ex); + logger.log(Level.ERROR, "Failed to extract the wad entry " + entry + "!", ex); onError(new RuntimeException("Failed to save the wad entry " + entry + "!", ex)); return; diff --git a/src/toniarts/openkeeper/tools/convert/map/KwdFile.java b/src/toniarts/openkeeper/tools/convert/map/KwdFile.java index 5d3389c05..18bda2eb9 100644 --- a/src/toniarts/openkeeper/tools/convert/map/KwdFile.java +++ b/src/toniarts/openkeeper/tools/convert/map/KwdFile.java @@ -80,7 +80,7 @@ */ public final class KwdFile { - private static final Logger LOGGER = System.getLogger(KwdFile.class.getName()); + private static final Logger logger = System.getLogger(KwdFile.class.getName()); // These are needed in various places, I don't know how to else regognize these private final static short ROOM_PORTAL_ID = 3; @@ -312,7 +312,7 @@ private KwdHeader readKwdHeader(ISeekableResourceReader data) throws IOException } if (data.getFilePointer() != startOffset + header.getHeaderSize()) { - LOGGER.log(Level.WARNING, "Incorrect parsing of file header"); + logger.log(Level.WARNING, "Incorrect parsing of file header"); } // Not part of the header, part of the data really @@ -415,7 +415,7 @@ private void readFileContents(KwdHeader header, IResourceReader data) throws IOE break; default: - LOGGER.log(Level.WARNING, "File type {0} have no reader", header.getId()); + logger.log(Level.WARNING, "File type {0} have no reader", header.getId()); break; } } @@ -430,7 +430,7 @@ private void readFileContents(KwdHeader header, IResourceReader data) throws IOE private void readMap(KwdHeader header, IResourceReader file) throws IOException { // Read the requested MAP file - LOGGER.log(Level.INFO, "Reading map!"); + logger.log(Level.INFO, "Reading map!"); if (map == null) { map = new GameMap(header.getWidth(), header.getHeight()); } @@ -459,10 +459,10 @@ private void readPlayers(KwdHeader header, IResourceReader file) throws IOExcept // Read the requested PLAYER file if (players == null) { - LOGGER.log(Level.INFO, "Reading players!"); + logger.log(Level.INFO, "Reading players!"); players = new HashMap<>(header.getItemCount()); } else { - LOGGER.log(Level.WARNING, "Overrides players!"); + logger.log(Level.WARNING, "Overrides players!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -588,10 +588,10 @@ private void readTerrain(KwdHeader header, IResourceReader file) throws RuntimeE // Read the terrain catalog if (terrainTiles == null) { - LOGGER.log(Level.INFO, "Reading terrain!"); + logger.log(Level.INFO, "Reading terrain!"); terrainTiles = new HashMap<>(header.getItemCount()); } else { - LOGGER.log(Level.WARNING, "Overrides terrain!"); + logger.log(Level.WARNING, "Overrides terrain!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -741,7 +741,7 @@ private ArtResource readArtResource(IResourceChunkReader reader) throws IOExcept default: reader.readAndCheckNull(12); - LOGGER.log(Level.WARNING, "Unknown artResource type {0}", artResource.getType()); + logger.log(Level.WARNING, "Unknown artResource type {0}", artResource.getType()); break; } reader.skipBytes(4); @@ -798,10 +798,10 @@ private void readDoors(KwdHeader header, IResourceReader file) throws IOExceptio // Read the doors catalog if (doors == null) { - LOGGER.log(Level.INFO, "Reading doors!"); + logger.log(Level.INFO, "Reading doors!"); doors = new HashMap<>(header.getItemCount()); } else { - LOGGER.log(Level.WARNING, "Overrides doors!"); + logger.log(Level.WARNING, "Overrides doors!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -864,10 +864,10 @@ private void readTraps(KwdHeader header, IResourceReader file) throws IOExceptio // Read the traps catalog if (traps == null) { - LOGGER.log(Level.INFO, "Reading traps!"); + logger.log(Level.INFO, "Reading traps!"); traps = new HashMap<>(header.getItemCount()); } else { - LOGGER.log(Level.WARNING, "Overrides traps!"); + logger.log(Level.WARNING, "Overrides traps!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -943,11 +943,11 @@ private void readRooms(KwdHeader header, IResourceReader file) throws RuntimeExc // Read the rooms catalog if (rooms == null) { - LOGGER.log(Level.INFO, "Reading rooms!"); + logger.log(Level.INFO, "Reading rooms!"); rooms = new HashMap<>(header.getItemCount()); roomsByTerrainId = new HashMap<>(header.getItemCount()); } else { - LOGGER.log(Level.WARNING, "Overrides rooms!"); + logger.log(Level.WARNING, "Overrides rooms!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -1025,10 +1025,10 @@ private void readMapInfo(KwdHeader header, IResourceReader data) throws IOExcept // Additional header data if (gameLevel == null) { - LOGGER.log(Level.INFO, "Reading level info!"); + logger.log(Level.INFO, "Reading level info!"); gameLevel = new GameLevel(); } else { - LOGGER.log(Level.WARNING, "Overrides level!"); + logger.log(Level.WARNING, "Overrides level!"); } // Property data @@ -1147,7 +1147,7 @@ private void readMapInfo(KwdHeader header, IResourceReader data) throws IOExcept // See if the globals are present if (readerPath.getId() == MapDataTypeEnum.GLOBALS) { customOverrides = true; - LOGGER.log(Level.INFO, "The map uses custom overrides!"); + logger.log(Level.INFO, "The map uses custom overrides!"); } readerPath.setPath(path); @@ -1187,10 +1187,10 @@ private void readCreatures(KwdHeader header, IResourceReader file) throws IOExce // Read the creatures catalog if (creatures == null) { - LOGGER.log(Level.INFO, "Reading creatures!"); + logger.log(Level.INFO, "Reading creatures!"); creatures = new HashMap<>(header.getItemCount()); } else { - LOGGER.log(Level.WARNING, "Overrides creatures!"); + logger.log(Level.WARNING, "Overrides creatures!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -1558,10 +1558,10 @@ private void readObjects(KwdHeader header, IResourceReader file) throws IOExcept // Read the objects catalog if (objects == null) { - LOGGER.log(Level.INFO, "Reading objects!"); + logger.log(Level.INFO, "Reading objects!"); objects = new HashMap<>(header.getItemCount()); } else { - LOGGER.log(Level.WARNING, "Overrides objects!"); + logger.log(Level.WARNING, "Overrides objects!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -1636,10 +1636,10 @@ private void readCreatureSpells(KwdHeader header, IResourceReader file) throws I // Read the creature spells catalog if (creatureSpells == null) { - LOGGER.log(Level.INFO, "Reading creature spells!"); + logger.log(Level.INFO, "Reading creature spells!"); creatureSpells = new HashMap<>(header.getItemCount()); } else { - LOGGER.log(Level.WARNING, "Overrides creature spells!"); + logger.log(Level.WARNING, "Overrides creature spells!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -1692,10 +1692,10 @@ private void readEffectElements(KwdHeader header, IResourceReader file) throws I // Read the effect elements catalog if (effectElements == null) { - LOGGER.log(Level.INFO, "Reading effect elements!"); + logger.log(Level.INFO, "Reading effect elements!"); effectElements = new HashMap<>(header.getItemCount()); } else { - LOGGER.log(Level.WARNING, "Overrides effect elements!"); + logger.log(Level.WARNING, "Overrides effect elements!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -1748,10 +1748,10 @@ private void readEffects(KwdHeader header, IResourceReader file) throws IOExcept // Read the effects catalog if (effects == null) { - LOGGER.log(Level.INFO, "Reading effects!"); + logger.log(Level.INFO, "Reading effects!"); effects = new HashMap<>(header.getItemCount()); } else { - LOGGER.log(Level.WARNING, "Overrides effects!"); + logger.log(Level.WARNING, "Overrides effects!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -1825,10 +1825,10 @@ private void readKeeperSpells(KwdHeader header, IResourceReader file) throws IOE // Read the keeper spells catalog if (keeperSpells == null) { - LOGGER.log(Level.INFO, "Reading keeper spells!"); + logger.log(Level.INFO, "Reading keeper spells!"); keeperSpells = new HashMap<>(header.getItemCount()); } else { - LOGGER.log(Level.WARNING, "Overrides keeper spells!"); + logger.log(Level.WARNING, "Overrides keeper spells!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -1889,10 +1889,10 @@ private void readThings(KwdHeader header, IResourceReader file) throws IOExcepti // Read the requested Things file if (thingsByType == null) { - LOGGER.log(Level.INFO, "Reading things!"); + logger.log(Level.INFO, "Reading things!"); thingsByType = new HashMap<>(12); } else { - LOGGER.log(Level.WARNING, "Overrides things!"); + logger.log(Level.WARNING, "Overrides things!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -2180,7 +2180,7 @@ private void readThings(KwdHeader header, IResourceReader file) throws IOExcepti // Just skip the bytes reader.skipBytes(thingTag[1]); - LOGGER.log(Level.WARNING, "Unsupported thing type {0}!", thingTag[0]); + logger.log(Level.WARNING, "Unsupported thing type {0}!", thingTag[0]); } } @@ -2209,10 +2209,10 @@ private void readShots(KwdHeader header, IResourceReader file) throws IOExceptio // Read the shots catalog if (shots == null) { - LOGGER.log(Level.INFO, "Reading shots!"); + logger.log(Level.INFO, "Reading shots!"); shots = new HashMap<>(header.getItemCount()); } else { - LOGGER.log(Level.WARNING, "Overrides shots!"); + logger.log(Level.WARNING, "Overrides shots!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); @@ -2277,10 +2277,10 @@ private void readTriggers(KwdHeader header, IResourceReader file) throws IOExcep // Read the requested Triggers file if (triggers == null) { - LOGGER.log(Level.INFO, "Reading triggers!"); + logger.log(Level.INFO, "Reading triggers!"); triggers = new HashMap<>(header.getItemCount()); } else { - LOGGER.log(Level.WARNING, "Overrides triggers!"); + logger.log(Level.WARNING, "Overrides triggers!"); } IResourceChunkReader reader = file.readChunk((int) header.size - header.headerSize); @@ -2496,7 +2496,7 @@ private void readTriggers(KwdHeader header, IResourceReader file) throws IOExcep default: reader.readAndCheckNull(8); // reader.skipBytes(8); - LOGGER.log(Level.WARNING, "Unsupported Type of TriggerGeneric"); + logger.log(Level.WARNING, "Unsupported Type of TriggerGeneric"); break; } @@ -2737,7 +2737,7 @@ private void readTriggers(KwdHeader header, IResourceReader file) throws IOExcep default: reader.readAndCheckNull(8); // reader.skipBytes(8); - LOGGER.log(Level.WARNING, "Unsupported Type of TriggerAction"); + logger.log(Level.WARNING, "Unsupported Type of TriggerAction"); break; } @@ -2752,7 +2752,7 @@ private void readTriggers(KwdHeader header, IResourceReader file) throws IOExcep // Just skip the bytes reader.skipBytes(triggerTag[1]); - LOGGER.log(Level.WARNING, "Unsupported trigger type {0}!", triggerTag[0]); + logger.log(Level.WARNING, "Unsupported trigger type {0}!", triggerTag[0]); } } @@ -2778,7 +2778,7 @@ private void readVariables(KwdHeader header, IResourceReader file) throws IOExce // Read the requested VARIABLES file // Should be the GlobalVariables first, then the level's own if (variables == null) { - LOGGER.log(Level.INFO, "Reading variables!"); + logger.log(Level.INFO, "Reading variables!"); availabilities = new ArrayList<>(); creaturePools = new HashMap<>(4); creatureStatistics = new HashMap<>(10); @@ -2788,13 +2788,13 @@ private void readVariables(KwdHeader header, IResourceReader file) throws IOExce playerAlliances = new HashSet<>(); unknownVariables = new HashSet<>(); } else { - LOGGER.log(Level.INFO, "Overrides variables!"); + logger.log(Level.INFO, "Overrides variables!"); } IResourceChunkReader reader = file.readChunk(header.dataSize); for (int i = 0; i < header.getItemCount(); i++) { if (!reader.hasRemaining()) { - LOGGER.log(Level.WARNING, "Variables end prematurely!"); + logger.log(Level.WARNING, "Variables end prematurely!"); break; } int id = reader.readInteger(); @@ -3259,7 +3259,7 @@ private void checkOffset(KwdHeader header, IResourceChunkReader reader, long off private void checkOffset(long itemSize, IResourceChunkReader reader, long offset) throws IOException { long expected = offset + itemSize; if (reader.position() != expected) { - LOGGER.log(Level.WARNING, "Record size differs from expected! Buffer offset is {0} and should be {1}!", + logger.log(Level.WARNING, "Record size differs from expected! Buffer offset is {0} and should be {1}!", new Object[]{reader.position(), expected}); reader.position((int) expected); } diff --git a/src/toniarts/openkeeper/tools/convert/spr/SprFile.java b/src/toniarts/openkeeper/tools/convert/spr/SprFile.java index f89967aeb..a9c2e24bf 100644 --- a/src/toniarts/openkeeper/tools/convert/spr/SprFile.java +++ b/src/toniarts/openkeeper/tools/convert/spr/SprFile.java @@ -46,7 +46,7 @@ private class SprHeader { protected int framesCount; } - private static final Logger LOGGER = System.getLogger(SprFile.class.getName()); + private static final Logger logger = System.getLogger(SprFile.class.getName()); public static final int[] PALETTE = getHalftonePalette(); @@ -80,7 +80,7 @@ private void parseSprFile(final IResourceReader data) throws RuntimeException, I header.tag = dataReader.readString(4); if (!header.tag.equals(PSFB)) { - LOGGER.log(Level.ERROR, "This is not sprite file"); + logger.log(Level.ERROR, "This is not sprite file"); throw new RuntimeException("This is not sprite file"); } diff --git a/src/toniarts/openkeeper/tools/convert/str/StrFile.java b/src/toniarts/openkeeper/tools/convert/str/StrFile.java index c6db8e7c6..3cc5a43bc 100644 --- a/src/toniarts/openkeeper/tools/convert/str/StrFile.java +++ b/src/toniarts/openkeeper/tools/convert/str/StrFile.java @@ -41,7 +41,7 @@ */ public class StrFile { - private static final Logger LOGGER = System.getLogger(StrFile.class.getName()); + private static final Logger logger = System.getLogger(StrFile.class.getName()); private static final String STR_HEADER_IDENTIFIER = "BFST"; private static final int STR_HEADER_SIZE = 12; @@ -112,7 +112,7 @@ public StrFile(MbToUniFile codePage, Path file) { IResourceChunkReader data = rawStr.readChunk(dataLength); // FIXME should we throws Exception? if (data.length() < dataLength) { - LOGGER.log(Level.WARNING, "Entry {0} was supposed to be {1} but only {2} could be read!", new Object[]{i, dataLength, data.length()}); + logger.log(Level.WARNING, "Entry {0} was supposed to be {1} but only {2} could be read!", new Object[]{i, dataLength, data.length()}); } // Encode the string @@ -166,7 +166,7 @@ private String decodeEntry(final IResourceChunkReader data) { switch (chunkType) { case CHUNK_TYPE_END: { // End if (chunkLength != 0) { - LOGGER.log(Level.ERROR, "End chunk has non-zero length!"); + logger.log(Level.ERROR, "End chunk has non-zero length!"); return null; } break; @@ -183,7 +183,7 @@ private String decodeEntry(final IResourceChunkReader data) { } case CHUNK_TYPE_STRING: { // String if (chunkLength > byteBuffer.remaining()) { - LOGGER.log(Level.ERROR, "Chunk length exceeds the remaining bytes length!"); + logger.log(Level.ERROR, "Chunk length exceeds the remaining bytes length!"); return null; } @@ -194,7 +194,7 @@ private String decodeEntry(final IResourceChunkReader data) { break; } default: { - LOGGER.log(Level.ERROR, "Invalid chunk type!"); + logger.log(Level.ERROR, "Invalid chunk type!"); return null; } } diff --git a/src/toniarts/openkeeper/tools/convert/textures/enginetextures/EngineTexturesFile.java b/src/toniarts/openkeeper/tools/convert/textures/enginetextures/EngineTexturesFile.java index 2227c5b04..8ef2da7b2 100644 --- a/src/toniarts/openkeeper/tools/convert/textures/enginetextures/EngineTexturesFile.java +++ b/src/toniarts/openkeeper/tools/convert/textures/enginetextures/EngineTexturesFile.java @@ -49,7 +49,7 @@ */ public class EngineTexturesFile implements Iterable { - private static final Logger LOGGER = System.getLogger(EngineTexturesFile.class.getName()); + private static final Logger logger = System.getLogger(EngineTexturesFile.class.getName()); private static final boolean DECOMPRESSION_ENABLED = true; private static final int CHESS_BOARD_GRID_SIZE = 8; @@ -190,7 +190,7 @@ private Path extractFileData(String textureEntry, String destination, ISeekableR if (!overwrite && Files.exists(destinationFile)) { // Skip - LOGGER.log(Level.INFO, "File {0} already exists, skipping!", destinationFile); + logger.log(Level.INFO, "File {0} already exists, skipping!", destinationFile); return destinationFile; } diff --git a/src/toniarts/openkeeper/tools/convert/wad/WadFile.java b/src/toniarts/openkeeper/tools/convert/wad/WadFile.java index f435b7b8c..da8d422e1 100644 --- a/src/toniarts/openkeeper/tools/convert/wad/WadFile.java +++ b/src/toniarts/openkeeper/tools/convert/wad/WadFile.java @@ -48,7 +48,7 @@ */ public class WadFile { - private static final Logger LOGGER = System.getLogger(WadFile.class.getName()); + private static final Logger logger = System.getLogger(WadFile.class.getName()); private final Path file; private final Map wadFileEntries; @@ -379,7 +379,7 @@ private byte[] decompressFileData(byte[] src, String fileName) { } } // Of while() if (!finished) { - LOGGER.log(Level.WARNING, "File {0} might not be successfully extracted!", fileName); + logger.log(Level.WARNING, "File {0} might not be successfully extracted!", fileName); } return dest; } diff --git a/src/toniarts/openkeeper/tools/modelviewer/ModelViewer.java b/src/toniarts/openkeeper/tools/modelviewer/ModelViewer.java index d2ff7b722..c05732ce3 100644 --- a/src/toniarts/openkeeper/tools/modelviewer/ModelViewer.java +++ b/src/toniarts/openkeeper/tools/modelviewer/ModelViewer.java @@ -123,7 +123,7 @@ public String toString() { } } - private static final Logger LOGGER = System.getLogger(ModelViewer.class.getName()); + private static final Logger logger = System.getLogger(ModelViewer.class.getName()); //private final static float SCALE = 2; private static String dkIIFolder; @@ -265,7 +265,7 @@ public void simpleInitApp() { Node node = (Node) loader.load(asset); setupModel(node, false); } catch (Exception e) { - LOGGER.log(Level.ERROR, "Failed to handle: " + kmfModel, e); + logger.log(Level.ERROR, "Failed to handle: " + kmfModel, e); } } } @@ -618,7 +618,7 @@ private void fillWithFiles(List object, object.add(key.substring(0, key.length() - 4)); } } catch (IOException ex) { - LOGGER.log(Level.ERROR, "Failed to load the maps!", ex); + logger.log(Level.ERROR, "Failed to load the maps!", ex); } } diff --git a/src/toniarts/openkeeper/tools/modelviewer/SoundsLoader.java b/src/toniarts/openkeeper/tools/modelviewer/SoundsLoader.java index 53c04725e..46e63be68 100644 --- a/src/toniarts/openkeeper/tools/modelviewer/SoundsLoader.java +++ b/src/toniarts/openkeeper/tools/modelviewer/SoundsLoader.java @@ -44,7 +44,7 @@ */ public class SoundsLoader { - private static final Logger LOGGER = System.getLogger(SoundsLoader.class.getName()); + private static final Logger logger = System.getLogger(SoundsLoader.class.getName()); private static final Map CACHE = new HashMap<>(); @@ -72,7 +72,7 @@ public static SoundCategory load(final String category, final boolean useGlobal) CACHE.put(category, result); // temp(category, useGlobal); } catch (Exception e) { - LOGGER.log(Level.WARNING, "Sound category {0} does not exist", category); + logger.log(Level.WARNING, "Sound category {0} does not exist", category); } return result; @@ -86,7 +86,7 @@ protected static SoundGroup getGroup(final String category, final int id) { } if (!sc.hasGroup(id)) { - LOGGER.log(Level.WARNING, "Sound group {0} does not exist in category {1} ", new Object[]{id, category}); + logger.log(Level.WARNING, "Sound group {0} does not exist in category {1} ", new Object[]{id, category}); return null; } diff --git a/src/toniarts/openkeeper/utils/AssetUtils.java b/src/toniarts/openkeeper/utils/AssetUtils.java index 9966780e6..d6f8e0c4e 100644 --- a/src/toniarts/openkeeper/utils/AssetUtils.java +++ b/src/toniarts/openkeeper/utils/AssetUtils.java @@ -72,7 +72,7 @@ */ public class AssetUtils { - private static final Logger LOGGER = System.getLogger(AssetUtils.class.getName()); + private static final Logger logger = System.getLogger(AssetUtils.class.getName()); private final static Object ASSET_LOCK = new Object(); private final static AssetCache ASSET_CACHE = new SimpleAssetCache(); @@ -197,7 +197,7 @@ public static CameraSweepData loadCameraSweep(final AssetManager assetManager, S if (asset == null || !(asset instanceof CameraSweepData)) { String msg = "Failed to load the camera sweep file " + resourceName + "!"; - LOGGER.log(Level.ERROR, msg); + logger.log(Level.ERROR, msg); throw new RuntimeException(msg); } @@ -317,7 +317,7 @@ private static Material createLightningSpriteMaterial(String name, boolean hasAl // Load the texture up mat.setTexture("DiffuseMap", tex); } catch (Exception e) { - LOGGER.log(Level.ERROR, "Can't create a texture out of " + name + "!", e); + logger.log(Level.ERROR, "Can't create a texture out of " + name + "!", e); } // Add to cache @@ -344,7 +344,7 @@ public static Material createParticleMaterial(ArtResource resource, AssetManager try { mat.setTexture("Texture", createArtResourceTexture(resource, assetManager)); } catch (Exception e) { - LOGGER.log(Level.ERROR, "Can't create a texture out of " + resource + "!", e); + logger.log(Level.ERROR, "Can't create a texture out of " + resource + "!", e); } // Add to cache @@ -407,7 +407,7 @@ private static Texture createAnimatingTexture(String name, boolean hasAlpha, Lis img = readImageFromAsset(asset); } else { // use previous img - LOGGER.log(Level.WARNING, "Animated Texture {0}{1} not found", new Object[]{name, x}); + logger.log(Level.WARNING, "Animated Texture {0}{1} not found", new Object[]{name, x}); } g.drawImage(img, null, img.getWidth() * x, 0); } @@ -460,7 +460,7 @@ public static void prewarmAssets(KwdFile kwdFile, AssetManager assetManager, Mai // Rooms prewarmArtResources(kwdFile.getRooms(), assetManager, app); } catch (Exception e) { - LOGGER.log(Level.ERROR, "Failed to prewarm assets!", e); + logger.log(Level.ERROR, "Failed to prewarm assets!", e); } finally { preWarmedAssets = true; } @@ -567,7 +567,7 @@ else if (!terrain.getFlags().contains(Terrain.TerrainFlag.CONSTRUCTION_TYPE_WATE // Enque the warming up, we need GL context if (!models.isEmpty()) { - LOGGER.log(Level.INFO, "Prewarming {0} objects!", models.size()); + logger.log(Level.INFO, "Prewarming {0} objects!", models.size()); app.enqueue(() -> { for (Spatial spatial : models) { @@ -613,7 +613,7 @@ public void visit(Spatial spatial) { material.setBoolean("UseMaterialColors", enabled); } } catch (Exception e) { - LOGGER.log(Level.WARNING, "Failed to set material color!", e); + logger.log(Level.WARNING, "Failed to set material color!", e); } } }); @@ -676,7 +676,7 @@ public void visit(Spatial spatial) { mat.getAdditionalRenderState().setBlendMode(BlendMode.Alpha); spatial.setMaterial(mat); } catch (Exception e) { - LOGGER.log(Level.WARNING, "Failed to set material color!", e); + logger.log(Level.WARNING, "Failed to set material color!", e); } } }); diff --git a/src/toniarts/openkeeper/utils/MapThumbnailGenerator.java b/src/toniarts/openkeeper/utils/MapThumbnailGenerator.java index 13163e28b..6a6fc70fa 100644 --- a/src/toniarts/openkeeper/utils/MapThumbnailGenerator.java +++ b/src/toniarts/openkeeper/utils/MapThumbnailGenerator.java @@ -55,7 +55,7 @@ */ public class MapThumbnailGenerator { - private static final Logger LOGGER = System.getLogger(MapThumbnailGenerator.class.getName()); + private static final Logger logger = System.getLogger(MapThumbnailGenerator.class.getName()); private static final String PALETTE_IMAGE = "Textures".concat(File.separator).concat("Thumbnails").concat(File.separator).concat("MapColours.png"); private static ColorModel cm; @@ -175,7 +175,7 @@ private static ColorModel readPalette() { // Create the actual palette return new IndexColorModel(8, paletteImage.getWidth(), r, g, b); } catch (Exception e) { - LOGGER.log(Level.WARNING, "Failed to create the map thumbnail palette!", e); + logger.log(Level.WARNING, "Failed to create the map thumbnail palette!", e); // TODO: Create a random palette here? throw new RuntimeException("Failed to create the map thumbnail palette!", e); @@ -238,7 +238,7 @@ else if (isRoom(terrainTile)) { } else { // Wat - LOGGER.log(Level.WARNING, "Unkown tile on {0} at tile {1}, {2}!", new Object[]{kwd, x, y}); + logger.log(Level.WARNING, "Unkown tile on {0} at tile {1}, {2}!", new Object[]{kwd, x, y}); } // Write the value diff --git a/src/toniarts/openkeeper/utils/PathUtils.java b/src/toniarts/openkeeper/utils/PathUtils.java index fe6c60d28..aac080dba 100644 --- a/src/toniarts/openkeeper/utils/PathUtils.java +++ b/src/toniarts/openkeeper/utils/PathUtils.java @@ -38,7 +38,7 @@ public class PathUtils { - private static final Logger LOGGER = System.getLogger(PathUtils.class.getName()); + private static final Logger logger = System.getLogger(PathUtils.class.getName()); private static final Map FILENAME_CACHE = new HashMap<>(); private static final PathTree PATH_CACHE = new PathTree(); @@ -175,7 +175,7 @@ public static String getCanonicalRelativePath(String rootPath, String path) { try { return getRealFileName(rootPath, path).substring(rootPath.length()); } catch (IOException e) { - LOGGER.log(Level.WARNING, "Can not locate path " + path + " from " + rootPath + "!", e); + logger.log(Level.WARNING, "Can not locate path " + path + " from " + rootPath + "!", e); return path; } } @@ -278,7 +278,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IO } }); } catch (IOException ex) { - LOGGER.log(Level.ERROR, () -> { + logger.log(Level.ERROR, () -> { return "Failed to delete file/folder " + file + "!"; }, ex); return false; diff --git a/src/toniarts/openkeeper/utils/SettingUtils.java b/src/toniarts/openkeeper/utils/SettingUtils.java index 7d483d1b0..27124623c 100644 --- a/src/toniarts/openkeeper/utils/SettingUtils.java +++ b/src/toniarts/openkeeper/utils/SettingUtils.java @@ -32,7 +32,7 @@ public class SettingUtils { - private static final Logger LOGGER = System.getLogger(SettingUtils.class.getName()); + private static final Logger logger = System.getLogger(SettingUtils.class.getName()); private final static Path SETTINGS_FILE = Paths.get("openkeeper.properties"); private final AppSettings settings; @@ -63,7 +63,7 @@ private void loadSettings() { BufferedInputStream bin = new BufferedInputStream(in)) { settings.load(bin); } catch (IOException ex) { - LOGGER.log(Level.WARNING, "Settings file failed to load from " + SETTINGS_FILE + "!", ex); + logger.log(Level.WARNING, "Settings file failed to load from " + SETTINGS_FILE + "!", ex); } } } @@ -73,7 +73,7 @@ public void saveSettings() { BufferedOutputStream bout = new BufferedOutputStream(out)) { settings.save(bout); } catch (IOException ex) { - LOGGER.log(Level.WARNING, "Settings file failed to save!", ex); + logger.log(Level.WARNING, "Settings file failed to save!", ex); } } } diff --git a/src/toniarts/openkeeper/utils/Utils.java b/src/toniarts/openkeeper/utils/Utils.java index 0f6a8cde0..c040187ab 100644 --- a/src/toniarts/openkeeper/utils/Utils.java +++ b/src/toniarts/openkeeper/utils/Utils.java @@ -41,7 +41,7 @@ */ public class Utils { - private static final Logger LOGGER = System.getLogger(Utils.class.getName()); + private static final Logger logger = System.getLogger(Utils.class.getName()); private static final Random RANDOM = new Random(); private static final String[] BLOOD_TYPES = {"IkI", "BO", "PoE", "BA", "MoO", "O", "ARh"}; @@ -196,7 +196,7 @@ public static int getSystemMemory() { Long bytes = (Long) mBeanServer.getAttribute(new ObjectName("java.lang", "type", "OperatingSystem"), "TotalPhysicalMemorySize"); return (int) Math.round(bytes / 1024d / 1024d / 1024d); } catch (Exception e) { - LOGGER.log(Level.WARNING, "Failed to get system memory!", e); + logger.log(Level.WARNING, "Failed to get system memory!", e); } return 0; } @@ -222,7 +222,7 @@ public static String getLocalIPAddress() { } } } catch (SocketException e) { - LOGGER.log(Level.WARNING, "Failed to get local IP address!", e); + logger.log(Level.WARNING, "Failed to get local IP address!", e); } return null; } diff --git a/src/toniarts/openkeeper/video/tgq/TgqFile.java b/src/toniarts/openkeeper/video/tgq/TgqFile.java index 5b7b30de9..46475c02e 100644 --- a/src/toniarts/openkeeper/video/tgq/TgqFile.java +++ b/src/toniarts/openkeeper/video/tgq/TgqFile.java @@ -43,7 +43,7 @@ */ public abstract class TgqFile implements AutoCloseable { - private static final Logger LOGGER = System.getLogger(TgqFile.class.getName()); + private static final Logger logger = System.getLogger(TgqFile.class.getName()); private final IResourceReader file; private EAAudioHeader audioHeader; @@ -173,7 +173,7 @@ public boolean readFrame() throws IOException { videoFrameIndex++; } default -> { - LOGGER.log(Level.WARNING, "Unkown tag {0}!", tag); + logger.log(Level.WARNING, "Unkown tag {0}!", tag); } } @@ -233,7 +233,7 @@ private static void readAudioHeaderTagData(IResourceChunkReader reader, EAAudioH } default -> { int val = getValue(reader); - LOGGER.log(Level.INFO, "Did not process tag {0}! Value: " + val, tag); + logger.log(Level.INFO, "Did not process tag {0}! Value: " + val, tag); } } } @@ -275,7 +275,7 @@ private static boolean readAudioHeaderSubStream(IResourceChunkReader reader, EAA return true; } default -> { - LOGGER.log(Level.INFO, "Did not process sub stream tag {0}!", subTag); + logger.log(Level.INFO, "Did not process sub stream tag {0}!", subTag); getValue(reader); } } diff --git a/src/toniarts/openkeeper/view/PlayerCameraState.java b/src/toniarts/openkeeper/view/PlayerCameraState.java index 6f7339519..bd2d370d1 100644 --- a/src/toniarts/openkeeper/view/PlayerCameraState.java +++ b/src/toniarts/openkeeper/view/PlayerCameraState.java @@ -60,7 +60,7 @@ */ public class PlayerCameraState extends AbstractPauseAwareState implements ActionListener, AnalogListener { - private static final Logger LOGGER = System.getLogger(PlayerCameraState.class.getName()); + private static final Logger logger = System.getLogger(PlayerCameraState.class.getName()); private Main app; private AppStateManager stateManager; diff --git a/src/toniarts/openkeeper/view/PlayerEntityViewState.java b/src/toniarts/openkeeper/view/PlayerEntityViewState.java index bb1d8122e..f488106d7 100644 --- a/src/toniarts/openkeeper/view/PlayerEntityViewState.java +++ b/src/toniarts/openkeeper/view/PlayerEntityViewState.java @@ -63,7 +63,7 @@ */ public class PlayerEntityViewState extends AbstractAppState { - private static final Logger LOGGER = System.getLogger(PlayerEntityViewState.class.getName()); + private static final Logger logger = System.getLogger(PlayerEntityViewState.class.getName()); private AppStateManager stateManager; private final KwdFile kwdFile; @@ -364,7 +364,7 @@ public ObjectModelContainer(EntityData ed) { @Override protected Spatial addObject(Entity e) { - LOGGER.log(Level.TRACE, "ObjectModelContainer.addObject({0})", e); + logger.log(Level.TRACE, "ObjectModelContainer.addObject({0})", e); Spatial result = createObjectModel(e); updateObject(result, e); return result; @@ -372,7 +372,7 @@ protected Spatial addObject(Entity e) { @Override protected void updateObject(Spatial object, Entity e) { - LOGGER.log(Level.TRACE, "ObjectModelContainer.updateObject({0})", e); + logger.log(Level.TRACE, "ObjectModelContainer.updateObject({0})", e); updateModelPosition(object, e); updateObjectModelState(object, e); } @@ -395,7 +395,7 @@ public CreatureModelContainer(EntityData ed) { @Override protected Spatial addObject(Entity e) { - LOGGER.log(Level.TRACE, "CreatureModelContainer.addObject({0})", e); + logger.log(Level.TRACE, "CreatureModelContainer.addObject({0})", e); Spatial result = createCreatureModel(e); updateObject(result, e); return result; @@ -403,7 +403,7 @@ protected Spatial addObject(Entity e) { @Override protected void updateObject(Spatial object, Entity e) { - LOGGER.log(Level.TRACE, "CreatureModelContainer.updateObject({0})", e); + logger.log(Level.TRACE, "CreatureModelContainer.updateObject({0})", e); updateModelPosition(object, e); updateCreatureModelAnimation(object, e); } @@ -426,7 +426,7 @@ public DoorModelContainer(EntityData ed) { @Override protected Spatial addObject(Entity e) { - LOGGER.log(Level.TRACE, "DoorModelContainer.addObject({0})", e); + logger.log(Level.TRACE, "DoorModelContainer.addObject({0})", e); Spatial result = createDoorModel(e); updateObject(result, e); return result; @@ -434,7 +434,7 @@ protected Spatial addObject(Entity e) { @Override protected void updateObject(Spatial object, Entity e) { - LOGGER.log(Level.TRACE, "DoorModelContainer.updateObject({0})", e); + logger.log(Level.TRACE, "DoorModelContainer.updateObject({0})", e); updateModelPosition(object, e); // LOL, but ok updateDoorModelState(object, e); } @@ -456,7 +456,7 @@ public TrapModelContainer(EntityData ed) { @Override protected Spatial addObject(Entity e) { - LOGGER.log(Level.TRACE, "TrapModelContainer.addObject({0})", e); + logger.log(Level.TRACE, "TrapModelContainer.addObject({0})", e); Spatial result = createTrapModel(e); updateObject(result, e); return result; @@ -464,7 +464,7 @@ protected Spatial addObject(Entity e) { @Override protected void updateObject(Spatial object, Entity e) { - LOGGER.log(Level.TRACE, "TrapModelContainer.updateObject({0})", e); + logger.log(Level.TRACE, "TrapModelContainer.updateObject({0})", e); updateModelPosition(object, e); //updateModelAnimation(object, e); } diff --git a/src/toniarts/openkeeper/view/PlayerInteractionState.java b/src/toniarts/openkeeper/view/PlayerInteractionState.java index ff5475405..0fc90d95c 100644 --- a/src/toniarts/openkeeper/view/PlayerInteractionState.java +++ b/src/toniarts/openkeeper/view/PlayerInteractionState.java @@ -78,7 +78,7 @@ // TODO: States, now only selection public abstract class PlayerInteractionState extends AbstractPauseAwareState { - private static final Logger LOGGER = System.getLogger(PlayerInteractionState.class.getName()); + private static final Logger logger = System.getLogger(PlayerInteractionState.class.getName()); private static final int SPELL_POSSESSION_ID = 2; private static final float CURSOR_UPDATE_INTERVAL = 0.25f; diff --git a/src/toniarts/openkeeper/view/PlayerMapViewState.java b/src/toniarts/openkeeper/view/PlayerMapViewState.java index c0cdc93df..0894a48bd 100644 --- a/src/toniarts/openkeeper/view/PlayerMapViewState.java +++ b/src/toniarts/openkeeper/view/PlayerMapViewState.java @@ -62,7 +62,7 @@ */ public abstract class PlayerMapViewState extends AbstractAppState implements MapListener, PlayerActionListener { - private static final Logger LOGGER = System.getLogger(PlayerMapViewState.class.getName()); + private static final Logger logger = System.getLogger(PlayerMapViewState.class.getName()); private Main app; private AppStateManager stateManager; @@ -256,7 +256,7 @@ public MapTileContainer(EntityData entityData, KwdFile kwdFile) { @Override protected IMapTileInformation addObject(Entity e) { - LOGGER.log(Level.TRACE, "MapTileContainer.addObject({0})", e); + logger.log(Level.TRACE, "MapTileContainer.addObject({0})", e); IMapTileInformation result = new MapTileInformation(e); Point p = result.getLocation(); @@ -277,7 +277,7 @@ protected void updateObjects(Set set) { return; } - LOGGER.log(Level.TRACE, "MapTileContainer.updateObjects({0})", set.size()); + logger.log(Level.TRACE, "MapTileContainer.updateObjects({0})", set.size()); // Collect the tiles Point[] updatableTiles = new Point[set.size()]; @@ -285,7 +285,7 @@ protected void updateObjects(Set set) { for (Entity e : set) { IMapTileInformation object = getObject(e.getId()); if (object == null) { - LOGGER.log(Level.WARNING, "Update: No matching object for entity:{0}", e); + logger.log(Level.WARNING, "Update: No matching object for entity:{0}", e); continue; } updatableTiles[i] = object.getLocation(); @@ -304,7 +304,7 @@ protected void updateObject(IMapTileInformation object, Entity e) { @Override protected void removeObject(IMapTileInformation object, Entity e) { - LOGGER.log(Level.TRACE, "MapTileContainer.removeObject({0})", e); + logger.log(Level.TRACE, "MapTileContainer.removeObject({0})", e); } @Override diff --git a/src/toniarts/openkeeper/view/animation/AnimationLoader.java b/src/toniarts/openkeeper/view/animation/AnimationLoader.java index 246b59a87..222d6dae1 100644 --- a/src/toniarts/openkeeper/view/animation/AnimationLoader.java +++ b/src/toniarts/openkeeper/view/animation/AnimationLoader.java @@ -35,7 +35,7 @@ */ public final class AnimationLoader { - private static final Logger LOGGER = System.getLogger(AnimationLoader.class.getName()); + private static final Logger logger = System.getLogger(AnimationLoader.class.getName()); private static final String START_ANIM_NODE_NAME = "Start"; private static final String END_ANIM_NODE_NAME = "End"; @@ -88,7 +88,7 @@ private static void attachResource(final Node root, final AnimationControl anima animComposer.actionSequence(ANIM_WITH_LISTENERS_NAME, animComposer.action(KmfModelLoader.DUMMY_ANIM_CLIP_NAME), Tweens.callMethod(ANIM_EVENT_LISTENER, "onAnimationDone", animComposer, animationControl, root, resource, getLoopModeOnChannel(spat))); } } catch (Exception e) { - LOGGER.log(Level.WARNING, e.getMessage()); + logger.log(Level.WARNING, e.getMessage()); } } } @@ -139,7 +139,7 @@ public static void playAnimation(Spatial spatial, ArtResource anim, AssetManager attachResource(root, root.getControl(AnimationControl.class), anim, assetManager); if(anim == null) { - LOGGER.log(Level.WARNING, "Animation null!"); + logger.log(Level.WARNING, "Animation null!"); return; } @@ -170,7 +170,7 @@ public static void playAnimation(Spatial spatial, ArtResource anim, AssetManager } catch (Exception e) { // FIXME sometimes NPE in CreatureControl.java // line: playAnimation(creature.getAnimEntranceResource()); - LOGGER.log(Level.ERROR, () -> "Creature animation playing error: " + e.toString(), e); + logger.log(Level.ERROR, () -> "Creature animation playing error: " + e.toString(), e); } } diff --git a/src/toniarts/openkeeper/view/control/TorchControl.java b/src/toniarts/openkeeper/view/control/TorchControl.java index 40c0ecdc7..9d0df1a5f 100644 --- a/src/toniarts/openkeeper/view/control/TorchControl.java +++ b/src/toniarts/openkeeper/view/control/TorchControl.java @@ -52,7 +52,7 @@ */ public final class TorchControl extends BillboardControl { - private static final Logger log = System.getLogger(TorchControl.class.getName()); + private static final Logger logger = System.getLogger(TorchControl.class.getName()); private final int frames = 20; private Material material; @@ -94,7 +94,7 @@ private Spatial createFlame() { result.setShadowMode(RenderQueue.ShadowMode.Off); } catch (Exception e) { - log.log(Level.WARNING, "Can't create torch flame", e); + logger.log(Level.WARNING, "Can't create torch flame", e); } ((DesktopAssetManager) assetManager).addToCache(ASSET_KEY, result); diff --git a/src/toniarts/openkeeper/view/control/UnitFlowerControl.java b/src/toniarts/openkeeper/view/control/UnitFlowerControl.java index 54dfef1c9..0e21ac729 100644 --- a/src/toniarts/openkeeper/view/control/UnitFlowerControl.java +++ b/src/toniarts/openkeeper/view/control/UnitFlowerControl.java @@ -56,7 +56,7 @@ */ public abstract class UnitFlowerControl extends BillboardControl implements IUnitFlowerControl { - private static final Logger LOGGER = System.getLogger(UnitFlowerControl.class.getName()); + private static final Logger logger = System.getLogger(UnitFlowerControl.class.getName()); private static final float DISPLAY_SECONDS = 2.5f; private static final Collection> WATCHED_COMPONENTS = Arrays.asList(Health.class, Owner.class); diff --git a/src/toniarts/openkeeper/view/loader/CreatureLoader.java b/src/toniarts/openkeeper/view/loader/CreatureLoader.java index 379c01519..c53c04639 100644 --- a/src/toniarts/openkeeper/view/loader/CreatureLoader.java +++ b/src/toniarts/openkeeper/view/loader/CreatureLoader.java @@ -32,7 +32,7 @@ */ public class CreatureLoader implements ILoader { - private static final Logger LOGGER = System.getLogger(CreatureLoader.class.getName()); + private static final Logger logger = System.getLogger(CreatureLoader.class.getName()); private final KwdFile kwdFile; @@ -47,7 +47,7 @@ public Spatial load(AssetManager assetManager, CreatureViewState creatureViewSta Node creatureRoot = new Node(creature.getName()); return creatureRoot; } catch (Exception e) { - LOGGER.log(Level.ERROR, "Failed to load creature " + creatureViewState + "!", e); + logger.log(Level.ERROR, "Failed to load creature " + creatureViewState + "!", e); } return null; } diff --git a/src/toniarts/openkeeper/view/loader/DoorLoader.java b/src/toniarts/openkeeper/view/loader/DoorLoader.java index 76f18f947..95f993e95 100644 --- a/src/toniarts/openkeeper/view/loader/DoorLoader.java +++ b/src/toniarts/openkeeper/view/loader/DoorLoader.java @@ -34,7 +34,7 @@ */ public class DoorLoader implements ILoader { - private static final Logger LOGGER = System.getLogger(DoorLoader.class.getName()); + private static final Logger logger = System.getLogger(DoorLoader.class.getName()); private final KwdFile kwdFile; @@ -50,7 +50,7 @@ public Spatial load(AssetManager assetManager, DoorViewState door) { Node nodeObject = (Node) AssetUtils.loadModel(assetManager, artResource.getName(), artResource); return nodeObject; } catch (Exception e) { - LOGGER.log(Level.ERROR, "Failed to load door " + door + "!", e); + logger.log(Level.ERROR, "Failed to load door " + door + "!", e); } return null; } diff --git a/src/toniarts/openkeeper/view/loader/ObjectLoader.java b/src/toniarts/openkeeper/view/loader/ObjectLoader.java index ada517a54..da2d7f36b 100644 --- a/src/toniarts/openkeeper/view/loader/ObjectLoader.java +++ b/src/toniarts/openkeeper/view/loader/ObjectLoader.java @@ -33,7 +33,7 @@ */ public class ObjectLoader implements ILoader { - private static final Logger LOGGER = System.getLogger(ObjectLoader.class.getName()); + private static final Logger logger = System.getLogger(ObjectLoader.class.getName()); private final KwdFile kwdFile; @@ -48,7 +48,7 @@ public Spatial load(AssetManager assetManager, ObjectViewState object) { Node nodeObject = (Node) AssetUtils.loadModel(assetManager, artResource.getName(), artResource); return nodeObject; } catch (Exception e) { - LOGGER.log(Level.ERROR, "Failed to load object " + object + "!", e); + logger.log(Level.ERROR, "Failed to load object " + object + "!", e); } return null; } diff --git a/src/toniarts/openkeeper/view/loader/TrapLoader.java b/src/toniarts/openkeeper/view/loader/TrapLoader.java index 55a1d0560..0d8772906 100644 --- a/src/toniarts/openkeeper/view/loader/TrapLoader.java +++ b/src/toniarts/openkeeper/view/loader/TrapLoader.java @@ -33,7 +33,7 @@ */ public class TrapLoader implements ILoader { - private static final Logger LOGGER = System.getLogger(TrapLoader.class.getName()); + private static final Logger logger = System.getLogger(TrapLoader.class.getName()); private final KwdFile kwdFile; @@ -48,7 +48,7 @@ public Spatial load(AssetManager assetManager, TrapViewState trap) { Node nodeObject = (Node) AssetUtils.loadModel(assetManager, artResource.getName(), artResource); return nodeObject; } catch (Exception e) { - LOGGER.log(Level.ERROR, "Failed to load trap " + trap + "!", e); + logger.log(Level.ERROR, "Failed to load trap " + trap + "!", e); } return null; } diff --git a/src/toniarts/openkeeper/view/map/MapViewController.java b/src/toniarts/openkeeper/view/map/MapViewController.java index b6cb45914..5b4a69a1e 100644 --- a/src/toniarts/openkeeper/view/map/MapViewController.java +++ b/src/toniarts/openkeeper/view/map/MapViewController.java @@ -71,7 +71,7 @@ */ public abstract class MapViewController implements ILoader { - private static final Logger LOGGER = System.getLogger(MapViewController.class.getName()); + private static final Logger logger = System.getLogger(MapViewController.class.getName()); public final static float TILE_WIDTH = 1; public final static float TILE_HEIGHT = 1; @@ -143,7 +143,7 @@ public Spatial load(AssetManager assetManager, KwdFile object) { try { handleTile(tile, terrain); } catch (Exception e) { - LOGGER.log(Level.ERROR, "Failed to handle tile at " + tile.getLocation() + "!", e); + logger.log(Level.ERROR, "Failed to handle tile at " + tile.getLocation() + "!", e); } // Update progress @@ -293,7 +293,7 @@ public void visit(Spatial spatial) { AssetUtils.assignMapsToMaterial(assetManager, material); } catch (Exception e) { - LOGGER.log(Level.WARNING, "Error applying decay texture: {0} to {1} terrain! ({2})", new Object[]{diffuseTexture, terrain.getName(), e.getMessage()}); + logger.log(Level.WARNING, "Error applying decay texture: {0} to {1} terrain! ({2})", new Object[]{diffuseTexture, terrain.getName(), e.getMessage()}); } } } @@ -444,7 +444,7 @@ public void visit(Spatial spatial) { } catch (Exception e) { // FIXME: Rock top fails, we may have a problem in the material naming - LOGGER.log(Level.WARNING, "Failed to load a random texture to terrain id " + tile.getTerrainId() + ", texture index " + tex + "!", e); + logger.log(Level.WARNING, "Failed to load a random texture to terrain id " + tile.getTerrainId() + ", texture index " + tex + "!", e); } } } diff --git a/src/toniarts/openkeeper/view/map/RoomFactory.java b/src/toniarts/openkeeper/view/map/RoomFactory.java index c297fa2d6..102c0ac34 100644 --- a/src/toniarts/openkeeper/view/map/RoomFactory.java +++ b/src/toniarts/openkeeper/view/map/RoomFactory.java @@ -45,7 +45,7 @@ */ public final class RoomFactory { - private static final Logger LOGGER = System.getLogger(RoomFactory.class.getName()); + private static final Logger logger = System.getLogger(RoomFactory.class.getName()); private RoomFactory() { // Nope @@ -121,7 +121,7 @@ else if (roomName.equalsIgnoreCase("Temple")) { default: // TODO - LOGGER.log(Level.WARNING, "Room {0} not exist", roomName); + logger.log(Level.WARNING, "Room {0} not exist", roomName); } return null; } diff --git a/src/toniarts/openkeeper/view/map/Water.java b/src/toniarts/openkeeper/view/map/Water.java index bba7549b2..10c9ab31d 100644 --- a/src/toniarts/openkeeper/view/map/Water.java +++ b/src/toniarts/openkeeper/view/map/Water.java @@ -60,7 +60,7 @@ public enum WaterType { SIMPLE, CLASSIC; }; - private static final Logger LOGGER = System.getLogger(Water.class.getName()); + private static final Logger logger = System.getLogger(Water.class.getName()); private static final WaterType WATER_TYPE = WaterType.CLASSIC; diff --git a/src/toniarts/openkeeper/world/object/ObjectLoader.java b/src/toniarts/openkeeper/world/object/ObjectLoader.java index c77b00e23..47c26c8ce 100644 --- a/src/toniarts/openkeeper/world/object/ObjectLoader.java +++ b/src/toniarts/openkeeper/world/object/ObjectLoader.java @@ -45,7 +45,7 @@ @Deprecated public class ObjectLoader implements ILoader { - private static final Logger LOGGER = System.getLogger(ObjectLoader.class.getName()); + private static final Logger logger = System.getLogger(ObjectLoader.class.getName()); public final static short OBJECT_GOLD_ID = 1; //public final static short OBJECT_GOLD_BAG_ID = 2; @@ -134,7 +134,7 @@ public Spatial load(AssetManager assetManager, Vector2f pos, PlayerSpell playerS // Orientation nodeObject.setLocalRotation(nodeObject.getLocalRotation().fromAngles(0, -objectControl.getOrientation(), 0)); } else { - LOGGER.log(Level.WARNING, "Resource not found for object {0}", objectControl.getObject().getName()); + logger.log(Level.WARNING, "Resource not found for object {0}", objectControl.getObject().getName()); } return nodeObject; From 6d54e8f8c02f69e89a95555610d0652b2f4d4c2b Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Thu, 14 Dec 2023 23:40:14 +0200 Subject: [PATCH 20/47] Retain original log level --- .../openkeeper/game/network/chat/ChatClientService.java | 8 ++++---- .../openkeeper/game/network/chat/ChatHostedService.java | 4 ++-- .../openkeeper/game/network/game/GameClientService.java | 8 ++++---- .../openkeeper/game/network/game/GameHostedService.java | 4 ++-- .../openkeeper/game/network/lobby/LobbyClientService.java | 8 ++++---- .../openkeeper/game/network/lobby/LobbyHostedService.java | 4 ++-- .../game/network/session/AccountClientService.java | 8 ++++---- .../game/network/session/AccountHostedService.java | 8 ++++---- src/toniarts/openkeeper/game/state/ConnectionState.java | 2 +- 9 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/toniarts/openkeeper/game/network/chat/ChatClientService.java b/src/toniarts/openkeeper/game/network/chat/ChatClientService.java index 1f7f0abe2..9ef107b34 100644 --- a/src/toniarts/openkeeper/game/network/chat/ChatClientService.java +++ b/src/toniarts/openkeeper/game/network/chat/ChatClientService.java @@ -85,12 +85,12 @@ public void removeChatSessionListener(ChatSessionListener l) { @Override protected void onInitialize(ClientServiceManager s) { - logger.log(Level.TRACE, "onInitialize({0})", s); + logger.log(Level.DEBUG, "onInitialize({0})", s); this.rmiService = getService(RmiClientService.class); if (rmiService == null) { throw new RuntimeException("ChatClientService requires RMI service"); } - logger.log(Level.TRACE, "Sharing session callback."); + logger.log(Level.DEBUG, "Sharing session callback."); rmiService.share(NetworkConstants.CHAT_CHANNEL, sessionCallback, ChatSessionListener.class); } @@ -101,7 +101,7 @@ protected void onInitialize(ClientServiceManager s) { */ @Override public void start() { - logger.log(Level.TRACE, "start()"); + logger.log(Level.DEBUG, "start()"); super.start(); } @@ -113,7 +113,7 @@ private ChatSession getDelegate() { if (delegate == null) { // Look it up this.delegate = rmiService.getRemoteObject(ChatSession.class); - logger.log(Level.TRACE, "delegate:{0}", delegate); + logger.log(Level.DEBUG, "delegate:{0}", delegate); if (delegate == null) { throw new RuntimeException("No chat session found"); } diff --git a/src/toniarts/openkeeper/game/network/chat/ChatHostedService.java b/src/toniarts/openkeeper/game/network/chat/ChatHostedService.java index b7765ea09..8a3f43c28 100644 --- a/src/toniarts/openkeeper/game/network/chat/ChatHostedService.java +++ b/src/toniarts/openkeeper/game/network/chat/ChatHostedService.java @@ -92,7 +92,7 @@ protected void onInitialize(HostedServiceManager s) { * and will then be able to send/receive messages. */ public void startHostingOnConnection(HostedConnection conn, String playerName) { - logger.log(Level.TRACE, "startHostingOnConnection({0})", conn); + logger.log(Level.DEBUG, "startHostingOnConnection({0})", conn); ChatSessionImpl session = new ChatSessionImpl(conn, playerName); conn.setAttribute(ATTRIBUTE_SESSION, session); @@ -124,7 +124,7 @@ public void startHostingOnConnection(HostedConnection conn) { @Override public void stopHostingOnConnection(HostedConnection conn) { - logger.log(Level.TRACE, "stopHostingOnConnection({0})", conn); + logger.log(Level.DEBUG, "stopHostingOnConnection({0})", conn); ChatSessionImpl player = getChatSession(conn); if (player != null) { diff --git a/src/toniarts/openkeeper/game/network/game/GameClientService.java b/src/toniarts/openkeeper/game/network/game/GameClientService.java index 3045fa217..e9e70dde5 100644 --- a/src/toniarts/openkeeper/game/network/game/GameClientService.java +++ b/src/toniarts/openkeeper/game/network/game/GameClientService.java @@ -84,12 +84,12 @@ public void removeGameSessionListener(GameSessionListener l) { @Override protected void onInitialize(ClientServiceManager s) { - logger.log(Level.TRACE, "onInitialize({0})", s); + logger.log(Level.DEBUG, "onInitialize({0})", s); this.rmiService = getService(RmiClientService.class); if (rmiService == null) { throw new RuntimeException("GameClientService requires RMI service"); } - logger.log(Level.TRACE, "Sharing session callback."); + logger.log(Level.DEBUG, "Sharing session callback."); rmiService.share(NetworkConstants.GAME_CHANNEL, sessionCallback, GameSessionListener.class); // Listen for the streaming messages @@ -113,7 +113,7 @@ protected void onInitialize(ClientServiceManager s) { */ @Override public void start() { - logger.log(Level.TRACE, "start()"); + logger.log(Level.DEBUG, "start()"); super.start(); } @@ -125,7 +125,7 @@ private GameSession getDelegate() { if (delegate == null) { // Look it up this.delegate = rmiService.getRemoteObject(GameSession.class); - logger.log(Level.TRACE, "delegate:{0}", delegate); + logger.log(Level.DEBUG, "delegate:{0}", delegate); if (delegate == null) { throw new RuntimeException("No game session found"); } diff --git a/src/toniarts/openkeeper/game/network/game/GameHostedService.java b/src/toniarts/openkeeper/game/network/game/GameHostedService.java index 159404c1d..8332af8a8 100644 --- a/src/toniarts/openkeeper/game/network/game/GameHostedService.java +++ b/src/toniarts/openkeeper/game/network/game/GameHostedService.java @@ -121,7 +121,7 @@ public void terminate(HostedServiceManager serviceManager) { * generated player name. */ public void startHostingOnConnection(HostedConnection conn, ClientInfo clientInfo) { - logger.log(Level.TRACE, "startHostingOnConnection({0})", conn); + logger.log(Level.DEBUG, "startHostingOnConnection({0})", conn); GameSessionImpl session = new GameSessionImpl(conn, clientInfo); players.put(clientInfo, session); @@ -140,7 +140,7 @@ public void startHostingOnConnection(HostedConnection conn) { @Override public void stopHostingOnConnection(HostedConnection conn) { - logger.log(Level.TRACE, "stopHostingOnConnection({0})", conn); + logger.log(Level.DEBUG, "stopHostingOnConnection({0})", conn); GameSessionImpl player = getGameSession(conn); if (player != null) { diff --git a/src/toniarts/openkeeper/game/network/lobby/LobbyClientService.java b/src/toniarts/openkeeper/game/network/lobby/LobbyClientService.java index 865e24217..a1c94f9e1 100644 --- a/src/toniarts/openkeeper/game/network/lobby/LobbyClientService.java +++ b/src/toniarts/openkeeper/game/network/lobby/LobbyClientService.java @@ -84,12 +84,12 @@ public void removeLobbySessionListener(LobbySessionListener l) { @Override protected void onInitialize(ClientServiceManager s) { - logger.log(Level.TRACE, "onInitialize({0})", s); + logger.log(Level.DEBUG, "onInitialize({0})", s); this.rmiService = getService(RmiClientService.class); if (rmiService == null) { throw new RuntimeException("LobbyClientService requires RMI service"); } - logger.log(Level.TRACE, "Sharing session callback."); + logger.log(Level.DEBUG, "Sharing session callback."); rmiService.share(NetworkConstants.LOBBY_CHANNEL, sessionCallback, LobbySessionListener.class); } @@ -100,7 +100,7 @@ protected void onInitialize(ClientServiceManager s) { */ @Override public void start() { - logger.log(Level.TRACE, "start()"); + logger.log(Level.DEBUG, "start()"); super.start(); } @@ -112,7 +112,7 @@ private LobbySession getDelegate() { if (delegate == null) { // Look it up this.delegate = rmiService.getRemoteObject(LobbySession.class); - logger.log(Level.TRACE, "delegate:{0}", delegate); + logger.log(Level.DEBUG, "delegate:{0}", delegate); if (delegate == null) { throw new RuntimeException("No lobby session found"); } diff --git a/src/toniarts/openkeeper/game/network/lobby/LobbyHostedService.java b/src/toniarts/openkeeper/game/network/lobby/LobbyHostedService.java index 4d06f1fd4..4459aeb47 100644 --- a/src/toniarts/openkeeper/game/network/lobby/LobbyHostedService.java +++ b/src/toniarts/openkeeper/game/network/lobby/LobbyHostedService.java @@ -88,7 +88,7 @@ protected void onInitialize(HostedServiceManager s) { * and will then be able to send/receive messages. */ public void startHostingOnConnection(HostedConnection conn, String playerName) { - logger.log(Level.TRACE, "startHostingOnConnection({0})", conn); + logger.log(Level.DEBUG, "startHostingOnConnection({0})", conn); boolean playerAdded = false; if (players.size() < maxPlayers && !gameStarted) { @@ -136,7 +136,7 @@ public void startHostingOnConnection(HostedConnection conn) { @Override public void stopHostingOnConnection(HostedConnection conn) { - logger.log(Level.TRACE, "stopHostingOnConnection({0})", conn); + logger.log(Level.DEBUG, "stopHostingOnConnection({0})", conn); LobbySessionImpl player = getLobbySession(conn); if (player != null) { diff --git a/src/toniarts/openkeeper/game/network/session/AccountClientService.java b/src/toniarts/openkeeper/game/network/session/AccountClientService.java index c57c6d58b..e4d9631b0 100644 --- a/src/toniarts/openkeeper/game/network/session/AccountClientService.java +++ b/src/toniarts/openkeeper/game/network/session/AccountClientService.java @@ -88,12 +88,12 @@ public void removeAccountSessionListener(AccountSessionListener l) { @Override protected void onInitialize(ClientServiceManager s) { - logger.log(Level.TRACE, "onInitialize({0})", s); + logger.log(Level.DEBUG, "onInitialize({0})", s); this.rmiService = getService(RmiClientService.class); if (rmiService == null) { throw new RuntimeException("AccountClientService requires RMI service"); } - logger.log(Level.TRACE, "Sharing session callback."); + logger.log(Level.DEBUG, "Sharing session callback."); rmiService.share(NetworkConstants.LOBBY_CHANNEL, sessionCallback, AccountSessionListener.class); } @@ -104,10 +104,10 @@ protected void onInitialize(ClientServiceManager s) { */ @Override public void start() { - logger.log(Level.TRACE, "start()"); + logger.log(Level.DEBUG, "start()"); super.start(); this.delegate = rmiService.getRemoteObject(AccountSession.class); - logger.log(Level.TRACE, "delegate:{0}", delegate); + logger.log(Level.DEBUG, "delegate:{0}", delegate); if (delegate == null) { throw new RuntimeException("No account session found during connection setup"); } diff --git a/src/toniarts/openkeeper/game/network/session/AccountHostedService.java b/src/toniarts/openkeeper/game/network/session/AccountHostedService.java index 1a5f29a2e..3d721d930 100644 --- a/src/toniarts/openkeeper/game/network/session/AccountHostedService.java +++ b/src/toniarts/openkeeper/game/network/session/AccountHostedService.java @@ -88,7 +88,7 @@ protected void onInitialize(HostedServiceManager s) { @Override public void startHostingOnConnection(HostedConnection conn) { - logger.log(Level.TRACE, "startHostingOnConnection({0})", conn); + logger.log(Level.DEBUG, "startHostingOnConnection({0})", conn); AccountSessionImpl session = new AccountSessionImpl(conn); conn.setAttribute(ATTRIBUTE_SESSION, session); @@ -100,10 +100,10 @@ public void startHostingOnConnection(HostedConnection conn) { @Override public void stopHostingOnConnection(HostedConnection conn) { - logger.log(Level.TRACE, "stopHostingOnConnection({0})", conn); + logger.log(Level.DEBUG, "stopHostingOnConnection({0})", conn); String playerName = getPlayerName(conn); if (playerName != null) { - logger.log(Level.TRACE, "publishing playerLoggedOff event for:{0}", conn); + logger.log(Level.DEBUG, "publishing playerLoggedOff event for:{0}", conn); // Was really logged on before EventBus.publish(AccountEvent.playerLoggedOff, new AccountEvent(conn, playerName)); } @@ -153,7 +153,7 @@ public void login(String playerName, int systemMemory) { // And let them know they were successful getCallback().notifyLoginStatus(true); - logger.log(Level.TRACE, "publishing playerLoggedOn event for: {0}", conn); + logger.log(Level.DEBUG, "publishing playerLoggedOn event for: {0}", conn); // Notify 'logged in' only after we've told the player themselves // EventBus.publish(AccountEvent.playerLoggedOn, new AccountEvent(conn, playerName)); diff --git a/src/toniarts/openkeeper/game/state/ConnectionState.java b/src/toniarts/openkeeper/game/state/ConnectionState.java index 8b3f36199..11bec4d1f 100644 --- a/src/toniarts/openkeeper/game/state/ConnectionState.java +++ b/src/toniarts/openkeeper/game/state/ConnectionState.java @@ -214,7 +214,7 @@ protected void onConnected() { serverInfo = client.getService(AccountClientService.class).getServerInfo(); - logger.log(Level.TRACE, "Server info:{0}", serverInfo); + logger.log(Level.DEBUG, "Server info:{0}", serverInfo); logger.log(Level.INFO, "join({0})", playerName); From 8a05c84a64122a8bea6c39417c69e24362a748f1 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Thu, 14 Dec 2023 23:45:05 +0200 Subject: [PATCH 21/47] Retain original log level --- .../openkeeper/game/controller/CreaturesController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/toniarts/openkeeper/game/controller/CreaturesController.java b/src/toniarts/openkeeper/game/controller/CreaturesController.java index 3c666ecdf..535f9e366 100644 --- a/src/toniarts/openkeeper/game/controller/CreaturesController.java +++ b/src/toniarts/openkeeper/game/controller/CreaturesController.java @@ -492,7 +492,7 @@ public void spawnHeroParty(short partyId, PartyType partyType, Vector2f position IPartyController partyController = creaturePartiesByPartyId.get(partyId); if (partyController.isCreated()) { partyController = new PartyController(heroParties.get(partyId)); - logger.log(Level.TRACE, "Re-spawning party {0}!", partyId); + logger.log(Level.DEBUG, "Re-spawning party {0}!", partyId); } partyController.setType(partyType); partyController.create(); From f8bb7eb01a6b515b5d6aea6ad4f8428345de7ad7 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 16 Dec 2023 12:02:53 +0200 Subject: [PATCH 22/47] Remove unused variables --- src/toniarts/openkeeper/cinematics/Cinematic.java | 5 ----- src/toniarts/openkeeper/game/logic/DeathSystem.java | 3 --- src/toniarts/openkeeper/game/logic/DecaySystem.java | 3 --- src/toniarts/openkeeper/game/logic/MovementSystem.java | 3 --- src/toniarts/openkeeper/game/state/PlayerState.java | 3 --- .../openkeeper/game/trigger/AbstractThingTriggerControl.java | 3 --- .../game/trigger/creature/CreatureTriggerControl.java | 3 --- .../openkeeper/game/trigger/door/DoorTriggerControl.java | 3 --- .../openkeeper/game/trigger/object/ObjectTriggerControl.java | 3 --- .../openkeeper/game/trigger/party/PartyTriggerControl.java | 3 --- src/toniarts/openkeeper/view/PlayerCameraState.java | 3 --- src/toniarts/openkeeper/view/PlayerInteractionState.java | 3 --- src/toniarts/openkeeper/view/control/UnitFlowerControl.java | 3 --- src/toniarts/openkeeper/view/map/Water.java | 3 --- 14 files changed, 44 deletions(-) diff --git a/src/toniarts/openkeeper/cinematics/Cinematic.java b/src/toniarts/openkeeper/cinematics/Cinematic.java index 3d72219ef..f9ef6bf68 100644 --- a/src/toniarts/openkeeper/cinematics/Cinematic.java +++ b/src/toniarts/openkeeper/cinematics/Cinematic.java @@ -34,7 +34,6 @@ import com.jme3.scene.Node; import com.jme3.scene.control.CameraControl.ControlDirection; import java.awt.Point; -import java.lang.System.Logger; import toniarts.openkeeper.Main; import toniarts.openkeeper.utils.AssetUtils; import toniarts.openkeeper.utils.WorldUtils; @@ -50,12 +49,9 @@ */ public class Cinematic extends com.jme3.cinematic.Cinematic { - private static final Logger logger = System.getLogger(Cinematic.class.getName()); - private final AssetManager assetManager; private static final boolean IS_DEBUG = false; private static final String CAMERA_NAME = "Motion cam"; - private final AppStateManager stateManager; private final CameraSweepData cameraSweepData; private final Camera cam; private final Vector3f start; @@ -105,7 +101,6 @@ public Cinematic(final AssetManager assetManager, final Camera cam, Listener aud super(scene); this.assetManager = assetManager; - this.stateManager = stateManager; this.audioListener = audioListener; this.start = start; this.cam = cam; diff --git a/src/toniarts/openkeeper/game/logic/DeathSystem.java b/src/toniarts/openkeeper/game/logic/DeathSystem.java index 2da200164..cc50ca5a4 100644 --- a/src/toniarts/openkeeper/game/logic/DeathSystem.java +++ b/src/toniarts/openkeeper/game/logic/DeathSystem.java @@ -21,7 +21,6 @@ import com.simsilica.es.EntityData; import com.simsilica.es.EntityId; import com.simsilica.es.EntitySet; -import java.lang.System.Logger; import java.util.Collections; import java.util.Map; import java.util.Set; @@ -37,8 +36,6 @@ * @author Toni Helenius */ public class DeathSystem implements IGameLogicUpdatable { - - private static final Logger logger = System.getLogger(DeathSystem.class.getName()); private final IEntityPositionLookup entityPositionLookup; private final EntitySet deathEntities; diff --git a/src/toniarts/openkeeper/game/logic/DecaySystem.java b/src/toniarts/openkeeper/game/logic/DecaySystem.java index 9a9961ba2..61dc81eb3 100644 --- a/src/toniarts/openkeeper/game/logic/DecaySystem.java +++ b/src/toniarts/openkeeper/game/logic/DecaySystem.java @@ -21,7 +21,6 @@ import com.simsilica.es.EntityData; import com.simsilica.es.EntityId; import com.simsilica.es.EntitySet; -import java.lang.System.Logger; import java.util.Collections; import java.util.Set; import toniarts.openkeeper.game.component.Decay; @@ -35,8 +34,6 @@ * @author Toni Helenius */ public class DecaySystem implements IGameLogicUpdatable { - - private static final Logger logger = System.getLogger(DecaySystem.class.getName()); private final EntitySet decayEntities; private final EntityData entityData; diff --git a/src/toniarts/openkeeper/game/logic/MovementSystem.java b/src/toniarts/openkeeper/game/logic/MovementSystem.java index 8cc2daa13..d68ba5a5d 100644 --- a/src/toniarts/openkeeper/game/logic/MovementSystem.java +++ b/src/toniarts/openkeeper/game/logic/MovementSystem.java @@ -24,7 +24,6 @@ import com.simsilica.es.EntityId; import com.simsilica.es.EntitySet; import java.awt.Point; -import java.lang.System.Logger; import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -44,8 +43,6 @@ * @author Toni Helenius */ public class MovementSystem implements IGameLogicUpdatable { - - private static final Logger logger = System.getLogger(MovementSystem.class.getName()); private final static boolean INDEPENDENT_FACING = false; diff --git a/src/toniarts/openkeeper/game/state/PlayerState.java b/src/toniarts/openkeeper/game/state/PlayerState.java index bfd80ba9e..c5be00c5e 100644 --- a/src/toniarts/openkeeper/game/state/PlayerState.java +++ b/src/toniarts/openkeeper/game/state/PlayerState.java @@ -26,7 +26,6 @@ import de.lessvoid.nifty.Nifty; import java.awt.Point; import java.io.ByteArrayInputStream; -import java.lang.System.Logger; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -66,8 +65,6 @@ * @author Toni Helenius */ public class PlayerState extends AbstractAppState implements PlayerListener { - - private static final Logger logger = System.getLogger(PlayerState.class.getName()); protected final Main app; diff --git a/src/toniarts/openkeeper/game/trigger/AbstractThingTriggerControl.java b/src/toniarts/openkeeper/game/trigger/AbstractThingTriggerControl.java index 02f5f24d6..9f5109ac7 100644 --- a/src/toniarts/openkeeper/game/trigger/AbstractThingTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/AbstractThingTriggerControl.java @@ -16,7 +16,6 @@ */ package toniarts.openkeeper.game.trigger; -import java.lang.System.Logger; import toniarts.openkeeper.game.controller.ICreaturesController; import toniarts.openkeeper.game.controller.IGameController; import toniarts.openkeeper.game.controller.IGameTimer; @@ -32,8 +31,6 @@ * @author Toni Helenius */ public abstract class AbstractThingTriggerControl extends PlayerTriggerControl { - - private static final Logger logger = System.getLogger(AbstractThingTriggerControl.class.getName()); protected T instanceControl; diff --git a/src/toniarts/openkeeper/game/trigger/creature/CreatureTriggerControl.java b/src/toniarts/openkeeper/game/trigger/creature/CreatureTriggerControl.java index c874d5028..7a4de0033 100644 --- a/src/toniarts/openkeeper/game/trigger/creature/CreatureTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/creature/CreatureTriggerControl.java @@ -16,7 +16,6 @@ */ package toniarts.openkeeper.game.trigger.creature; -import java.lang.System.Logger; import toniarts.openkeeper.game.controller.ICreaturesController; import toniarts.openkeeper.game.controller.IGameController; import toniarts.openkeeper.game.controller.IGameTimer; @@ -39,8 +38,6 @@ */ public class CreatureTriggerControl extends AbstractThingTriggerControl { - private static final Logger logger = System.getLogger(CreatureTriggerControl.class.getName()); - public CreatureTriggerControl(final IGameController gameController, final ILevelInfo levelInfo, final IGameTimer gameTimer, final IMapController mapController, final ICreaturesController creaturesController, final int triggerId, final short playerId, final PlayerService playerService) { diff --git a/src/toniarts/openkeeper/game/trigger/door/DoorTriggerControl.java b/src/toniarts/openkeeper/game/trigger/door/DoorTriggerControl.java index b2161bd7a..343567009 100644 --- a/src/toniarts/openkeeper/game/trigger/door/DoorTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/door/DoorTriggerControl.java @@ -16,7 +16,6 @@ */ package toniarts.openkeeper.game.trigger.door; -import java.lang.System.Logger; import toniarts.openkeeper.game.controller.ICreaturesController; import toniarts.openkeeper.game.controller.IGameController; import toniarts.openkeeper.game.controller.IGameTimer; @@ -35,8 +34,6 @@ */ public class DoorTriggerControl extends AbstractThingTriggerControl { - private static final Logger logger = System.getLogger(DoorTriggerControl.class.getName()); - public DoorTriggerControl(final IGameController gameController, final ILevelInfo levelInfo, final IGameTimer gameTimer, final IMapController mapController, final ICreaturesController creaturesController, final int triggerId, final short playerId, final PlayerService playerService) { diff --git a/src/toniarts/openkeeper/game/trigger/object/ObjectTriggerControl.java b/src/toniarts/openkeeper/game/trigger/object/ObjectTriggerControl.java index 86987df53..862de2be3 100644 --- a/src/toniarts/openkeeper/game/trigger/object/ObjectTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/object/ObjectTriggerControl.java @@ -16,7 +16,6 @@ */ package toniarts.openkeeper.game.trigger.object; -import java.lang.System.Logger; import toniarts.openkeeper.game.controller.ICreaturesController; import toniarts.openkeeper.game.controller.IGameController; import toniarts.openkeeper.game.controller.IGameTimer; @@ -35,8 +34,6 @@ */ public class ObjectTriggerControl extends AbstractThingTriggerControl { - private static final Logger logger = System.getLogger(ObjectTriggerControl.class.getName()); - public ObjectTriggerControl(final IGameController gameController, final ILevelInfo levelInfo, final IGameTimer gameTimer, final IMapController mapController, final ICreaturesController creaturesController, final int triggerId, final short playerId, final PlayerService playerService) { diff --git a/src/toniarts/openkeeper/game/trigger/party/PartyTriggerControl.java b/src/toniarts/openkeeper/game/trigger/party/PartyTriggerControl.java index 339fb4be9..7950f127a 100644 --- a/src/toniarts/openkeeper/game/trigger/party/PartyTriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/party/PartyTriggerControl.java @@ -16,7 +16,6 @@ */ package toniarts.openkeeper.game.trigger.party; -import java.lang.System.Logger; import toniarts.openkeeper.game.controller.ICreaturesController; import toniarts.openkeeper.game.controller.IGameController; import toniarts.openkeeper.game.controller.IGameTimer; @@ -29,8 +28,6 @@ import toniarts.openkeeper.tools.convert.map.TriggerGeneric; public class PartyTriggerControl extends TriggerControl { - - private static final Logger logger = System.getLogger(PartyTriggerControl.class.getName()); private IPartyController partyController; diff --git a/src/toniarts/openkeeper/view/PlayerCameraState.java b/src/toniarts/openkeeper/view/PlayerCameraState.java index bd2d370d1..4701cbd29 100644 --- a/src/toniarts/openkeeper/view/PlayerCameraState.java +++ b/src/toniarts/openkeeper/view/PlayerCameraState.java @@ -32,7 +32,6 @@ import com.jme3.renderer.Camera; import com.jme3.scene.Spatial; import java.awt.Point; -import java.lang.System.Logger; import java.util.HashSet; import java.util.Set; import toniarts.openkeeper.Main; @@ -59,8 +58,6 @@ * @author Toni Helenius */ public class PlayerCameraState extends AbstractPauseAwareState implements ActionListener, AnalogListener { - - private static final Logger logger = System.getLogger(PlayerCameraState.class.getName()); private Main app; private AppStateManager stateManager; diff --git a/src/toniarts/openkeeper/view/PlayerInteractionState.java b/src/toniarts/openkeeper/view/PlayerInteractionState.java index 0fc90d95c..89e451180 100644 --- a/src/toniarts/openkeeper/view/PlayerInteractionState.java +++ b/src/toniarts/openkeeper/view/PlayerInteractionState.java @@ -39,7 +39,6 @@ import de.lessvoid.nifty.controls.Label; import de.lessvoid.nifty.elements.Element; import java.awt.Point; -import java.lang.System.Logger; import java.util.HashSet; import java.util.Set; import toniarts.openkeeper.Main; @@ -77,8 +76,6 @@ */ // TODO: States, now only selection public abstract class PlayerInteractionState extends AbstractPauseAwareState { - - private static final Logger logger = System.getLogger(PlayerInteractionState.class.getName()); private static final int SPELL_POSSESSION_ID = 2; private static final float CURSOR_UPDATE_INTERVAL = 0.25f; diff --git a/src/toniarts/openkeeper/view/control/UnitFlowerControl.java b/src/toniarts/openkeeper/view/control/UnitFlowerControl.java index 0e21ac729..0d7828676 100644 --- a/src/toniarts/openkeeper/view/control/UnitFlowerControl.java +++ b/src/toniarts/openkeeper/view/control/UnitFlowerControl.java @@ -36,7 +36,6 @@ import com.simsilica.es.EntityId; import com.simsilica.es.WatchedEntity; import java.awt.Color; -import java.lang.System.Logger; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -55,8 +54,6 @@ * @author Toni Helenius */ public abstract class UnitFlowerControl extends BillboardControl implements IUnitFlowerControl { - - private static final Logger logger = System.getLogger(UnitFlowerControl.class.getName()); private static final float DISPLAY_SECONDS = 2.5f; private static final Collection> WATCHED_COMPONENTS = Arrays.asList(Health.class, Owner.class); diff --git a/src/toniarts/openkeeper/view/map/Water.java b/src/toniarts/openkeeper/view/map/Water.java index 10c9ab31d..ed732e3f9 100644 --- a/src/toniarts/openkeeper/view/map/Water.java +++ b/src/toniarts/openkeeper/view/map/Water.java @@ -31,7 +31,6 @@ import com.jme3.texture.Texture; import com.jme3.util.BufferUtils; import java.awt.Point; -import java.lang.System.Logger; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -60,8 +59,6 @@ public enum WaterType { SIMPLE, CLASSIC; }; - private static final Logger logger = System.getLogger(Water.class.getName()); - private static final WaterType WATER_TYPE = WaterType.CLASSIC; private Water() { From 88b71f6ebdbde5b10ebecd886835b980b56e0a4b Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 16 Dec 2023 12:51:35 +0200 Subject: [PATCH 23/47] Gradle 7.6.2 -> 8.5 --- build.gradle | 16 ++++++++++------ gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index fee933098..917064e92 100644 --- a/build.gradle +++ b/build.gradle @@ -24,11 +24,15 @@ allprojects { application { applicationName = 'OpenKeeper' mainClass = 'toniarts.openkeeper.Main' - applicationDefaultJvmArgs = ["-Dvisualvm.display.name=OpenKeeper -XstartOnFirstThread"] + if (System.getProperty("os.name").toLowerCase().contains("mac")) { + applicationDefaultJvmArgs = ["-Dvisualvm.display.name=OpenKeeper", "-XstartOnFirstThread"] + } + else { + applicationDefaultJvmArgs = ["-Dvisualvm.display.name=OpenKeeper"] + } } task sourcesJar(type: Jar, dependsOn: classes) { - classifier = 'sources' from sourceSets.main.allSource } @@ -39,9 +43,9 @@ artifacts { configurations.all { resolutionStrategy.dependencySubstitution { - substitute module('com.github.nifty-gui:nifty') with module('com.github.tonihele.nifty-gui:nifty:1.4-SNAPSHOT') - substitute module('com.github.nifty-gui:nifty-default-controls') with module('com.github.tonihele.nifty-gui:nifty-default-controls:1.4-SNAPSHOT') - substitute module('com.github.nifty-gui:nifty-style-black') with module('com.github.tonihele.nifty-gui:nifty-style-black:1.4-SNAPSHOT') + substitute module('com.github.nifty-gui:nifty') using module('com.github.tonihele.nifty-gui:nifty:1.4-SNAPSHOT') + substitute module('com.github.nifty-gui:nifty-default-controls') using module('com.github.tonihele.nifty-gui:nifty-default-controls:1.4-SNAPSHOT') + substitute module('com.github.nifty-gui:nifty-style-black') using module('com.github.tonihele.nifty-gui:nifty-style-black:1.4-SNAPSHOT') } } @@ -120,5 +124,5 @@ compileJava { } wrapper { - gradleVersion = '7.6.2' + gradleVersion = '8.5' } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 4e86b9270..3499ded5c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 1fe1969c45aaa053c0ad5dbed5511e3c97cfeeb4 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 16 Dec 2023 12:59:01 +0200 Subject: [PATCH 24/47] Gradle 7.6.2 -> 8.5 --- gradle/wrapper/gradle-wrapper.jar | Bin 61624 -> 43462 bytes gradle/wrapper/gradle-wrapper.properties | 1 + gradlew | 29 +++++++++++++---------- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index afba109285af78dbd2a1d187e33ac4f87c76e392..d64cd4917707c1f8861d8cb53dd15194d4248596 100644 GIT binary patch literal 43462 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 literal 61624 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�Zy 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3499ded5c..1af9e0930 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -2,5 +2,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 65dcd68d6..1aa94a426 100755 --- a/gradlew +++ b/gradlew @@ -83,10 +83,8 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,10 +131,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. @@ -144,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -197,11 +198,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ From eea70e3f8dfabdca9f6d2e4aa0fcb22eec33efc5 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 16 Dec 2023 13:00:35 +0200 Subject: [PATCH 25/47] Comment out the Java version for now --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 917064e92..16ab12722 100644 --- a/build.gradle +++ b/build.gradle @@ -112,7 +112,7 @@ idea { java { toolchain { - languageVersion = JavaLanguageVersion.of(17) + //languageVersion = JavaLanguageVersion.of(21) } } From 92ff0a1d824e155c3ed1c28050f78a68ffd918ee Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 16 Dec 2023 13:06:53 +0200 Subject: [PATCH 26/47] Move the toolchain higher so that the configuration is not yet set --- build.gradle | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index 16ab12722..22ff61082 100644 --- a/build.gradle +++ b/build.gradle @@ -79,6 +79,12 @@ sourceSets { } } +java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } +} + jar { manifest { attributes( @@ -110,12 +116,6 @@ idea { } } -java { - toolchain { - //languageVersion = JavaLanguageVersion.of(21) - } -} - compileJava { // We have annotation processors in log4j, only needed for writing plugins, disable the warnings options.compilerArgs += ["-proc:none"] From dd3eef1f8168d6b92a6ce12ae8aa65f054c57d4f Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 16 Dec 2023 13:08:57 +0200 Subject: [PATCH 27/47] Java 17 -> 21 --- .deepsource.toml | 2 +- .github/workflows/gradle.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.deepsource.toml b/.deepsource.toml index 511115694..669fe2171 100644 --- a/.deepsource.toml +++ b/.deepsource.toml @@ -5,4 +5,4 @@ name = "java" enabled = true [analyzers.meta] - runtime_version = "17" \ No newline at end of file + runtime_version = "21" \ No newline at end of file diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 025bc97ae..0fdc74194 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -18,7 +18,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v3 with: - java-version: '17' + java-version: '21' distribution: 'temurin' - uses: Trass3r/setup-cpp@master - name: Build with Gradle From 04e1cb28ae5caf26d7bbea5ca7a0ded84c0d9b52 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 16 Dec 2023 13:09:43 +0200 Subject: [PATCH 28/47] Java 21 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0b8cd6910..9483ae78e 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ An open source remake of the Dungeon Keeper II game and engine. Goal is to fully implement the game (version 1.7 with 3 bonus packs) as open source cross platform version, with minimal or no changes at all, using the original game assets. So it will require the original game to play / develop. Future development could have fan made graphics (to at least enable standalone version) and features. -OpenKeeper is written in Java using [JMonkeyEngine](http://jmonkeyengine.org/). Currently we are using JME 3.6 + Java 17. +OpenKeeper is written in Java using [JMonkeyEngine](http://jmonkeyengine.org/). Currently we are using JME 3.6 + Java 21. Builds are available from the CI: From a388246b9dd11196e285c78f640603e9e7db3290 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 16 Dec 2023 15:21:57 +0200 Subject: [PATCH 29/47] =?UTF-8?q?Na=C3=AFve=20fix=20to=20task=20dependency?= =?UTF-8?q?=20problem?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 22ff61082..03032f434 100644 --- a/build.gradle +++ b/build.gradle @@ -32,7 +32,7 @@ application { } } -task sourcesJar(type: Jar, dependsOn: classes) { +task sourcesJar(type: Jar, dependsOn: [classes, startScripts, distZip, distTar]) { from sourceSets.main.allSource } From ff3777c527863dc44a2d933ca2f7841591ce1c44 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 16 Dec 2023 19:16:24 +0200 Subject: [PATCH 30/47] Use the new Hash* initializer to get correct size collections --- src/toniarts/openkeeper/Main.java | 2 +- .../openkeeper/game/component/MapTile.java | 4 +- .../game/controller/GameController.java | 2 +- .../controller/creature/PartyController.java | 6 +- .../player/PlayerCreatureControl.java | 3 +- src/toniarts/openkeeper/game/data/Keeper.java | 2 +- .../game/logic/ChickenSpawnSystem.java | 8 +- .../game/logic/CreatureSpawnSystem.java | 2 +- .../openkeeper/game/logic/HealthSystem.java | 2 +- .../game/logic/ManaCalculatorLogic.java | 7 +- .../game/logic/PlayerCreatureSystem.java | 3 +- .../game/logic/PlayerSpellbookSystem.java | 3 +- .../openkeeper/game/logic/SlapSystem.java | 3 +- .../game/map/MapTileController.java | 4 +- .../game/navigation/NavigationService.java | 2 +- .../loading/MultiplayerLoadingState.java | 26 +++-- .../state/loading/SingleBarLoadingState.java | 28 ++--- .../game/state/lobby/LobbyUtils.java | 2 +- .../game/state/lobby/LocalLobby.java | 2 +- .../openkeeper/game/task/TaskManager.java | 4 +- .../openkeeper/tools/convert/FontCreator.java | 100 +++++++++--------- .../tools/convert/KmfModelLoader.java | 17 ++- .../conversion/task/ConvertModels.java | 2 +- .../tools/convert/map/Creature.java | 4 +- .../openkeeper/tools/convert/map/KwdFile.java | 44 ++++---- .../openkeeper/tools/convert/str/StrFile.java | 7 +- .../enginetextures/EngineTexturesFile.java | 2 +- .../openkeeper/tools/convert/wad/WadFile.java | 6 +- .../utils/MapThumbnailGenerator.java | 2 +- src/toniarts/openkeeper/view/map/Water.java | 2 +- .../openkeeper/world/creature/Party.java | 6 +- .../openkeeper/world/effect/VisualEffect.java | 2 +- .../openkeeper/world/terrain/Water.java | 2 +- 33 files changed, 155 insertions(+), 156 deletions(-) diff --git a/src/toniarts/openkeeper/Main.java b/src/toniarts/openkeeper/Main.java index 15c846108..fa6583360 100644 --- a/src/toniarts/openkeeper/Main.java +++ b/src/toniarts/openkeeper/Main.java @@ -133,7 +133,7 @@ public static void main(String[] args) throws InvocationTargetException, Interru * @param args the arguments list */ private static void parseArguments(String[] args) { - params = new HashMap<>(args.length); + params = HashMap.newHashMap(args.length); // Go through the params int i = 0; diff --git a/src/toniarts/openkeeper/game/component/MapTile.java b/src/toniarts/openkeeper/game/component/MapTile.java index da2b23026..3c3781d0d 100644 --- a/src/toniarts/openkeeper/game/component/MapTile.java +++ b/src/toniarts/openkeeper/game/component/MapTile.java @@ -64,11 +64,11 @@ public MapTile(MapTile mapTile) { this.index = mapTile.index; if (mapTile.selection != null && !mapTile.selection.isEmpty()) { - this.selection = new HashMap<>(4, 1); + this.selection = HashMap.newHashMap(4); this.selection.putAll(mapTile.selection); } if (mapTile.flashing != null && !mapTile.flashing.isEmpty()) { - this.flashing = new HashMap<>(4, 1); + this.flashing = HashMap.newHashMap(4); this.flashing.putAll(mapTile.flashing); } } diff --git a/src/toniarts/openkeeper/game/controller/GameController.java b/src/toniarts/openkeeper/game/controller/GameController.java index bbec0a29a..c6492e150 100644 --- a/src/toniarts/openkeeper/game/controller/GameController.java +++ b/src/toniarts/openkeeper/game/controller/GameController.java @@ -99,7 +99,7 @@ public class GameController implements IGameLogicUpdatable, AutoCloseable, IGame private toniarts.openkeeper.game.data.Level levelObject; private final SortedMap players = new TreeMap<>(); - private final Map playerControllers = new HashMap<>(); + private final Map playerControllers = HashMap.newHashMap(6); private final Map gameSettings; private final EntityData entityData; private final PlayerService playerService; diff --git a/src/toniarts/openkeeper/game/controller/creature/PartyController.java b/src/toniarts/openkeeper/game/controller/creature/PartyController.java index 58e62cca7..6cb01aa67 100644 --- a/src/toniarts/openkeeper/game/controller/creature/PartyController.java +++ b/src/toniarts/openkeeper/game/controller/creature/PartyController.java @@ -21,7 +21,7 @@ import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; +import java.util.SequencedMap; import java.util.Set; import java.util.concurrent.atomic.AtomicLong; import toniarts.openkeeper.game.controller.IMapController; @@ -48,7 +48,7 @@ public class PartyController implements IPartyController { private final short partyId; private final int triggerId; private final String name; - private final Map members; + private final SequencedMap members; private PartyType type; private ICreatureController leader; private boolean created = false; @@ -57,7 +57,7 @@ public PartyController(Thing.HeroParty heroParty) { partyId = heroParty.getId(); name = heroParty.getName(); triggerId = heroParty.getTriggerId(); - members = new LinkedHashMap<>(heroParty.getHeroPartyMembers().size()); + members = LinkedHashMap.newLinkedHashMap(heroParty.getHeroPartyMembers().size()); for (Thing.GoodCreature creature : heroParty.getHeroPartyMembers()) { members.put(creature, null); } diff --git a/src/toniarts/openkeeper/game/controller/player/PlayerCreatureControl.java b/src/toniarts/openkeeper/game/controller/player/PlayerCreatureControl.java index c2534daa5..1e67d1a75 100644 --- a/src/toniarts/openkeeper/game/controller/player/PlayerCreatureControl.java +++ b/src/toniarts/openkeeper/game/controller/player/PlayerCreatureControl.java @@ -100,8 +100,7 @@ public void onCreatureRemoved(EntityId entityId, Creature creature) { * @return the creatures */ public Map> getAllCreatures() { - Map> map = new LinkedHashMap<>(types); - return map; + return new LinkedHashMap<>(types); } /** diff --git a/src/toniarts/openkeeper/game/data/Keeper.java b/src/toniarts/openkeeper/game/data/Keeper.java index 9aee39d50..246312cf7 100644 --- a/src/toniarts/openkeeper/game/data/Keeper.java +++ b/src/toniarts/openkeeper/game/data/Keeper.java @@ -58,7 +58,7 @@ public class Keeper implements Comparable, IIndexable, Savable { private transient Player player; private short id; private boolean destroyed = false; - private Set allies = new HashSet<>(4); + private Set allies = HashSet.newHashSet(4); public Keeper() { diff --git a/src/toniarts/openkeeper/game/logic/ChickenSpawnSystem.java b/src/toniarts/openkeeper/game/logic/ChickenSpawnSystem.java index 40ff58c57..4552ab201 100644 --- a/src/toniarts/openkeeper/game/logic/ChickenSpawnSystem.java +++ b/src/toniarts/openkeeper/game/logic/ChickenSpawnSystem.java @@ -76,7 +76,7 @@ public ChickenSpawnSystem(IObjectsController objectsController, Collection(playerControllers.size(), 1f); + playerControllersById = HashMap.newHashMap(playerControllers.size()); for (IPlayerController player : playerControllers) { playerControllersById.put(player.getKeeper().getId(), player); @@ -106,10 +106,10 @@ public ChickenSpawnSystem(IObjectsController objectsController, Collection(playerControllersById.size() * maximumFreerangeChickenCount); - freeRangeChickensByPlayer = new HashMap<>(playerControllers.size(), 1f); + freeRangeChickenOwners = HashMap.newHashMap(playerControllersById.size() * maximumFreerangeChickenCount); + freeRangeChickensByPlayer = HashMap.newHashMap(playerControllers.size()); for (IPlayerController player : playerControllers) { - freeRangeChickensByPlayer.put(player.getKeeper().getId(), new HashSet<>(maximumFreerangeChickenCount)); + freeRangeChickensByPlayer.put(player.getKeeper().getId(), HashSet.newHashSet(maximumFreerangeChickenCount)); } processAddedChickenEntities(freerangeChickens); } diff --git a/src/toniarts/openkeeper/game/logic/CreatureSpawnSystem.java b/src/toniarts/openkeeper/game/logic/CreatureSpawnSystem.java index 2cc29717b..d88acdd76 100644 --- a/src/toniarts/openkeeper/game/logic/CreatureSpawnSystem.java +++ b/src/toniarts/openkeeper/game/logic/CreatureSpawnSystem.java @@ -80,7 +80,7 @@ public CreatureSpawnSystem(ICreaturesController creaturesController, Collection< kwdFile = levelInfo.getLevelData(); // Populate entrance list - playerControllersById = new HashMap<>(playerControllers.size(), 1f); + playerControllersById = HashMap.newHashMap(playerControllers.size()); for (IPlayerController player : playerControllers) { playerControllersById.put(player.getKeeper().getId(), player); diff --git a/src/toniarts/openkeeper/game/logic/HealthSystem.java b/src/toniarts/openkeeper/game/logic/HealthSystem.java index 8c493bda3..290001cc0 100644 --- a/src/toniarts/openkeeper/game/logic/HealthSystem.java +++ b/src/toniarts/openkeeper/game/logic/HealthSystem.java @@ -94,7 +94,7 @@ public HealthSystem(EntityData entityData, KwdFile kwdFile, IEntityPositionLooku this.mapController = mapController; entityIds = new SafeArrayList<>(EntityId.class); - playerControllersById = new HashMap<>(playerControllers.size(), 1f); + playerControllersById = HashMap.newHashMap(playerControllers.size()); for (IPlayerController player : playerControllers) { playerControllersById.put(player.getKeeper().getId(), player); } diff --git a/src/toniarts/openkeeper/game/logic/ManaCalculatorLogic.java b/src/toniarts/openkeeper/game/logic/ManaCalculatorLogic.java index 3a3998912..e5b9312b5 100644 --- a/src/toniarts/openkeeper/game/logic/ManaCalculatorLogic.java +++ b/src/toniarts/openkeeper/game/logic/ManaCalculatorLogic.java @@ -40,19 +40,20 @@ public class ManaCalculatorLogic implements IGameLogicUpdatable { private final EntitySet manaEntities; private final Map ownerIdsByEntityId = new HashMap<>(); private final Map manaGenerationByEntityId = new HashMap<>(); - private final Map manaControls = new HashMap<>(4); + private final Map manaControls; private final Map manaGains; private final Map manaLosses; public ManaCalculatorLogic(Collection playerControllers, EntityData entityData) { + manaControls = HashMap.newHashMap(playerControllers.size()); for (IPlayerController playerController : playerControllers) { PlayerManaControl manaControl = playerController.getManaControl(); if (manaControl != null) { manaControls.put(playerController.getKeeper().getId(), manaControl); } } - manaGains = new HashMap<>(manaControls.size()); - manaLosses = new HashMap<>(manaControls.size()); + manaGains = HashMap.newHashMap(manaControls.size()); + manaLosses = HashMap.newHashMap(manaControls.size()); // Listen for mana entities manaEntities = entityData.getEntities(Mana.class, Owner.class); diff --git a/src/toniarts/openkeeper/game/logic/PlayerCreatureSystem.java b/src/toniarts/openkeeper/game/logic/PlayerCreatureSystem.java index a63bd3258..043b7a804 100644 --- a/src/toniarts/openkeeper/game/logic/PlayerCreatureSystem.java +++ b/src/toniarts/openkeeper/game/logic/PlayerCreatureSystem.java @@ -40,12 +40,13 @@ public class PlayerCreatureSystem implements IGameLogicUpdatable { private final KwdFile kwdFile; private final EntitySet creatureEntities; - private final Map creatureControls = new HashMap<>(4); + private final Map creatureControls; private final Map ownerIdsByEntityId = new HashMap<>(); private final Map creatureIdsByEntityId = new HashMap<>(); public PlayerCreatureSystem(EntityData entityData, KwdFile kwdFile, Collection playerControllers) { this.kwdFile = kwdFile; + creatureControls = HashMap.newHashMap(playerControllers.size()); for (IPlayerController playerController : playerControllers) { creatureControls.put(playerController.getKeeper().getId(), playerController.getCreatureControl()); } diff --git a/src/toniarts/openkeeper/game/logic/PlayerSpellbookSystem.java b/src/toniarts/openkeeper/game/logic/PlayerSpellbookSystem.java index 3671db21f..a17bdee92 100644 --- a/src/toniarts/openkeeper/game/logic/PlayerSpellbookSystem.java +++ b/src/toniarts/openkeeper/game/logic/PlayerSpellbookSystem.java @@ -43,11 +43,12 @@ public class PlayerSpellbookSystem implements IGameLogicUpdatable { private final KwdFile kwdFile; private final EntitySet spellbookEntities; - private final Map playerControllersByPlayerId = new HashMap<>(4); + private final Map playerControllersByPlayerId; private final Map ownersByEntityId = new HashMap<>(); public PlayerSpellbookSystem(EntityData entityData, KwdFile kwdFile, Collection playerControllers) { this.kwdFile = kwdFile; + playerControllersByPlayerId = HashMap.newHashMap(playerControllers.size()); for (IPlayerController playerController : playerControllers) { if (playerController.getResearchControl() != null) { playerControllersByPlayerId.put(playerController.getKeeper().getId(), playerController); diff --git a/src/toniarts/openkeeper/game/logic/SlapSystem.java b/src/toniarts/openkeeper/game/logic/SlapSystem.java index 9bdedeb08..b72f65a70 100644 --- a/src/toniarts/openkeeper/game/logic/SlapSystem.java +++ b/src/toniarts/openkeeper/game/logic/SlapSystem.java @@ -50,7 +50,7 @@ public class SlapSystem implements IGameLogicUpdatable { private final EntitySet objectEntities; private final EntityData entityData; private final int maxSlapDuration; - private final Map statControls = new HashMap<>(4); + private final Map statControls; private final Map slapStartTimesByEntityId = new HashMap<>(); private final static int EFFICIENCY_BONUS = 10; @@ -59,6 +59,7 @@ public SlapSystem(EntityData entityData, KwdFile kwdFile, Collection gameSettings) { this.kwdFile = kwdFile; this.entityData = entityData; + statControls = HashMap.newHashMap(playerControllers.size()); for (IPlayerController playerController : playerControllers) { statControls.put(playerController.getKeeper().getId(), playerController.getStatsControl()); } diff --git a/src/toniarts/openkeeper/game/map/MapTileController.java b/src/toniarts/openkeeper/game/map/MapTileController.java index 7c71d9d0a..424957e07 100644 --- a/src/toniarts/openkeeper/game/map/MapTileController.java +++ b/src/toniarts/openkeeper/game/map/MapTileController.java @@ -73,7 +73,7 @@ protected static void setAttributesFromTerrain(EntityData entityData, EntityId e public void setSelected(boolean selected, short playerId) { MapTile mapTileComponent = new MapTile(getEntityComponent(MapTile.class)); if (mapTileComponent.selection == null) { - mapTileComponent.selection = new HashMap<>(4, 1); + mapTileComponent.selection = HashMap.newHashMap(4); } mapTileComponent.selection.put(playerId, selected); entityData.setComponent(entityId, mapTileComponent); @@ -83,7 +83,7 @@ public void setSelected(boolean selected, short playerId) { public void setFlashed(boolean flashed, short playerId) { MapTile mapTileComponent = new MapTile(getEntityComponent(MapTile.class)); if (mapTileComponent.flashing == null) { - mapTileComponent.flashing = new HashMap<>(4, 1); + mapTileComponent.flashing = HashMap.newHashMap(4); } mapTileComponent.flashing.put(playerId, flashed); entityData.setComponent(entityId, mapTileComponent); diff --git a/src/toniarts/openkeeper/game/navigation/NavigationService.java b/src/toniarts/openkeeper/game/navigation/NavigationService.java index dd005895e..7487cc94b 100644 --- a/src/toniarts/openkeeper/game/navigation/NavigationService.java +++ b/src/toniarts/openkeeper/game/navigation/NavigationService.java @@ -77,7 +77,7 @@ public Point findRandomTileInRoom(Point start, int radius, INavigable navigable) } private Point findRandomAccessibleTile(Point start, int radius, INavigable navigable, Set allowedTiles) { - Set tiles = new HashSet<>(radius * radius - 1); + Set tiles = HashSet.newHashSet(radius * radius - 1); // Start growing the circle, always testing the tile getAccessibleNeighbours(mapController.getMapData().getTile(start.x, start.y), radius, navigable, tiles, allowedTiles); diff --git a/src/toniarts/openkeeper/game/state/loading/MultiplayerLoadingState.java b/src/toniarts/openkeeper/game/state/loading/MultiplayerLoadingState.java index 2da07de0c..fa80a2676 100644 --- a/src/toniarts/openkeeper/game/state/loading/MultiplayerLoadingState.java +++ b/src/toniarts/openkeeper/game/state/loading/MultiplayerLoadingState.java @@ -26,7 +26,6 @@ import com.jme3.texture.Texture; import java.awt.Color; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -44,11 +43,10 @@ */ public abstract class MultiplayerLoadingState extends LoadingState implements IPlayerLoadingProgress { - private static final List AVAILABLE_SCREENS = Arrays.asList("M-LoadingScreen1024x768.png", - "M-LoadingScreen1280x1024.png", "M-LoadingScreen1600x1200.png", "M-LoadingScreen400x300.png", - "M-LoadingScreen512x384.png", "M-LoadingScreen640x480.png", "M-LoadingScreen800x600.png"); - private static final List AVAILABLE_WIDTHS = new ArrayList<>(AVAILABLE_SCREENS.size()); - private static final Map SCREENS = new HashMap<>(AVAILABLE_SCREENS.size()); + private static final String[] availableScreens = {"M-LoadingScreen1024x768.png", "M-LoadingScreen1280x1024.png", "M-LoadingScreen1600x1200.png", "M-LoadingScreen400x300.png", + "M-LoadingScreen512x384.png", "M-LoadingScreen640x480.png", "M-LoadingScreen800x600.png"}; + private static final List availableWidths = new ArrayList<>(availableScreens.length); + private static final Map screens = HashMap.newHashMap(availableScreens.length); private static final float BAR_OFFSET = 17.580f / 100; private static final float BAR_MARGIN = 5.825f / 100; private final List progressBars = new ArrayList<>(4); @@ -57,14 +55,14 @@ public abstract class MultiplayerLoadingState extends LoadingState implements IP // Select by width Pattern p = Pattern.compile("M-LoadingScreen(?\\d+)x(?\\d+)\\.png"); - for (String screen : AVAILABLE_SCREENS) { + for (String screen : availableScreens) { Matcher m = p.matcher(screen); m.matches(); - int width = Integer.valueOf(m.group("width")); - AVAILABLE_WIDTHS.add(width); - SCREENS.put(width, screen); + int width = Integer.parseInt(m.group("width")); + availableWidths.add(width); + screens.put(width, screen); } - Collections.sort(AVAILABLE_WIDTHS); + Collections.sort(availableWidths); } public MultiplayerLoadingState(final Main app, String name) { @@ -99,13 +97,13 @@ public void initialize(AppStateManager stateManager, Application app) { protected Texture getLoadingScreenTexture() { // Use binary search to get the nearest resolution index - int index = Collections.binarySearch(AVAILABLE_WIDTHS, Main.getUserSettings().getAppSettings().getWidth()); + int index = Collections.binarySearch(availableWidths, Main.getUserSettings().getAppSettings().getWidth()); if (index < 0) { - index = Math.min(AVAILABLE_WIDTHS.size() - 1, ~index + 1); + index = Math.min(availableWidths.size() - 1, ~index + 1); } // Load up the texture, there are few localized ones available - String screen = SCREENS.get(AVAILABLE_WIDTHS.get(index)); + String screen = screens.get(availableWidths.get(index)); TextureKey texKey = new TextureKey(getLocalizedLoadingScreenTextureFolder() + screen); return assetManager.loadTexture(texKey); } diff --git a/src/toniarts/openkeeper/game/state/loading/SingleBarLoadingState.java b/src/toniarts/openkeeper/game/state/loading/SingleBarLoadingState.java index 57e5e42c6..8c37007d3 100644 --- a/src/toniarts/openkeeper/game/state/loading/SingleBarLoadingState.java +++ b/src/toniarts/openkeeper/game/state/loading/SingleBarLoadingState.java @@ -26,7 +26,6 @@ import com.jme3.texture.Texture; import java.awt.Color; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -42,11 +41,12 @@ */ public abstract class SingleBarLoadingState extends LoadingState implements IPlayerLoadingProgress { - private static final List AVAILABLE_SCREENS = Arrays.asList("LoadingScreen1024x768.png", - "LoadingScreen1280x1024.png", "LoadingScreen1600x1200.png", "LoadingScreen400x300.png", - "LoadingScreen512x384.png", "LoadingScreen640x480.png", "LoadingScreen800x600.png"); - private static final List AVAILABLE_WIDTHS = new ArrayList<>(AVAILABLE_SCREENS.size()); - private static final Map SCREENS = new HashMap<>(AVAILABLE_SCREENS.size()); + private static final String[] availableScreens = {"LoadingScreen1024x768.png", "LoadingScreen1280x1024.png", + "LoadingScreen1600x1200.png", "LoadingScreen400x300.png", + "LoadingScreen512x384.png", "LoadingScreen640x480.png", + "LoadingScreen800x600.png"}; + private static final List availableWidths = new ArrayList<>(availableScreens.length); + private static final Map screens = HashMap.newHashMap(availableScreens.length); private static final Color BAR_COLOR = new Color(237, 100, 42); private Geometry progressBar; @@ -54,14 +54,14 @@ public abstract class SingleBarLoadingState extends LoadingState implements IPla // Select by width Pattern p = Pattern.compile("LoadingScreen(?\\d+)x(?\\d+)\\.png"); - for (String screen : AVAILABLE_SCREENS) { + for (String screen : availableScreens) { Matcher m = p.matcher(screen); m.matches(); - int width = Integer.valueOf(m.group("width")); - AVAILABLE_WIDTHS.add(width); - SCREENS.put(width, screen); + int width = Integer.parseInt(m.group("width")); + availableWidths.add(width); + screens.put(width, screen); } - Collections.sort(AVAILABLE_WIDTHS); + Collections.sort(availableWidths); } public SingleBarLoadingState(final Main app, String name) { @@ -87,13 +87,13 @@ public void initialize(AppStateManager stateManager, Application app) { protected Texture getLoadingScreenTexture() { // Use binary search to get the nearest resolution index - int index = Collections.binarySearch(AVAILABLE_WIDTHS, Main.getUserSettings().getAppSettings().getWidth()); + int index = Collections.binarySearch(availableWidths, Main.getUserSettings().getAppSettings().getWidth()); if (index < 0) { - index = Math.min(AVAILABLE_WIDTHS.size() - 1, ~index + 1); + index = Math.min(availableWidths.size() - 1, ~index + 1); } // Load up the texture, there are few localized ones available - String screen = SCREENS.get(AVAILABLE_WIDTHS.get(index)); + String screen = screens.get(availableWidths.get(index)); TextureKey texKey = new TextureKey(getLocalizedLoadingScreenTextureFolder() + screen); return assetManager.loadTexture(texKey); } diff --git a/src/toniarts/openkeeper/game/state/lobby/LobbyUtils.java b/src/toniarts/openkeeper/game/state/lobby/LobbyUtils.java index 3a8d0a4d6..f63d2f8b3 100644 --- a/src/toniarts/openkeeper/game/state/lobby/LobbyUtils.java +++ b/src/toniarts/openkeeper/game/state/lobby/LobbyUtils.java @@ -70,7 +70,7 @@ public static Set compactPlayers(Set players, int maxPla Collections.sort(keepers, (ClientInfo o1, ClientInfo o2) -> Short.compare(o2.getKeeper().getId(), o1.getKeeper().getId())); int playersToKick = players.size() - maxPlayers; int playersKicked = 0; - kickedPlayers = new HashSet<>(playersToKick); + kickedPlayers = HashSet.newHashSet(playersToKick); for (ClientInfo keeper : keepers) { if (keeper.getKeeper().isAi()) { kickedPlayers.add(keeper); diff --git a/src/toniarts/openkeeper/game/state/lobby/LocalLobby.java b/src/toniarts/openkeeper/game/state/lobby/LocalLobby.java index fe7d13aaf..399a64716 100644 --- a/src/toniarts/openkeeper/game/state/lobby/LocalLobby.java +++ b/src/toniarts/openkeeper/game/state/lobby/LocalLobby.java @@ -35,7 +35,7 @@ */ public class LocalLobby implements LobbyService, LobbyClientService { - private final Map players = new HashMap<>(4); + private final Map players = HashMap.newHashMap(4); private final List listeners = new CopyOnWriteArrayList<>(); private String map; private int maxPlayers = 0; diff --git a/src/toniarts/openkeeper/game/task/TaskManager.java b/src/toniarts/openkeeper/game/task/TaskManager.java index 931ef8b11..43d3d1135 100644 --- a/src/toniarts/openkeeper/game/task/TaskManager.java +++ b/src/toniarts/openkeeper/game/task/TaskManager.java @@ -135,8 +135,8 @@ public TaskManager(EntityData entityData, IGameWorldController gameWorldControll // Set the players // Create a queue for each managed player (everybody except Good & Neutral) - taskQueues = new HashMap<>(players.size()); - playerControllers = new HashMap<>(); + taskQueues = HashMap.newHashMap(players.size()); + playerControllers = HashMap.newHashMap(players.size()); for (IPlayerController playerController : players) { Keeper keeper = playerController.getKeeper(); diff --git a/src/toniarts/openkeeper/tools/convert/FontCreator.java b/src/toniarts/openkeeper/tools/convert/FontCreator.java index 3c9e06172..54b5e6cd2 100644 --- a/src/toniarts/openkeeper/tools/convert/FontCreator.java +++ b/src/toniarts/openkeeper/tools/convert/FontCreator.java @@ -148,59 +148,61 @@ private String createCharacters(Bf4File fontFile, int size, String fileName) { int y = 0; int page = 0; - Set insertedChars = new HashSet<>(fontFile.getCount()); + Set insertedChars = HashSet.newHashSet(fontFile.getCount()); for (Bf4Entry entry : fontFile) { - if (!insertedChars.contains((int) entry.getCharacter())) { - insertedChars.add((int) entry.getCharacter()); - if (entry.getImage() != null) { - - // See if we still fit & draw - if (x + entry.getWidth() > fontImage.getWidth()) { - x = 0; - y += fontFile.getMaxHeight(); - } - if (y + fontFile.getMaxHeight() > fontImage.getHeight()) { - - // New page entirely - g.dispose(); - fontImages.add(createPagedFontImage(fileName, page, fontImage)); - fontImage = getFontImage(size); - g = (Graphics2D) fontImage.getGraphics(); - - x = 0; - y = 0; - page++; - } - - g.drawImage(entry.getImage(), x, y, null); + if (insertedChars.contains((int) entry.getCharacter())) { + continue; + } + + insertedChars.add((int) entry.getCharacter()); + if (entry.getImage() != null) { + + // See if we still fit & draw + if (x + entry.getWidth() > fontImage.getWidth()) { + x = 0; + y += fontFile.getMaxHeight(); } + if (y + fontFile.getMaxHeight() > fontImage.getHeight()) { + + // New page entirely + g.dispose(); + fontImages.add(createPagedFontImage(fileName, page, fontImage)); + fontImage = getFontImage(size); + g = (Graphics2D) fontImage.getGraphics(); - // Update description - sb.append("char id="); - sb.append(Integer.toString(entry.getCharacter())); - sb.append(" x="); - sb.append(x); - sb.append(" y="); - sb.append(y); - sb.append(" width="); - sb.append(entry.getWidth()); - sb.append(" height="); - sb.append(entry.getHeight()); - sb.append(" xoffset="); - sb.append(entry.getOffsetX()); - sb.append(" yoffset="); - sb.append(entry.getOffsetY()); - sb.append(" xadvance="); - sb.append(entry.getOuterWidth()); - sb.append(" page="); - sb.append(page); - sb.append(" chnl=0\n"); - - if (entry.getImage() != null) { - - // Update the x pos - x += entry.getWidth(); + x = 0; + y = 0; + page++; } + + g.drawImage(entry.getImage(), x, y, null); + } + + // Update description + sb.append("char id="); + sb.append(Integer.toString(entry.getCharacter())); + sb.append(" x="); + sb.append(x); + sb.append(" y="); + sb.append(y); + sb.append(" width="); + sb.append(entry.getWidth()); + sb.append(" height="); + sb.append(entry.getHeight()); + sb.append(" xoffset="); + sb.append(entry.getOffsetX()); + sb.append(" yoffset="); + sb.append(entry.getOffsetY()); + sb.append(" xadvance="); + sb.append(entry.getOuterWidth()); + sb.append(" page="); + sb.append(page); + sb.append(" chnl=0\n"); + + if (entry.getImage() != null) { + + // Update the x pos + x += entry.getWidth(); } } g.dispose(); diff --git a/src/toniarts/openkeeper/tools/convert/KmfModelLoader.java b/src/toniarts/openkeeper/tools/convert/KmfModelLoader.java index 1b95d2616..cd946224b 100644 --- a/src/toniarts/openkeeper/tools/convert/KmfModelLoader.java +++ b/src/toniarts/openkeeper/tools/convert/KmfModelLoader.java @@ -87,14 +87,9 @@ public final class KmfModelLoader implements AssetLoader { private static final Logger logger = System.getLogger(KmfModelLoader.class.getName()); /* Some textures are broken */ - private final static Map textureFixes; + private final static Map textureFixes = Map.of("Goblinbak", "GoblinBack", "Goblin2", "GoblinFront"); private static String dkIIFolder; - static { - textureFixes = new HashMap<>(2); - textureFixes.put("Goblinbak", "GoblinBack"); - textureFixes.put("Goblin2", "GoblinFront"); - } /** * If the material has multiple texture options, the material is named * <material><this suffix><texture index>. Texture index @@ -273,16 +268,16 @@ private void handleAnim(Anim anim, Map> materials, Node // Animation // Poses for each key frame (aproximate that every 1/3 is a key frame, pessimistic) // Note that a key frame may not have all the vertices - var poses = new HashMap>(anim.getFrames() / 3); + Map> poses = HashMap.newHashMap(anim.getFrames() / 3); // Pose indices and indice offsets for each pose - var frameIndices = new HashMap>>(anim.getFrames() / 3); - var frameOffsets = new HashMap>>(anim.getFrames() / 3); + Map>> frameIndices = HashMap.newHashMap(anim.getFrames() / 3); + Map>> frameOffsets = HashMap.newHashMap(anim.getFrames() / 3); // For each frame, we need the previous key frame (pose) and the next, and the weights, for the pose frames List> frameInfosList = new ArrayList<>(anim.getFrames()); for (int frame = 0; frame < anim.getFrames(); ++frame) - frameInfosList.add(new ArrayList()); + frameInfosList.add(new ArrayList<>()); // //Each sprite represents a geometry (+ mesh) since they each have their own material @@ -597,7 +592,7 @@ private Map> getMaterials(KmfFile kmfFile, boolean gener // // Create the materials // - Map> materials = new HashMap(kmfFile.getMaterials().size()); + Map> materials = HashMap.newHashMap(kmfFile.getMaterials().size()); int i = 0; for (toniarts.openkeeper.tools.convert.kmf.Material mat : kmfFile.getMaterials()) { Material material = null; diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertModels.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertModels.java index f88e29f85..110a8bc21 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertModels.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertModels.java @@ -120,7 +120,7 @@ private void convertModels(String dungeonKeeperFolder, String destination, Asset } catch (IOException ex) { throw new RuntimeException("Could not open the meshes.wad archive!", ex); } - Map kmfs = new LinkedHashMap<>(wad.getWadFileEntryCount()); + Map kmfs = LinkedHashMap.newLinkedHashMap(wad.getWadFileEntryCount()); AtomicInteger progress = new AtomicInteger(0); int total = wad.getWadFileEntryCount(); for (final String entry : wad.getWadFileEntries()) { diff --git a/src/toniarts/openkeeper/tools/convert/map/Creature.java b/src/toniarts/openkeeper/tools/convert/map/Creature.java index 0f2df7947..4d5d58536 100644 --- a/src/toniarts/openkeeper/tools/convert/map/Creature.java +++ b/src/toniarts/openkeeper/tools/convert/map/Creature.java @@ -455,7 +455,7 @@ public int getValue() { private String name; // 0 private byte[] unknown1Resource; - private final Map animation = new HashMap<>(48); + private final Map animation = HashMap.newHashMap(48); private final Attributes attributes = new Attributes(); private ArtResource icon1Resource; private ArtResource icon2Resource; @@ -540,7 +540,7 @@ public int getValue() { private Swipe special2Swipe; private ArtResource firstPersonMeleeResource; // 1027 private int unk6; // 107b - private final Map animationOffsets = new HashMap<>(8); + private final Map animationOffsets = HashMap.newHashMap(8); private X1323 x1323[]; private int uniqueNameTextId; private int x14e1[]; // 14e1 diff --git a/src/toniarts/openkeeper/tools/convert/map/KwdFile.java b/src/toniarts/openkeeper/tools/convert/map/KwdFile.java index 18bda2eb9..2db4e2817 100644 --- a/src/toniarts/openkeeper/tools/convert/map/KwdFile.java +++ b/src/toniarts/openkeeper/tools/convert/map/KwdFile.java @@ -460,7 +460,7 @@ private void readPlayers(KwdHeader header, IResourceReader file) throws IOExcept // Read the requested PLAYER file if (players == null) { logger.log(Level.INFO, "Reading players!"); - players = new HashMap<>(header.getItemCount()); + players = HashMap.newHashMap(header.getItemCount()); } else { logger.log(Level.WARNING, "Overrides players!"); } @@ -589,7 +589,7 @@ private void readTerrain(KwdHeader header, IResourceReader file) throws RuntimeE // Read the terrain catalog if (terrainTiles == null) { logger.log(Level.INFO, "Reading terrain!"); - terrainTiles = new HashMap<>(header.getItemCount()); + terrainTiles = HashMap.newHashMap(header.getItemCount()); } else { logger.log(Level.WARNING, "Overrides terrain!"); } @@ -799,7 +799,7 @@ private void readDoors(KwdHeader header, IResourceReader file) throws IOExceptio // Read the doors catalog if (doors == null) { logger.log(Level.INFO, "Reading doors!"); - doors = new HashMap<>(header.getItemCount()); + doors = HashMap.newHashMap(header.getItemCount()); } else { logger.log(Level.WARNING, "Overrides doors!"); } @@ -865,7 +865,7 @@ private void readTraps(KwdHeader header, IResourceReader file) throws IOExceptio // Read the traps catalog if (traps == null) { logger.log(Level.INFO, "Reading traps!"); - traps = new HashMap<>(header.getItemCount()); + traps = HashMap.newHashMap(header.getItemCount()); } else { logger.log(Level.WARNING, "Overrides traps!"); } @@ -944,8 +944,8 @@ private void readRooms(KwdHeader header, IResourceReader file) throws RuntimeExc // Read the rooms catalog if (rooms == null) { logger.log(Level.INFO, "Reading rooms!"); - rooms = new HashMap<>(header.getItemCount()); - roomsByTerrainId = new HashMap<>(header.getItemCount()); + rooms = HashMap.newHashMap(header.getItemCount()); + roomsByTerrainId = HashMap.newHashMap(header.getItemCount()); } else { logger.log(Level.WARNING, "Overrides rooms!"); } @@ -1095,7 +1095,7 @@ private void readMapInfo(KwdHeader header, IResourceReader data) throws IOExcept for (int x = 0; x < textIntrdcOverrdId.length; x++) { textIntrdcOverrdId[x] = reader.readUnsignedShort(); } - Map introductionOverrideTextIds = new HashMap<>(8); + Map introductionOverrideTextIds = HashMap.newHashMap(8); for (int x = 0; x < textIntrdcOverrdObj.length; x++) { if (textIntrdcOverrdObj[x] > 0) { // Over 0 is a valid creature ID @@ -1188,7 +1188,7 @@ private void readCreatures(KwdHeader header, IResourceReader file) throws IOExce // Read the creatures catalog if (creatures == null) { logger.log(Level.INFO, "Reading creatures!"); - creatures = new HashMap<>(header.getItemCount()); + creatures = HashMap.newHashMap(header.getItemCount()); } else { logger.log(Level.WARNING, "Overrides creatures!"); } @@ -1559,7 +1559,7 @@ private void readObjects(KwdHeader header, IResourceReader file) throws IOExcept // Read the objects catalog if (objects == null) { logger.log(Level.INFO, "Reading objects!"); - objects = new HashMap<>(header.getItemCount()); + objects = HashMap.newHashMap(header.getItemCount()); } else { logger.log(Level.WARNING, "Overrides objects!"); } @@ -1637,7 +1637,7 @@ private void readCreatureSpells(KwdHeader header, IResourceReader file) throws I // Read the creature spells catalog if (creatureSpells == null) { logger.log(Level.INFO, "Reading creature spells!"); - creatureSpells = new HashMap<>(header.getItemCount()); + creatureSpells = HashMap.newHashMap(header.getItemCount()); } else { logger.log(Level.WARNING, "Overrides creature spells!"); } @@ -1693,7 +1693,7 @@ private void readEffectElements(KwdHeader header, IResourceReader file) throws I // Read the effect elements catalog if (effectElements == null) { logger.log(Level.INFO, "Reading effect elements!"); - effectElements = new HashMap<>(header.getItemCount()); + effectElements = HashMap.newHashMap(header.getItemCount()); } else { logger.log(Level.WARNING, "Overrides effect elements!"); } @@ -1749,7 +1749,7 @@ private void readEffects(KwdHeader header, IResourceReader file) throws IOExcept // Read the effects catalog if (effects == null) { logger.log(Level.INFO, "Reading effects!"); - effects = new HashMap<>(header.getItemCount()); + effects = HashMap.newHashMap(header.getItemCount()); } else { logger.log(Level.WARNING, "Overrides effects!"); } @@ -1826,7 +1826,7 @@ private void readKeeperSpells(KwdHeader header, IResourceReader file) throws IOE // Read the keeper spells catalog if (keeperSpells == null) { logger.log(Level.INFO, "Reading keeper spells!"); - keeperSpells = new HashMap<>(header.getItemCount()); + keeperSpells = HashMap.newHashMap(header.getItemCount()); } else { logger.log(Level.WARNING, "Overrides keeper spells!"); } @@ -1890,7 +1890,7 @@ private void readThings(KwdHeader header, IResourceReader file) throws IOExcepti // Read the requested Things file if (thingsByType == null) { logger.log(Level.INFO, "Reading things!"); - thingsByType = new HashMap<>(12); + thingsByType = HashMap.newHashMap(12); } else { logger.log(Level.WARNING, "Overrides things!"); } @@ -2210,7 +2210,7 @@ private void readShots(KwdHeader header, IResourceReader file) throws IOExceptio // Read the shots catalog if (shots == null) { logger.log(Level.INFO, "Reading shots!"); - shots = new HashMap<>(header.getItemCount()); + shots = HashMap.newHashMap(header.getItemCount()); } else { logger.log(Level.WARNING, "Overrides shots!"); } @@ -2278,7 +2278,7 @@ private void readTriggers(KwdHeader header, IResourceReader file) throws IOExcep // Read the requested Triggers file if (triggers == null) { logger.log(Level.INFO, "Reading triggers!"); - triggers = new HashMap<>(header.getItemCount()); + triggers = HashMap.newHashMap(header.getItemCount()); } else { logger.log(Level.WARNING, "Overrides triggers!"); } @@ -2780,9 +2780,9 @@ private void readVariables(KwdHeader header, IResourceReader file) throws IOExce if (variables == null) { logger.log(Level.INFO, "Reading variables!"); availabilities = new ArrayList<>(); - creaturePools = new HashMap<>(4); - creatureStatistics = new HashMap<>(10); - creatureFirstPersonStatistics = new HashMap<>(10); + creaturePools = HashMap.newHashMap(4); + creatureStatistics = HashMap.newHashMap(10); + creatureFirstPersonStatistics = HashMap.newHashMap(10); variables = new HashMap<>(); sacrifices = new HashSet<>(); playerAlliances = new HashSet<>(); @@ -2809,7 +2809,7 @@ private void readVariables(KwdHeader header, IResourceReader file) throws IOExce // Add Map playerCreaturePool = creaturePools.get(creaturePool.getPlayerId()); if (playerCreaturePool == null) { - playerCreaturePool = new HashMap<>(12); + playerCreaturePool = HashMap.newHashMap(12); creaturePools.put(creaturePool.getPlayerId(), playerCreaturePool); } playerCreaturePool.put(creaturePool.getCreatureId(), creaturePool); @@ -2852,7 +2852,7 @@ private void readVariables(KwdHeader header, IResourceReader file) throws IOExce // Add Map stats = creatureStatistics.get(creatureStats.getLevel()); if (stats == null) { - stats = new HashMap<>(CreatureStats.StatType.values().length); + stats = HashMap.newHashMap(CreatureStats.StatType.values().length); creatureStatistics.put(creatureStats.getLevel(), stats); } stats.put(creatureStats.getStatId(), creatureStats); @@ -2867,7 +2867,7 @@ private void readVariables(KwdHeader header, IResourceReader file) throws IOExce // Add Map firstPersonStats = creatureFirstPersonStatistics.get(creatureFirstPerson.getLevel()); if (firstPersonStats == null) { - firstPersonStats = new HashMap<>(CreatureStats.StatType.values().length); + firstPersonStats = HashMap.newHashMap(CreatureStats.StatType.values().length); creatureFirstPersonStatistics.put(creatureFirstPerson.getLevel(), firstPersonStats); } firstPersonStats.put(creatureFirstPerson.getStatId(), creatureFirstPerson); diff --git a/src/toniarts/openkeeper/tools/convert/str/StrFile.java b/src/toniarts/openkeeper/tools/convert/str/StrFile.java index 3cc5a43bc..72703dbee 100644 --- a/src/toniarts/openkeeper/tools/convert/str/StrFile.java +++ b/src/toniarts/openkeeper/tools/convert/str/StrFile.java @@ -26,6 +26,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map.Entry; +import java.util.SequencedMap; import java.util.Set; import toniarts.openkeeper.tools.convert.ConversionUtils; import toniarts.openkeeper.tools.convert.FileResourceReader; @@ -52,7 +53,7 @@ public class StrFile { // private final MbToUniFile codePage; private final int fileId; - private final LinkedHashMap entries; + private final SequencedMap entries; /** * Constructs a new STR file reader
@@ -101,7 +102,7 @@ public StrFile(MbToUniFile codePage, Path file) { Collections.sort(offsetsCopy); // Decode the entries - entries = new LinkedHashMap<>(offsetsCount); + entries = LinkedHashMap.newLinkedHashMap(offsetsCount); for (int i = 0; i < offsetsCount; i++) { // Seek to the data and read it @@ -269,7 +270,7 @@ public Set> getEntriesAsSet() { * * @return the entries */ - public LinkedHashMap getEntries() { + public SequencedMap getEntries() { return entries; } diff --git a/src/toniarts/openkeeper/tools/convert/textures/enginetextures/EngineTexturesFile.java b/src/toniarts/openkeeper/tools/convert/textures/enginetextures/EngineTexturesFile.java index 8ef2da7b2..b9f3fcdc8 100644 --- a/src/toniarts/openkeeper/tools/convert/textures/enginetextures/EngineTexturesFile.java +++ b/src/toniarts/openkeeper/tools/convert/textures/enginetextures/EngineTexturesFile.java @@ -87,7 +87,7 @@ public EngineTexturesFile(Path file) { // Read the entries int numberOfEntries = dirReader.readUnsignedInteger(); - engineTextureEntries = new HashMap<>(numberOfEntries); + engineTextureEntries = HashMap.newHashMap(numberOfEntries); dirReader = rawDir.readChunk(size); try (ISeekableResourceReader rawTextures = new FileResourceReader(file)) { diff --git a/src/toniarts/openkeeper/tools/convert/wad/WadFile.java b/src/toniarts/openkeeper/tools/convert/wad/WadFile.java index da8d422e1..8a8c70f55 100644 --- a/src/toniarts/openkeeper/tools/convert/wad/WadFile.java +++ b/src/toniarts/openkeeper/tools/convert/wad/WadFile.java @@ -30,7 +30,7 @@ import java.util.Arrays; import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; +import java.util.SequencedMap; import toniarts.openkeeper.tools.convert.ConversionUtils; import toniarts.openkeeper.tools.convert.FileResourceReader; import toniarts.openkeeper.tools.convert.IResourceChunkReader; @@ -51,7 +51,7 @@ public class WadFile { private static final Logger logger = System.getLogger(WadFile.class.getName()); private final Path file; - private final Map wadFileEntries; + private final SequencedMap wadFileEntries; private static final String WAD_HEADER_IDENTIFIER = "DWFB"; private static final int WAD_HEADER_VERSION = 2; @@ -114,7 +114,7 @@ public WadFile(Path file) { // The file names itself aren't unique, but with the path they are rawWad.seek(nameOffset); byte[] nameArray = rawWad.read(nameSize); - wadFileEntries = new LinkedHashMap<>(files); + wadFileEntries = LinkedHashMap.newLinkedHashMap(files); String path = ""; for (WadFileEntry entry : entries) { int offset = entry.getNameOffset() - nameOffset; diff --git a/src/toniarts/openkeeper/utils/MapThumbnailGenerator.java b/src/toniarts/openkeeper/utils/MapThumbnailGenerator.java index 6a6fc70fa..9824934bb 100644 --- a/src/toniarts/openkeeper/utils/MapThumbnailGenerator.java +++ b/src/toniarts/openkeeper/utils/MapThumbnailGenerator.java @@ -259,7 +259,7 @@ private static boolean isRoom(Terrain tile) { private static Map getPlayerColors() { if (playerColors == null) { short[] playerIds = Utils.getPlayerIds(); - Map pColors = new HashMap<>(playerIds.length); + Map pColors = HashMap.newHashMap(playerIds.length); for (short playerId : playerIds) { pColors.put(playerId, createPlayerColor(playerId)); } diff --git a/src/toniarts/openkeeper/view/map/Water.java b/src/toniarts/openkeeper/view/map/Water.java index ed732e3f9..cc201c3c1 100644 --- a/src/toniarts/openkeeper/view/map/Water.java +++ b/src/toniarts/openkeeper/view/map/Water.java @@ -149,7 +149,7 @@ private static Mesh createMesh(List> entityInstances, bo // Handle each river/lake separately for (EntityInstance entityInstance : entityInstances) { - Map verticeHash = new HashMap<>(entityInstance.getCoordinates().size()); + Map verticeHash = HashMap.newHashMap(entityInstance.getCoordinates().size()); for (Point tile : entityInstance.getCoordinates()) { // For each tile, create a quad, in a way diff --git a/src/toniarts/openkeeper/world/creature/Party.java b/src/toniarts/openkeeper/world/creature/Party.java index 0c455b1e7..894d52a30 100644 --- a/src/toniarts/openkeeper/world/creature/Party.java +++ b/src/toniarts/openkeeper/world/creature/Party.java @@ -21,7 +21,7 @@ import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; +import java.util.SequencedMap; import java.util.Set; import toniarts.openkeeper.tools.convert.IValueEnum; import toniarts.openkeeper.tools.convert.map.Player; @@ -62,7 +62,7 @@ public int getValue() { private final int id; private final int triggerId; private final String name; - private final Map members; + private final SequencedMap members; private Type type; private boolean created = false; private CreatureControl leader; @@ -71,7 +71,7 @@ public Party(Thing.HeroParty heroParty) { id = heroParty.getId(); name = heroParty.getName(); triggerId = heroParty.getTriggerId(); - members = new LinkedHashMap<>(heroParty.getHeroPartyMembers().size()); + members = LinkedHashMap.newLinkedHashMap(heroParty.getHeroPartyMembers().size()); for (Thing.GoodCreature creature : heroParty.getHeroPartyMembers()) { members.put(creature, null); } diff --git a/src/toniarts/openkeeper/world/effect/VisualEffect.java b/src/toniarts/openkeeper/world/effect/VisualEffect.java index fa6d90916..69c8b5be5 100644 --- a/src/toniarts/openkeeper/world/effect/VisualEffect.java +++ b/src/toniarts/openkeeper/world/effect/VisualEffect.java @@ -88,7 +88,7 @@ public VisualEffect(EffectManagerState effectManagerState, Node node, Vector3f l // Create the lists if (effect.getFlags().contains(Effect.EffectFlag.GENERATE_EFFECT_ELEMENTS)) { effects = new ArrayList<>(); - effectElements = new HashMap<>(effect.getGenerateIds().size()); + effectElements = HashMap.newHashMap(effect.getGenerateIds().size()); } else { effects = new ArrayList<>(effect.getGenerateIds().size()); effectElements = Collections.emptyMap(); diff --git a/src/toniarts/openkeeper/world/terrain/Water.java b/src/toniarts/openkeeper/world/terrain/Water.java index 99104aabb..8167d4de3 100644 --- a/src/toniarts/openkeeper/world/terrain/Water.java +++ b/src/toniarts/openkeeper/world/terrain/Water.java @@ -154,7 +154,7 @@ private static Mesh createMesh(List> entityInstances, bo // Handle each river/lake separately for (EntityInstance entityInstance : entityInstances) { - Map verticeHash = new HashMap<>(entityInstance.getCoordinates().size()); + Map verticeHash = HashMap.newHashMap(entityInstance.getCoordinates().size()); for (Point tile : entityInstance.getCoordinates()) { // For each tile, create a quad, in a way From e64ed1ef64f5d34c6828e863538d630da7f20e1a Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sun, 7 Jan 2024 16:40:16 +0200 Subject: [PATCH 31/47] Some small performance improvements and new language features into use --- .../plugins/decoder/MediaInformation.java | 4 +- .../audio/plugins/decoder/MpxReader.java | 2 +- .../audio/plugins/decoder/Output.java | 10 +-- .../audio/plugins/decoder/tag/TagContent.java | 17 ++-- .../plugins/decoder/tag/id3v1/ID3v1.java | 12 +-- .../plugins/decoder/tag/id3v2/Frame.java | 4 +- .../plugins/decoder/tag/id3v2/Header.java | 8 +- .../plugins/decoder/tag/id3v2/ID3v2.java | 2 +- .../openkeeper/common/EntityInstance.java | 2 +- src/toniarts/openkeeper/game/MapSelector.java | 32 ++----- .../game/controller/CreaturesController.java | 12 +-- .../game/controller/GameController.java | 4 +- .../controller/player/PlayerDoorControl.java | 2 +- .../controller/player/PlayerTrapControl.java | 2 +- .../room/AbstractRoomController.java | 2 +- .../game/logic/DungeonHeartConstruction.java | 4 +- src/toniarts/openkeeper/game/map/MapRoom.java | 2 +- .../game/network/ClientListener.java | 2 +- .../game/network/LocalServerSearch.java | 2 +- .../game/network/ServerListener.java | 6 +- .../openkeeper/game/network/ServerQuery.java | 2 +- .../game/network/chat/ChatHostedService.java | 4 +- .../game/network/game/GameClientService.java | 3 +- .../game/network/game/GameHostedService.java | 3 +- .../network/lobby/LobbyHostedService.java | 2 +- .../game/state/GameClientState.java | 2 +- .../openkeeper/game/state/GameState.java | 2 +- .../game/state/MainMenuScreenController.java | 18 ++-- .../openkeeper/game/state/MainMenuState.java | 6 +- .../game/state/PlayerScreenController.java | 6 +- .../openkeeper/game/state/SoundState.java | 16 +--- .../game/state/lobby/LobbyState.java | 85 +++++++++---------- .../game/state/session/LocalGameSession.java | 4 +- .../openkeeper/game/task/TaskManager.java | 3 +- .../game/task/objective/ObjectiveTask.java | 6 +- .../game/trigger/TriggerControl.java | 34 ++++---- .../gui/nifty/chat/ChatBoxViewConverter.java | 8 +- .../openkeeper/gui/nifty/chat/ChatEntry.java | 24 +----- .../gui/nifty/jme/ResearchEffectControl.java | 4 +- .../gui/nifty/table/TableColumn.java | 33 +------ .../gui/nifty/table/TableControl.java | 12 +-- .../tools/convert/AssetsConverter.java | 4 +- .../openkeeper/tools/convert/BitReader.java | 2 +- .../tools/convert/ConversionUtils.java | 2 +- .../openkeeper/tools/convert/FontCreator.java | 33 ++----- .../tools/convert/KmfModelLoader.java | 2 +- .../openkeeper/tools/convert/bf4/Bf4File.java | 2 +- .../convert/conversion/task/ConvertFonts.java | 4 +- .../openkeeper/tools/convert/map/AI.java | 2 +- .../openkeeper/tools/convert/map/KwdFile.java | 2 +- .../tools/convert/map/StringId.java | 23 +---- .../tools/convert/sound/sfx/SfxMapFile.java | 2 +- .../tools/modelviewer/ModelViewer.java | 3 +- src/toniarts/openkeeper/utils/AssetUtils.java | 6 +- src/toniarts/openkeeper/utils/GameLoop.java | 2 +- .../openkeeper/view/KeeperHandState.java | 2 +- .../view/PlayerInteractionState.java | 4 +- .../openkeeper/view/PlayerMapViewState.java | 2 +- .../view/PossessionCameraState.java | 13 ++- .../camera/PlayerCameraRotateControl.java | 3 +- .../openkeeper/view/map/WallSection.java | 17 +--- .../map/construction/HeroGateConstructor.java | 8 +- .../HeroGateThreeByOneConstructor.java | 14 +-- .../map/construction/RoomConstructor.java | 20 ++--- .../openkeeper/world/EntityInstance.java | 2 +- .../openkeeper/world/room/GenericRoom.java | 4 +- .../openkeeper/world/room/HeroGate.java | 4 +- .../world/room/HeroGateThreeByOne.java | 4 +- 68 files changed, 216 insertions(+), 378 deletions(-) diff --git a/src/toniarts/openkeeper/audio/plugins/decoder/MediaInformation.java b/src/toniarts/openkeeper/audio/plugins/decoder/MediaInformation.java index 29aa259a7..72d773e78 100644 --- a/src/toniarts/openkeeper/audio/plugins/decoder/MediaInformation.java +++ b/src/toniarts/openkeeper/audio/plugins/decoder/MediaInformation.java @@ -176,9 +176,7 @@ public void close() { */ public final void embed(MediaInformation information) { if (information != null) { - for (Map.Entry entry : information.entrySet()) { - put(entry.getKey(), entry.getValue()); - } + this.putAll(information); } } diff --git a/src/toniarts/openkeeper/audio/plugins/decoder/MpxReader.java b/src/toniarts/openkeeper/audio/plugins/decoder/MpxReader.java index c9496f2a2..15efe078e 100644 --- a/src/toniarts/openkeeper/audio/plugins/decoder/MpxReader.java +++ b/src/toniarts/openkeeper/audio/plugins/decoder/MpxReader.java @@ -704,7 +704,7 @@ private int getInt() { * @param b the input array * @return the integer value */ - protected final static int getShortInt(byte b[]) { + protected static int getShortInt(byte b[]) { return b[0] << 16 & 0xFF0000 | b[1] << 8 & 0xFF00 | b[2] & 0xFF; } diff --git a/src/toniarts/openkeeper/audio/plugins/decoder/Output.java b/src/toniarts/openkeeper/audio/plugins/decoder/Output.java index dd409a5b9..2283d41ea 100644 --- a/src/toniarts/openkeeper/audio/plugins/decoder/Output.java +++ b/src/toniarts/openkeeper/audio/plugins/decoder/Output.java @@ -65,13 +65,13 @@ abstract class Output extends Initializer { int counter; private float[] frameBufferZeroValues; private byte[] buffer, zeroBuffer; - private int obuffersize; - private int frameBufferAnalyzerSize; + private final int obuffersize; + private final int frameBufferAnalyzerSize; private int readPos, size; private int flushCount = 0; private boolean frequencyMode; private boolean switched; - private boolean bigEndian; + private final boolean bigEndian; /** * Constructs an instance of @@ -144,9 +144,9 @@ abstract class Output extends Initializer { private void setNumberOfOccupiedSubbands() { Frame i = (Frame) information; - int frequency = ((Integer) i.get(AudioInformation.I_SAMPLE_RATE)).intValue(); + int frequency = (Integer) i.get(AudioInformation.I_SAMPLE_RATE); - int deviceFrequencyLimit = ((Integer) info.get(AudioInformation.I_DEVICE_SAMPLE_RATE)).intValue(); + int deviceFrequencyLimit = (Integer) info.get(AudioInformation.I_DEVICE_SAMPLE_RATE); if (deviceFrequencyLimit >= frequency) { return; diff --git a/src/toniarts/openkeeper/audio/plugins/decoder/tag/TagContent.java b/src/toniarts/openkeeper/audio/plugins/decoder/tag/TagContent.java index 45a52d44d..adc6bf188 100644 --- a/src/toniarts/openkeeper/audio/plugins/decoder/tag/TagContent.java +++ b/src/toniarts/openkeeper/audio/plugins/decoder/tag/TagContent.java @@ -46,13 +46,13 @@ public class TagContent extends HashMap implements Information { public final static String BA_SUBTYPE_BINARY = "byte[] subtypeBinary", BA_CONTENT_BINARY = "byte[] contentBinary"; /** - * Constructs a new, empty - * TagContent with the specified initial capacity. + * Constructs a new + * TagContent with the specified contents. * - * @param initialCapacity the initial number of buckets + * @param m existing mappings */ - public TagContent(int initialCapacity) { - super(initialCapacity); + public TagContent(Map m) { + super(m); } /** @@ -236,12 +236,7 @@ public byte[] getBinaryContent() { */ @Override public Object clone() { - TagContent clone = new TagContent(size()); - - for (Map.Entry entry : this.entrySet()) { - clone.put(entry.getKey(), entry.getValue()); - } - return clone; + return new TagContent(this); } /** diff --git a/src/toniarts/openkeeper/audio/plugins/decoder/tag/id3v1/ID3v1.java b/src/toniarts/openkeeper/audio/plugins/decoder/tag/id3v1/ID3v1.java index 526ae3494..2bf6e2076 100644 --- a/src/toniarts/openkeeper/audio/plugins/decoder/tag/id3v1/ID3v1.java +++ b/src/toniarts/openkeeper/audio/plugins/decoder/tag/id3v1/ID3v1.java @@ -77,19 +77,19 @@ public ID3v1(InputStream stream) throws IOException { } private void buildKeyMapTable() { - if (!title.trim().equals("")) { + if (!title.trim().isEmpty()) { put(S_TITLE, title); } - if (!artist.trim().equals("")) { + if (!artist.trim().isEmpty()) { put(S_ARTIST, artist); } - if (!album.trim().equals("")) { + if (!album.trim().isEmpty()) { put(S_ALBUM, album); } - if (!year.trim().equals("")) { + if (!year.trim().isEmpty()) { put(S_YEAR, year); } - if (!comment.trim().equals("")) { + if (!comment.trim().isEmpty()) { put(S_COMMENT, comment); } if (genre >= 0 && genre < GENRE.length) { @@ -101,7 +101,7 @@ private void buildKeyMapTable() { t[0] = (byte) track; String buffer = new String(t); - if (!buffer.trim().equals("")) { + if (!buffer.trim().isEmpty()) { put(S_TRACK, buffer); } } diff --git a/src/toniarts/openkeeper/audio/plugins/decoder/tag/id3v2/Frame.java b/src/toniarts/openkeeper/audio/plugins/decoder/tag/id3v2/Frame.java index 7f8362ff3..4b684c6b8 100644 --- a/src/toniarts/openkeeper/audio/plugins/decoder/tag/id3v2/Frame.java +++ b/src/toniarts/openkeeper/audio/plugins/decoder/tag/id3v2/Frame.java @@ -53,10 +53,10 @@ final class Frame { private byte encryptionId; private int frameLength; private int skippedDataLength; - private int version; + private final int version; private int unflatedFrameLength; private int state; - private ID3v2 tag; + private final ID3v2 tag; Frame(InputStream stream, ID3v2 tag, int version) throws IOException, TagException { skippedDataLength = 0; diff --git a/src/toniarts/openkeeper/audio/plugins/decoder/tag/id3v2/Header.java b/src/toniarts/openkeeper/audio/plugins/decoder/tag/id3v2/Header.java index b3cd1ac7b..5c1a99414 100644 --- a/src/toniarts/openkeeper/audio/plugins/decoder/tag/id3v2/Header.java +++ b/src/toniarts/openkeeper/audio/plugins/decoder/tag/id3v2/Header.java @@ -33,20 +33,20 @@ final class Header { private final static int MAXIMUM_TAGSIZE = 256000000; - private boolean unsynchronizated; + private final boolean unsynchronizated; private boolean extendedHeader; private boolean experimental; private boolean footer; private boolean tagIsUpdate; private boolean tagRestrictions; - private int version; - private int tagSize; + private final int version; + private final int tagSize; private int extendedHeaderTagSize; private int paddingSize; private boolean protection; private long crc; private int skippedDataLength; - private ID3v2 tag; + private final ID3v2 tag; // Checks an ID3v2 header from an input stream. Header(InputStream stream, ID3v2 tag) throws TagException, IOException { diff --git a/src/toniarts/openkeeper/audio/plugins/decoder/tag/id3v2/ID3v2.java b/src/toniarts/openkeeper/audio/plugins/decoder/tag/id3v2/ID3v2.java index d36966dea..c5cc6fd52 100644 --- a/src/toniarts/openkeeper/audio/plugins/decoder/tag/id3v2/ID3v2.java +++ b/src/toniarts/openkeeper/audio/plugins/decoder/tag/id3v2/ID3v2.java @@ -84,7 +84,7 @@ public final class ID3v2 extends Tag { private int tagSize; private int version; private int skippedDataLength; - private MpxReader info; + private final MpxReader info; /** * Provides access to ID3v2 tag. diff --git a/src/toniarts/openkeeper/common/EntityInstance.java b/src/toniarts/openkeeper/common/EntityInstance.java index ed7340a2f..b627bc022 100644 --- a/src/toniarts/openkeeper/common/EntityInstance.java +++ b/src/toniarts/openkeeper/common/EntityInstance.java @@ -146,7 +146,7 @@ public String toString() { * construction?)
* The order is "natural", starting from origin */ - private final class PointComparator implements Comparator { + private static final class PointComparator implements Comparator { @Override public int compare(Point o1, Point o2) { diff --git a/src/toniarts/openkeeper/game/MapSelector.java b/src/toniarts/openkeeper/game/MapSelector.java index bab9d28c0..88ade9672 100644 --- a/src/toniarts/openkeeper/game/MapSelector.java +++ b/src/toniarts/openkeeper/game/MapSelector.java @@ -165,39 +165,23 @@ public GameMapContainer getMap(String map) { /** * Compares the maps by their name */ - private class MapComparator implements Comparator { + private static class MapComparator implements Comparator { @Override public int compare(GameMapContainer o1, GameMapContainer o2) { - return o1.getMapName().compareToIgnoreCase(o2.getMapName()); + return o1.mapName().compareToIgnoreCase(o2.mapName()); } } /** - * Small container class that holds the actual map data and the name - */ - public class GameMapContainer { - - private final KwdFile map; - private final String mapName; - - public GameMapContainer(KwdFile map, String mapName) { - this.map = map; - this.mapName = mapName; - } - - public KwdFile getMap() { - return map; - } - - public String getMapName() { - return mapName; - } + * Small container class that holds the actual map data and the name + */ + public record GameMapContainer(KwdFile map, String mapName) { @Override - public String toString() { - return mapName; + public String toString() { + return mapName; + } } - } } diff --git a/src/toniarts/openkeeper/game/controller/CreaturesController.java b/src/toniarts/openkeeper/game/controller/CreaturesController.java index 535f9e366..312b7a6d6 100644 --- a/src/toniarts/openkeeper/game/controller/CreaturesController.java +++ b/src/toniarts/openkeeper/game/controller/CreaturesController.java @@ -192,8 +192,7 @@ public EntityId spawnCreature(Thing.Creature creature, Vector2f position) { Thing.HeroParty.Objective objective = null; short objectiveTargetPlayerId = 0; int objectiveTargetActionPointId = 0; - if (creature instanceof Thing.GoodCreature) { - Thing.GoodCreature goodCreature = (Thing.GoodCreature) creature; + if (creature instanceof Thing.GoodCreature goodCreature) { triggerId = goodCreature.getTriggerId(); healthPercentage = goodCreature.getInitialHealth(); level = goodCreature.getLevel(); @@ -201,20 +200,17 @@ public EntityId spawnCreature(Thing.Creature creature, Vector2f position) { objective = goodCreature.getObjective(); objectiveTargetPlayerId = goodCreature.getObjectiveTargetPlayerId(); objectiveTargetActionPointId = goodCreature.getObjectiveTargetActionPointId(); - } else if (creature instanceof Thing.NeutralCreature) { - Thing.NeutralCreature neutralCreature = (Thing.NeutralCreature) creature; + } else if (creature instanceof Thing.NeutralCreature neutralCreature) { triggerId = neutralCreature.getTriggerId(); healthPercentage = neutralCreature.getInitialHealth(); level = neutralCreature.getLevel(); ownerId = Player.NEUTRAL_PLAYER_ID; - } else if (creature instanceof Thing.KeeperCreature) { - Thing.KeeperCreature keeperCreature = (Thing.KeeperCreature) creature; + } else if (creature instanceof Thing.KeeperCreature keeperCreature) { triggerId = keeperCreature.getTriggerId(); healthPercentage = keeperCreature.getInitialHealth(); level = keeperCreature.getLevel(); ownerId = keeperCreature.getPlayerId(); - } else if (creature instanceof Thing.DeadBody) { - Thing.DeadBody deadBody = (Thing.DeadBody) creature; + } else if (creature instanceof Thing.DeadBody deadBody) { ownerId = deadBody.getPlayerId(); } return loadCreature(creature.getCreatureId(), ownerId, level, position.getX(), position.getY(), 0f, healthPercentage, creature.getGoldHeld(), diff --git a/src/toniarts/openkeeper/game/controller/GameController.java b/src/toniarts/openkeeper/game/controller/GameController.java index c6492e150..adecb6954 100644 --- a/src/toniarts/openkeeper/game/controller/GameController.java +++ b/src/toniarts/openkeeper/game/controller/GameController.java @@ -94,9 +94,9 @@ public class GameController implements IGameLogicUpdatable, AutoCloseable, IGame public static final int LEVEL_TIMER_MAX_COUNT = 16; private static final int LEVEL_FLAG_MAX_COUNT = 128; - private String level; + private final String level; private KwdFile kwdFile; - private toniarts.openkeeper.game.data.Level levelObject; + private final toniarts.openkeeper.game.data.Level levelObject; private final SortedMap players = new TreeMap<>(); private final Map playerControllers = HashMap.newHashMap(6); diff --git a/src/toniarts/openkeeper/game/controller/player/PlayerDoorControl.java b/src/toniarts/openkeeper/game/controller/player/PlayerDoorControl.java index 993a267ce..7af7e6361 100644 --- a/src/toniarts/openkeeper/game/controller/player/PlayerDoorControl.java +++ b/src/toniarts/openkeeper/game/controller/player/PlayerDoorControl.java @@ -30,7 +30,7 @@ */ public class PlayerDoorControl extends AbstractResearchablePlayerControl /*implements RoomListener*/ { - private int doorCount = 0; + private final int doorCount = 0; public PlayerDoorControl(Keeper keeper, List doors) { super(keeper, keeper.getAvailableDoors(), doors); diff --git a/src/toniarts/openkeeper/game/controller/player/PlayerTrapControl.java b/src/toniarts/openkeeper/game/controller/player/PlayerTrapControl.java index 86fb3d129..a1f385c83 100644 --- a/src/toniarts/openkeeper/game/controller/player/PlayerTrapControl.java +++ b/src/toniarts/openkeeper/game/controller/player/PlayerTrapControl.java @@ -30,7 +30,7 @@ */ public class PlayerTrapControl extends AbstractResearchablePlayerControl /*implements RoomListener*/ { - private int trapCount = 0; + private final int trapCount = 0; public PlayerTrapControl(Keeper keeper, List traps) { super(keeper, keeper.getAvailableTraps(), traps); diff --git a/src/toniarts/openkeeper/game/controller/room/AbstractRoomController.java b/src/toniarts/openkeeper/game/controller/room/AbstractRoomController.java index 80dd468e9..b28b5b076 100644 --- a/src/toniarts/openkeeper/game/controller/room/AbstractRoomController.java +++ b/src/toniarts/openkeeper/game/controller/room/AbstractRoomController.java @@ -408,7 +408,7 @@ public Set getWallFurniture() { * @param roomId the room ID * @return the object ID for the room pillar or {@code null} if not found */ - protected final static Short getPillarObject(short roomId) { + protected static Short getPillarObject(short roomId) { // FIXME: Is this data available somewhere?? switch (roomId) { diff --git a/src/toniarts/openkeeper/game/logic/DungeonHeartConstruction.java b/src/toniarts/openkeeper/game/logic/DungeonHeartConstruction.java index fce951b17..caa02c6a7 100644 --- a/src/toniarts/openkeeper/game/logic/DungeonHeartConstruction.java +++ b/src/toniarts/openkeeper/game/logic/DungeonHeartConstruction.java @@ -37,7 +37,7 @@ public class DungeonHeartConstruction implements IGameLogicUpdatable { private static final float GRAVITY = 9.81f; - private float velocity = 7f; + private final float velocity = 7f; private final EntityData entityData; private final Set dungeonHeartPlugs; private final Map> dungeonHeartPlugPieces; @@ -164,7 +164,7 @@ private void showStepsAndArches(EntityId entityId) { } } - private class PlugPiece { + private static class PlugPiece { public PlugPiece() { } diff --git a/src/toniarts/openkeeper/game/map/MapRoom.java b/src/toniarts/openkeeper/game/map/MapRoom.java index 9cc134e5d..b42d9cea8 100644 --- a/src/toniarts/openkeeper/game/map/MapRoom.java +++ b/src/toniarts/openkeeper/game/map/MapRoom.java @@ -32,7 +32,7 @@ public class MapRoom implements Savable { private int health; private int maxHealth; - private boolean destroyed = false; + private final boolean destroyed = false; private short ownerId; private short roomId; private List tiles; diff --git a/src/toniarts/openkeeper/game/network/ClientListener.java b/src/toniarts/openkeeper/game/network/ClientListener.java index ff36c41db..9e07b7000 100644 --- a/src/toniarts/openkeeper/game/network/ClientListener.java +++ b/src/toniarts/openkeeper/game/network/ClientListener.java @@ -28,7 +28,7 @@ @Deprecated public class ClientListener implements MessageListener { - private NetworkClient client; + private final NetworkClient client; public ClientListener(NetworkClient client) { this.client = client; diff --git a/src/toniarts/openkeeper/game/network/LocalServerSearch.java b/src/toniarts/openkeeper/game/network/LocalServerSearch.java index 3d1ea8558..515c0ff80 100644 --- a/src/toniarts/openkeeper/game/network/LocalServerSearch.java +++ b/src/toniarts/openkeeper/game/network/LocalServerSearch.java @@ -43,7 +43,7 @@ public abstract class LocalServerSearch { private int port = 7575; private final ServerQuery[] threads; private final LinkedList queue; - private List servers = new ArrayList(); + private final List servers = new ArrayList(); public LocalServerSearch(int port) { this.port = port; diff --git a/src/toniarts/openkeeper/game/network/ServerListener.java b/src/toniarts/openkeeper/game/network/ServerListener.java index 3dc09c28b..0452856c5 100644 --- a/src/toniarts/openkeeper/game/network/ServerListener.java +++ b/src/toniarts/openkeeper/game/network/ServerListener.java @@ -43,14 +43,12 @@ public void messageReceived(HostedConnection source, Message message) { // source.getServer().broadcast(message); // // } else - if (message instanceof MessageTime) { + if (message instanceof MessageTime msg) { // Send the latest game time back - MessageTime msg = (MessageTime) message; long time = host.getGameTime(); source.send(msg.updateGameTime(time).setReliable(true)); - } else if (message instanceof MessagePlayerInfo) { - MessagePlayerInfo msg = (MessagePlayerInfo) message; + } else if (message instanceof MessagePlayerInfo msg) { // Send a message back to the player with their entity ID source.send(new MessagePlayerInfo(msg.getName(), msg.getMemory()).setReliable(true)); diff --git a/src/toniarts/openkeeper/game/network/ServerQuery.java b/src/toniarts/openkeeper/game/network/ServerQuery.java index 7db323eeb..998f415ef 100644 --- a/src/toniarts/openkeeper/game/network/ServerQuery.java +++ b/src/toniarts/openkeeper/game/network/ServerQuery.java @@ -33,7 +33,7 @@ public abstract class ServerQuery extends Thread { private static final Logger logger = System.getLogger(ServerQuery.class.getName()); - private LinkedList queue; + private final LinkedList queue; public ServerQuery(LinkedList queue) { this.queue = queue; diff --git a/src/toniarts/openkeeper/game/network/chat/ChatHostedService.java b/src/toniarts/openkeeper/game/network/chat/ChatHostedService.java index 8a3f43c28..1e57e4f1c 100644 --- a/src/toniarts/openkeeper/game/network/chat/ChatHostedService.java +++ b/src/toniarts/openkeeper/game/network/chat/ChatHostedService.java @@ -163,9 +163,9 @@ protected void postMessage(ChatSessionImpl from, String message) { */ private class ChatSessionImpl implements ChatSession, ChatSessionListener { - private HostedConnection conn; + private final HostedConnection conn; private ChatSessionListener callback; - private String name; + private final String name; public ChatSessionImpl(HostedConnection conn, String name) { this.conn = conn; diff --git a/src/toniarts/openkeeper/game/network/game/GameClientService.java b/src/toniarts/openkeeper/game/network/game/GameClientService.java index e9e70dde5..6d3f53e47 100644 --- a/src/toniarts/openkeeper/game/network/game/GameClientService.java +++ b/src/toniarts/openkeeper/game/network/game/GameClientService.java @@ -214,8 +214,7 @@ public ClientMessageListener() { @Override public void messageReceived(Client source, Message message) { - if (message instanceof GameLoadProgressData) { - GameLoadProgressData data = (GameLoadProgressData) message; + if (message instanceof GameLoadProgressData data) { logger.log(Level.TRACE, "onLoadStatusUpdate({0},{1})", new Object[]{data.getProgress(), data.getKeeperId()}); for (GameSessionListener l : listeners.getArray()) { l.onLoadStatusUpdate(data.getProgress(), data.getKeeperId()); diff --git a/src/toniarts/openkeeper/game/network/game/GameHostedService.java b/src/toniarts/openkeeper/game/network/game/GameHostedService.java index 8332af8a8..e3398819f 100644 --- a/src/toniarts/openkeeper/game/network/game/GameHostedService.java +++ b/src/toniarts/openkeeper/game/network/game/GameHostedService.java @@ -385,8 +385,7 @@ public ServerMessageListener() { public void messageReceived(HostedConnection source, Message message) { ClientInfo clientInfo = playersByConnection.get(source); - if (message instanceof GameLoadProgressData) { - GameLoadProgressData data = (GameLoadProgressData) message; + if (message instanceof GameLoadProgressData data) { logger.log(Level.TRACE, "onLoadStatus({0},{1})", new Object[]{data.getProgress(), clientInfo.getKeeper().getId()}); clientInfo.setLoadingProgress(data.getProgress()); diff --git a/src/toniarts/openkeeper/game/network/lobby/LobbyHostedService.java b/src/toniarts/openkeeper/game/network/lobby/LobbyHostedService.java index 4459aeb47..0461ad4ea 100644 --- a/src/toniarts/openkeeper/game/network/lobby/LobbyHostedService.java +++ b/src/toniarts/openkeeper/game/network/lobby/LobbyHostedService.java @@ -322,7 +322,7 @@ private List getPlayers() { return keepers; } - private abstract class AbstractLobbySessionImpl implements LobbySession, LobbySessionListener { + private static abstract class AbstractLobbySessionImpl implements LobbySession, LobbySessionListener { private final ClientInfo clientInfo; diff --git a/src/toniarts/openkeeper/game/state/GameClientState.java b/src/toniarts/openkeeper/game/state/GameClientState.java index 3b1fc59a9..b078cf6bf 100644 --- a/src/toniarts/openkeeper/game/state/GameClientState.java +++ b/src/toniarts/openkeeper/game/state/GameClientState.java @@ -63,7 +63,7 @@ public class GameClientState extends AbstractPauseAwareState { private static final Logger logger = System.getLogger(GameClientState.class.getName()); - private Main app; + private final Main app; private AppStateManager stateManager; diff --git a/src/toniarts/openkeeper/game/state/GameState.java b/src/toniarts/openkeeper/game/state/GameState.java index 460c03d7d..e6f02f351 100644 --- a/src/toniarts/openkeeper/game/state/GameState.java +++ b/src/toniarts/openkeeper/game/state/GameState.java @@ -81,7 +81,7 @@ public class GameState extends AbstractPauseAwareState implements IGameLogicUpda private final toniarts.openkeeper.game.data.Level levelObject; private GameLogicManager gameLogicThread; - private TriggerControl triggerControl = null; + private final TriggerControl triggerControl = null; private CreatureTriggerLogicController creatureTriggerState; private ObjectTriggerLogicController objectTriggerState; private DoorTriggerLogicController doorTriggerState; diff --git a/src/toniarts/openkeeper/game/state/MainMenuScreenController.java b/src/toniarts/openkeeper/game/state/MainMenuScreenController.java index 24ad8b50d..8c9b0383c 100644 --- a/src/toniarts/openkeeper/game/state/MainMenuScreenController.java +++ b/src/toniarts/openkeeper/game/state/MainMenuScreenController.java @@ -178,7 +178,7 @@ public void multiplayerCreate() { TextField port = screen.findNiftyControl("gamePort", TextField.class); state.multiplayerCreate(game.getRealText(), - Integer.valueOf(port.getRealText()), + Integer.parseInt(port.getRealText()), player.getRealText()); // Overlay @@ -413,7 +413,7 @@ public void onStartScreen() { // Ask for players and map refreshPlayerList(lobbyState.getLobbySession().getPlayers()); - populateSelectedMap(state.mapSelector.getMap(lobbyState.getLobbySession().getMap()).getMap()); + populateSelectedMap(state.mapSelector.getMap(lobbyState.getLobbySession().getMap()).map()); Label title = screen.findNiftyControl("multiplayerTitle", Label.class); if (title != null) { @@ -609,7 +609,7 @@ public void onListBoxSelectionChanged(final String id, final ListBoxSelectionCha return; } - KwdFile map = state.mapSelector.getMaps().get(event.getSelectionIndices().get(0)).getMap(); + KwdFile map = state.mapSelector.getMaps().get(event.getSelectionIndices().get(0)).map(); if (state.mapSelector.isMPD()) { // on mpd we show the briefing state.selectedLevel = new CustomMPDLevel(map); @@ -808,9 +808,9 @@ private void setControlSettingsToGUI() { for (Settings.Setting setting : settings) { String keys = ""; if (setting.getSpecialKey() != null) { - keys = (kNames.getName(setting.getSpecialKey()) + " + ").replace("Left ", "").replace("Right ", ""); + keys = (KeyNames.getName(setting.getSpecialKey()) + " + ").replace("Left ", "").replace("Right ", ""); } - keys += kNames.getName((int) setting.getDefaultValue()).replace("Left ", "").replace("Right ", ""); + keys += KeyNames.getName((int) setting.getDefaultValue()).replace("Left ", "").replace("Right ", ""); TableRow row = new TableRow(i++, String.format("${menu.%s}", setting.getTranslationKey()), keys); listBox.addItem(row); } @@ -857,8 +857,8 @@ private void populateMapSelection(final boolean selectMap) { listBox.clear(); for (MapSelector.GameMapContainer mapContainer : state.mapSelector.getMaps()) { - String name = mapContainer.getMapName(); - KwdFile kwd = mapContainer.getMap(); + String name = mapContainer.mapName(); + KwdFile kwd = mapContainer.map(); if (kwd.getGameLevel().getLvlFlags().contains(GameLevel.LevFlag.IS_MY_PET_DUNGEON_LEVEL)) { // the resource tables in all the other levels are completely wrong, so we just use it for custom mpd maps name = kwd.getGameLevel().getLevelName().isEmpty() ? kwd.getGameLevel().getName() : kwd.getGameLevel().getLevelName(); @@ -867,7 +867,7 @@ private void populateMapSelection(final boolean selectMap) { String.valueOf(kwd.getGameLevel().getPlayerCount()), String.format("%s x %s", kwd.getMap().getWidth(), kwd.getMap().getHeight()))); - if (selectMap && kwd.equals(state.mapSelector.getMap().getMap())) { + if (selectMap && kwd.equals(state.mapSelector.getMap().map())) { listBox.selectItemByIndex(i); } i++; @@ -885,7 +885,7 @@ public void onPlayerListChanged(List players) { @Override public void onMapChanged(String mapName) { - populateSelectedMap(state.mapSelector.getMap(mapName).getMap()); + populateSelectedMap(state.mapSelector.getMap(mapName).map()); } @Override diff --git a/src/toniarts/openkeeper/game/state/MainMenuState.java b/src/toniarts/openkeeper/game/state/MainMenuState.java index 1f7a4c298..2d9f3515f 100644 --- a/src/toniarts/openkeeper/game/state/MainMenuState.java +++ b/src/toniarts/openkeeper/game/state/MainMenuState.java @@ -342,7 +342,7 @@ protected void onLoggedOn(boolean loggedIn) { public void multiplayerConnect(String hostAddress, String player) { String[] address = hostAddress.split(":"); String host = address[0]; - int port = (address.length == 2) ? Integer.valueOf(address[1]) : Main.getUserSettings().getInteger(Setting.MULTIPLAYER_LAST_PORT); + int port = (address.length == 2) ? Integer.parseInt(address[1]) : Main.getUserSettings().getInteger(Setting.MULTIPLAYER_LAST_PORT); // Connect, connection is lazy ConnectionState connectionState = new ConnectionState(host, port, player) { @@ -611,7 +611,7 @@ public void showError(String title, String message, Throwable e, boolean fatal) /** * Main menu version of the player entity view state */ - private class MainMenuEntityViewState extends PlayerEntityViewState { + private static class MainMenuEntityViewState extends PlayerEntityViewState { public MainMenuEntityViewState(KwdFile kwdFile, AssetManager assetManager, EntityData entityData, short playerId, TextParser textParser, Node rootNode) { super(kwdFile, assetManager, entityData, playerId, textParser, rootNode); @@ -621,7 +621,7 @@ public MainMenuEntityViewState(KwdFile kwdFile, AssetManager assetManager, Entit } - private class MainMenuPlayerService implements PlayerService { + private static class MainMenuPlayerService implements PlayerService { @Override public void setWidescreen(boolean enable, short playerId) { diff --git a/src/toniarts/openkeeper/game/state/PlayerScreenController.java b/src/toniarts/openkeeper/game/state/PlayerScreenController.java index 64ae43480..022db099a 100644 --- a/src/toniarts/openkeeper/game/state/PlayerScreenController.java +++ b/src/toniarts/openkeeper/game/state/PlayerScreenController.java @@ -188,7 +188,7 @@ public void select(String iState, String id) { if (type == Type.SELL) { this.playButtonSound(GlobalCategory.GUI_SELL); } - state.interactionState.setInteractionState(type, Integer.valueOf(id)); + state.interactionState.setInteractionState(type, Integer.parseInt(id)); } @Override @@ -1158,7 +1158,7 @@ public ControlBuilder createIcon(final int id, final String type, final String g @Override public void playSound(String category, String id) { - SoundHandle soundHandler = NiftyUtils.getSoundHandler(nifty, category, Integer.valueOf(id)); + SoundHandle soundHandler = NiftyUtils.getSoundHandler(nifty, category, Integer.parseInt(id)); if (soundHandler != null) { soundHandler.play(); } @@ -1501,7 +1501,7 @@ private boolean isCreatureState(Entity entity, CreatureUIState state) { } - private class GameMenu { + private static class GameMenu { protected String title; protected String action; diff --git a/src/toniarts/openkeeper/game/state/SoundState.java b/src/toniarts/openkeeper/game/state/SoundState.java index 79f5bce55..2c49330ba 100644 --- a/src/toniarts/openkeeper/game/state/SoundState.java +++ b/src/toniarts/openkeeper/game/state/SoundState.java @@ -296,19 +296,9 @@ public synchronized String getNext() { } /** - * Simple wrapper for a speech to play - */ - private static class Speech { - - private final int speechId; - private final String file; - private final ISpeechListener listener; - - public Speech(int speechId, String file, ISpeechListener listener) { - this.speechId = speechId; - this.file = file; - this.listener = listener; - } + * Simple wrapper for a speech to play + */ + private record Speech(int speechId, String file, ISpeechListener listener) { } diff --git a/src/toniarts/openkeeper/game/state/lobby/LobbyState.java b/src/toniarts/openkeeper/game/state/lobby/LobbyState.java index 1e68d274f..9728d3998 100644 --- a/src/toniarts/openkeeper/game/state/lobby/LobbyState.java +++ b/src/toniarts/openkeeper/game/state/lobby/LobbyState.java @@ -68,7 +68,7 @@ public LobbyState(boolean online, String gameName, LobbyService lobbyService, Lo // We as the host should set the initial map if (lobbyService != null) { - lobbyService.setMap(mapSelector.getMap().getMapName(), mapSelector.getMap().getMap().getGameLevel().getPlayerCount()); + lobbyService.setMap(mapSelector.getMap().mapName(), mapSelector.getMap().map().getGameLevel().getPlayerCount()); } } @@ -118,12 +118,12 @@ private boolean isRenderThread() { public void setRandomMap() { mapSelector.random(); - lobbyService.setMap(mapSelector.getMap().getMapName(), mapSelector.getMap().getMap().getGameLevel().getPlayerCount()); + lobbyService.setMap(mapSelector.getMap().mapName(), mapSelector.getMap().map().getGameLevel().getPlayerCount()); } public void setMap(int selectedMapIndex) { mapSelector.selectMap(selectedMapIndex); - lobbyService.setMap(mapSelector.getMap().getMapName(), mapSelector.getMap().getMap().getGameLevel().getPlayerCount()); + lobbyService.setMap(mapSelector.getMap().mapName(), mapSelector.getMap().map().getGameLevel().getPlayerCount()); } private void startGame(List players) { @@ -146,7 +146,7 @@ private void startGame(List players) { } } - KwdFile kwdFile = mapSelector.getMap().getMap(); // This might get read twice on the hosting machine + KwdFile kwdFile = mapSelector.getMap().map(); // This might get read twice on the hosting machine if (isOnline() && !fallback) { gameSessionService = stateManager.getState(ConnectionState.class).getGameSessionServerService(); gameClientService = stateManager.getState(ConnectionState.class).getGameClientService(); @@ -183,57 +183,50 @@ private void startGame(List players) { } /** - * Small class to filter all the notifications to the render thread - */ - private static class SafeLobbySessionListener implements LobbySessionListener { - - private final LobbyState lobbyState; - private final LobbySessionListener listener; - - public SafeLobbySessionListener(LobbyState lobbyState, LobbySessionListener listener) { - this.lobbyState = lobbyState; - this.listener = listener; - } + * Small class to filter all the notifications to the render thread + */ + private record SafeLobbySessionListener(LobbyState lobbyState, + LobbySessionListener listener) implements LobbySessionListener { @Override - public void onPlayerListChanged(List players) { - runOnRenderThread(() -> { - listener.onPlayerListChanged(players); - }); - - // Start game if we are all ready - if (lobbyState.isHosting()) { - for (ClientInfo clientInfo : players) { - if (!clientInfo.isReady()) { - return; + public void onPlayerListChanged(List players) { + runOnRenderThread(() -> { + listener.onPlayerListChanged(players); + }); + + // Start game if we are all ready + if (lobbyState.isHosting()) { + for (ClientInfo clientInfo : players) { + if (!clientInfo.isReady()) { + return; + } } + lobbyState.getLobbyService().startGame(); } - lobbyState.getLobbyService().startGame(); } - } - @Override - public void onMapChanged(String mapName) { - runOnRenderThread(() -> { - listener.onMapChanged(mapName); - }); - } + @Override + public void onMapChanged(String mapName) { + runOnRenderThread(() -> { + listener.onMapChanged(mapName); + }); + } - @Override - public void onGameStarted(String mapName, List players) { - runOnRenderThread(() -> { - listener.onGameStarted(mapName, players); - }); - lobbyState.startGame(players); - } + @Override + public void onGameStarted(String mapName, List players) { + runOnRenderThread(() -> { + listener.onGameStarted(mapName, players); + }); + lobbyState.startGame(players); + } - private void runOnRenderThread(Runnable runnable) { - if (lobbyState.isRenderThread()) { - runnable.run(); - } else { - lobbyState.app.enqueue(runnable); + private void runOnRenderThread(Runnable runnable) { + if (lobbyState.isRenderThread()) { + runnable.run(); + } else { + lobbyState.app.enqueue(runnable); + } } } - } } diff --git a/src/toniarts/openkeeper/game/state/session/LocalGameSession.java b/src/toniarts/openkeeper/game/state/session/LocalGameSession.java index 912862d6b..442a25d07 100644 --- a/src/toniarts/openkeeper/game/state/session/LocalGameSession.java +++ b/src/toniarts/openkeeper/game/state/session/LocalGameSession.java @@ -104,11 +104,11 @@ private static void createLocalGame(KwdFile kwdFile, AppStateManager stateManage clientInfo.setReady(true); // The client - GameClientState gameClientState = new GameClientState(kwdFile, PLAYER_ID, Arrays.asList(clientInfo), gameSession, app); + GameClientState gameClientState = new GameClientState(kwdFile, PLAYER_ID, List.of(clientInfo), gameSession, app); stateManager.attach(gameClientState); // The game server - GameServerState gameServerState = new GameServerState(kwdFile, campaign ? null : Arrays.asList(keeper), campaign, gameSession); + GameServerState gameServerState = new GameServerState(kwdFile, campaign ? null : List.of(keeper), campaign, gameSession); stateManager.attach(gameServerState); } diff --git a/src/toniarts/openkeeper/game/task/TaskManager.java b/src/toniarts/openkeeper/game/task/TaskManager.java index 43d3d1135..66f1297a0 100644 --- a/src/toniarts/openkeeper/game/task/TaskManager.java +++ b/src/toniarts/openkeeper/game/task/TaskManager.java @@ -432,8 +432,7 @@ private void scanTerrainTasks(final Point tile, final boolean checkNeighbours, f Iterator iter = entry.getValue().iterator(); while (iter.hasNext()) { Task task = iter.next(); - if (task instanceof AbstractTileTask) { - AbstractTileTask tileTask = (AbstractTileTask) task; + if (task instanceof AbstractTileTask tileTask) { if (tileTask.isRemovable()) { iter.remove(); if (tileTask.getAssigneeCount() == 0) { diff --git a/src/toniarts/openkeeper/game/task/objective/ObjectiveTask.java b/src/toniarts/openkeeper/game/task/objective/ObjectiveTask.java index 2839d9153..1271da753 100644 --- a/src/toniarts/openkeeper/game/task/objective/ObjectiveTask.java +++ b/src/toniarts/openkeeper/game/task/objective/ObjectiveTask.java @@ -44,8 +44,7 @@ default void addSubTask(ObjectiveTask task) { default Task getNextTask() { Task nextTask = getTaskQueue().peekFirst(); if (nextTask != null) { - if (nextTask instanceof ObjectiveTask) { - ObjectiveTask nextObjectiveTask = (ObjectiveTask) nextTask; + if (nextTask instanceof ObjectiveTask nextObjectiveTask) { nextTask = nextObjectiveTask.getNextTask(); if (nextTask == null) { getTaskQueue().removeFirst(); @@ -67,8 +66,7 @@ default Task getNextTask() { default Task getCurrentTask() { Task nextTask = getTaskQueue().peekFirst(); if (nextTask != null) { - if (nextTask instanceof ObjectiveTask) { - ObjectiveTask nextObjectiveTask = (ObjectiveTask) nextTask; + if (nextTask instanceof ObjectiveTask nextObjectiveTask) { nextObjectiveTask.getCurrentTask(); } return nextTask; diff --git a/src/toniarts/openkeeper/game/trigger/TriggerControl.java b/src/toniarts/openkeeper/game/trigger/TriggerControl.java index f8fcaf326..2a11e0e15 100644 --- a/src/toniarts/openkeeper/game/trigger/TriggerControl.java +++ b/src/toniarts/openkeeper/game/trigger/TriggerControl.java @@ -89,23 +89,25 @@ protected void updateControl(float tpf) { for (int i = trigger.getLastTriggerIndex() + 1; i < trigger.getQuantity(); i++) { TriggerData value = trigger.getChild(i); - if (value == null) { - logger.log(Level.WARNING, "Trigger is null!"); - - } else if (value instanceof TriggerGenericData) { - - if (next == null && isActive((TriggerGenericData) value)) { - trigger.setLastTrigger((TriggerGenericData) value); - next = (TriggerGenericData) value; + switch (value) { + case null -> logger.log(Level.WARNING, "Trigger is null!"); + case TriggerGenericData triggerGenericData -> { + + if (next == null && isActive(triggerGenericData)) { + trigger.setLastTrigger((TriggerGenericData) value); + next = (TriggerGenericData) value; + } } - - } else if (value instanceof TriggerActionData) { - - //System.out.println(String.format("%s: %d %s", this.getClass().getSimpleName(), trigger.getId(), trigger.getType())); - doAction((TriggerActionData) value); - if (!trigger.isRepeateable()) { - trigger.detachChild(value); - i--; + case TriggerActionData triggerActionData -> { + + //System.out.println(String.format("%s: %d %s", this.getClass().getSimpleName(), trigger.getId(), trigger.getType())); + doAction(triggerActionData); + if (!trigger.isRepeateable()) { + trigger.detachChild(value); + i--; + } + } + default -> { } } } diff --git a/src/toniarts/openkeeper/gui/nifty/chat/ChatBoxViewConverter.java b/src/toniarts/openkeeper/gui/nifty/chat/ChatBoxViewConverter.java index 5e56f499c..0fcbb15a5 100644 --- a/src/toniarts/openkeeper/gui/nifty/chat/ChatBoxViewConverter.java +++ b/src/toniarts/openkeeper/gui/nifty/chat/ChatBoxViewConverter.java @@ -53,11 +53,11 @@ public final void display(final Element listBoxItem, final ChatEntry item) { logger.log(Level.ERROR, "Text entry of the chat line does not contain the required text renderer."); return; } - textRenderer.setText(item.getLabel()); + textRenderer.setText(item.label()); // If keeper ID is set, color the line - if (item.getKeeperId() != 0) { - java.awt.Color c = MapThumbnailGenerator.getPlayerColor(item.getKeeperId()); + if (item.keeperId() != 0) { + java.awt.Color c = MapThumbnailGenerator.getPlayerColor(item.keeperId()); textRenderer.setColor(new Color(c.getRed() / 255.0f, c.getGreen() / 255.0f, c.getBlue() / 255.0f, 1f)); } else { textRenderer.setColor(new Color("#bbbcbb")); @@ -76,7 +76,7 @@ public final int getWidth(final Element listBoxItem, final ChatEntry item) { logger.log(Level.ERROR, "Text entry of the chat line does not contain the required text renderer."); return 0; } - return ((textRenderer.getFont() == null) ? 0 : textRenderer.getFont().getWidth(item.getLabel())); + return ((textRenderer.getFont() == null) ? 0 : textRenderer.getFont().getWidth(item.label())); } } diff --git a/src/toniarts/openkeeper/gui/nifty/chat/ChatEntry.java b/src/toniarts/openkeeper/gui/nifty/chat/ChatEntry.java index e581e755a..cd0aad2b5 100644 --- a/src/toniarts/openkeeper/gui/nifty/chat/ChatEntry.java +++ b/src/toniarts/openkeeper/gui/nifty/chat/ChatEntry.java @@ -21,28 +21,6 @@ * * @author Toni Helenius */ -public class ChatEntry { - - private final String label; - private final int playerId; - private final short keeperId; - - public ChatEntry(String label, int playerId, short keeperId) { - this.label = label; - this.playerId = playerId; - this.keeperId = keeperId; - } - - public String getLabel() { - return label; - } - - public int getPlayerId() { - return playerId; - } - - public short getKeeperId() { - return keeperId; - } +public record ChatEntry(String label, int playerId, short keeperId) { } diff --git a/src/toniarts/openkeeper/gui/nifty/jme/ResearchEffectControl.java b/src/toniarts/openkeeper/gui/nifty/jme/ResearchEffectControl.java index 7a57b1c90..abbd77ead 100644 --- a/src/toniarts/openkeeper/gui/nifty/jme/ResearchEffectControl.java +++ b/src/toniarts/openkeeper/gui/nifty/jme/ResearchEffectControl.java @@ -46,11 +46,11 @@ public void bind(Nifty nifty, Screen screen, Element element, Parameters paramet super.bind(nifty, screen, element, parameter); String colorString = parameter.get("color"); - if (colorString != null && !"".equals(colorString)) { + if (colorString != null && !colorString.isEmpty()) { color = new Color(Integer.parseInt(colorString), true); } image = parameter.getWithDefault("image", ""); - if ("".equals(image)) { + if (image.isEmpty()) { image = null; } diff --git a/src/toniarts/openkeeper/gui/nifty/table/TableColumn.java b/src/toniarts/openkeeper/gui/nifty/table/TableColumn.java index 4752cbbaf..9593ce01e 100644 --- a/src/toniarts/openkeeper/gui/nifty/table/TableColumn.java +++ b/src/toniarts/openkeeper/gui/nifty/table/TableColumn.java @@ -21,41 +21,14 @@ /** * Table column model * + * @param type Either string or boolean * @author Toni Helenius */ -public class TableColumn { - - private final String header; - private final int width; - private final Class type; // Either string or boolean - private final Color color; - - public TableColumn(String header, int width, Class type, Color color) { - this.header = header; - this.width = width; - this.type = type; - this.color = color; - } - - public String getHeader() { - return header; - } - - public Color getColor() { - return color; - } - - public Class getType() { - return type; - } - - public int getWidth() { - return width; - } +public record TableColumn(String header, int width, Class type, Color color) { protected static TableColumn parse(String property) throws ClassNotFoundException { String[] params = property.split(";"); - return new TableColumn(params[0], Integer.valueOf(params[1]), Class.forName(params[2]), new Color(params[3])); + return new TableColumn(params[0], Integer.parseInt(params[1]), Class.forName(params[2]), new Color(params[3])); } @Override diff --git a/src/toniarts/openkeeper/gui/nifty/table/TableControl.java b/src/toniarts/openkeeper/gui/nifty/table/TableControl.java index a422f322a..71da53e70 100644 --- a/src/toniarts/openkeeper/gui/nifty/table/TableControl.java +++ b/src/toniarts/openkeeper/gui/nifty/table/TableControl.java @@ -87,7 +87,7 @@ public void bind(Nifty nifty, Screen screen, Element elmnt, Parameters prmtrs) { private void createColumn(final int i, final TableColumn col) { panel(new PanelBuilder("#headerColPanel-" + i) { { - width(col.getWidth() + "%"); + width(col.width() + "%"); height("100%"); textVAlignCenter(); childLayoutCenter(); @@ -95,8 +95,8 @@ private void createColumn(final int i, final TableColumn col) { marginRight("2px"); // The contents - if (col.getType() == String.class) { - control(new LabelBuilder("#headerCol-" + i, col.getHeader()) { + if (col.type() == String.class) { + control(new LabelBuilder("#headerCol-" + i, col.header()) { { style("menuTextSmall"); } @@ -172,15 +172,15 @@ private void createColumn(final int i, final TableColumn col) { private void createColumn(final int i, final TableColumn col) { panel(new PanelBuilder("#colPanel-" + i) { { - width(col.getWidth() + "%"); + width(col.width() + "%"); height("100%"); textVAlignCenter(); childLayoutCenter(); - backgroundColor(col.getColor()); + backgroundColor(col.color()); marginRight("2px"); // The contents - if (col.getType() == String.class) { + if (col.type() == String.class) { text(new TextBuilder("#col-" + i) { { style("menuTextSmall"); diff --git a/src/toniarts/openkeeper/tools/convert/AssetsConverter.java b/src/toniarts/openkeeper/tools/convert/AssetsConverter.java index 392637a33..f0407e8a8 100644 --- a/src/toniarts/openkeeper/tools/convert/AssetsConverter.java +++ b/src/toniarts/openkeeper/tools/convert/AssetsConverter.java @@ -84,9 +84,9 @@ public ConvertProcess[] getDependencies() { public String getSettingName() { String[] names = this.toString().toLowerCase().split(" "); - String name = ""; + StringBuilder name = new StringBuilder(); for (String item : names) { - name += Character.toUpperCase(item.charAt(0)) + item.substring(1); + name.append(Character.toUpperCase(item.charAt(0))).append(item.substring(1)); } return name + "Version"; } diff --git a/src/toniarts/openkeeper/tools/convert/BitReader.java b/src/toniarts/openkeeper/tools/convert/BitReader.java index 7d05db8d9..f492b3d73 100644 --- a/src/toniarts/openkeeper/tools/convert/BitReader.java +++ b/src/toniarts/openkeeper/tools/convert/BitReader.java @@ -16,7 +16,7 @@ public class BitReader { protected int deficit; protected int curInt; - private ByteBuffer bb; + private final ByteBuffer bb; private int initPos; public BitReader(ByteBuffer bb) { diff --git a/src/toniarts/openkeeper/tools/convert/ConversionUtils.java b/src/toniarts/openkeeper/tools/convert/ConversionUtils.java index 1732d328a..fd5fe877d 100644 --- a/src/toniarts/openkeeper/tools/convert/ConversionUtils.java +++ b/src/toniarts/openkeeper/tools/convert/ConversionUtils.java @@ -214,7 +214,7 @@ public static & IFlagEnum> EnumSet parseFlagValue(long fla if (val > leftOver) { break; } else if ((val & leftOver) == val) { - if (sb.length() > 0) { + if (!sb.isEmpty()) { sb.append(", "); } sb.append(val); diff --git a/src/toniarts/openkeeper/tools/convert/FontCreator.java b/src/toniarts/openkeeper/tools/convert/FontCreator.java index 54b5e6cd2..8507c9aba 100644 --- a/src/toniarts/openkeeper/tools/convert/FontCreator.java +++ b/src/toniarts/openkeeper/tools/convert/FontCreator.java @@ -42,37 +42,14 @@ public class FontCreator { private final String description; private final List fontImages; - // TODO: Perfect candidate for being a record :) - public class FontImage { - - private final String fileName; - private final BufferedImage fontImage; - private final int page; - - public FontImage(String fileName, BufferedImage fontImage, int page) { - this.fileName = fileName; - this.fontImage = fontImage; - this.page = page; - } - - public String getFileName() { - return fileName; - } - - public BufferedImage getFontImage() { - return fontImage; - } - - public int getPage() { - return page; - } + public record FontImage(String fileName, BufferedImage fontImage, int page) { @Override - public String toString() { - return "FontImage{" + "fileName=" + fileName + ", page=" + page + '}'; - } + public String toString() { + return "FontImage{" + "fileName=" + fileName + ", page=" + page + '}'; + } - } + } public FontCreator(Bf4File fontFile, int fontSize, String fileName) { fontImages = new ArrayList<>(); diff --git a/src/toniarts/openkeeper/tools/convert/KmfModelLoader.java b/src/toniarts/openkeeper/tools/convert/KmfModelLoader.java index cd946224b..9024d54f7 100644 --- a/src/toniarts/openkeeper/tools/convert/KmfModelLoader.java +++ b/src/toniarts/openkeeper/tools/convert/KmfModelLoader.java @@ -787,7 +787,7 @@ public int compare(String o1, String o2) { * A frame info identifies an vertex transition, it has the start and the * end pose frame indexes (key frames) which will identify it */ - private final class FrameInfo implements Comparable { + private final static class FrameInfo implements Comparable { private final int previousPoseFrame; private final int nextPoseFrame; diff --git a/src/toniarts/openkeeper/tools/convert/bf4/Bf4File.java b/src/toniarts/openkeeper/tools/convert/bf4/Bf4File.java index 9684be018..72d953661 100644 --- a/src/toniarts/openkeeper/tools/convert/bf4/Bf4File.java +++ b/src/toniarts/openkeeper/tools/convert/bf4/Bf4File.java @@ -350,7 +350,7 @@ public int getCount() { /** * Small class to write in 4-bits */ - private class FourBitWriter { + private static class FourBitWriter { private final byte[] data; private int position = 0; diff --git a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertFonts.java b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertFonts.java index 44044b783..19306da8f 100644 --- a/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertFonts.java +++ b/src/toniarts/openkeeper/tools/convert/conversion/task/ConvertFonts.java @@ -164,10 +164,10 @@ private void handleFontFile(Pattern pattern, Path file, final String destination // Convert & save the font files FontCreator fc = new FontCreator(new Bf4File(file), fontSize, imageFileName); for (FontImage fontImage : fc.getFontImages()) { - Path destPath = Paths.get(destination, fontImage.getFileName()); + Path destPath = Paths.get(destination, fontImage.fileName()); try (OutputStream os = Files.newOutputStream(destPath, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING); BufferedOutputStream bos = new BufferedOutputStream(os)) { - ImageIO.write(fontImage.getFontImage(), "png", bos); + ImageIO.write(fontImage.fontImage(), "png", bos); } } try (BufferedWriter bw = Files.newBufferedWriter(Paths.get(descriptionFileName), StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)) { diff --git a/src/toniarts/openkeeper/tools/convert/map/AI.java b/src/toniarts/openkeeper/tools/convert/map/AI.java index 9a8d6c86a..f93ae17f1 100644 --- a/src/toniarts/openkeeper/tools/convert/map/AI.java +++ b/src/toniarts/openkeeper/tools/convert/map/AI.java @@ -56,7 +56,7 @@ public String toString() { String[] names = name().toLowerCase().split("_"); StringBuilder sb = new StringBuilder(name().length()); for (String item : names) { - if (sb.length() > 0) { + if (!sb.isEmpty()) { sb.append(" "); } sb.append(Character.toUpperCase(item.charAt(0))); diff --git a/src/toniarts/openkeeper/tools/convert/map/KwdFile.java b/src/toniarts/openkeeper/tools/convert/map/KwdFile.java index 2db4e2817..4de0d43b5 100644 --- a/src/toniarts/openkeeper/tools/convert/map/KwdFile.java +++ b/src/toniarts/openkeeper/tools/convert/map/KwdFile.java @@ -3268,7 +3268,7 @@ private void checkOffset(long itemSize, IResourceChunkReader reader, long offset /** * Kwd header, few different kinds, handles all */ - private class KwdHeader { + private static class KwdHeader { // struct kwdHeader { // unsigned int id; // unsigned int size; diff --git a/src/toniarts/openkeeper/tools/convert/map/StringId.java b/src/toniarts/openkeeper/tools/convert/map/StringId.java index 7b7680642..43eedf5c2 100644 --- a/src/toniarts/openkeeper/tools/convert/map/StringId.java +++ b/src/toniarts/openkeeper/tools/convert/map/StringId.java @@ -17,30 +17,11 @@ package toniarts.openkeeper.tools.convert.map; /** - * * Adapted from C-code * + * @param ids struct StringIds { uint32_t ids[5]; uint8_t x14[4]; }; * @author Toni Helenius */ -public class StringId { - -// struct StringIds { -// uint32_t ids[5]; -// uint8_t x14[4]; -// }; - private final int ids[]; - private final short x14[]; - - public StringId(int[] ids, short[] x14) { - this.ids = ids; - this.x14 = x14; - } - - public int[] getIds() { - return ids; - } +public record StringId(int[] ids, short[] x14) { - public short[] getX14() { - return x14; - } } diff --git a/src/toniarts/openkeeper/tools/convert/sound/sfx/SfxMapFile.java b/src/toniarts/openkeeper/tools/convert/sound/sfx/SfxMapFile.java index b65ca20ab..36aec8af4 100644 --- a/src/toniarts/openkeeper/tools/convert/sound/sfx/SfxMapFile.java +++ b/src/toniarts/openkeeper/tools/convert/sound/sfx/SfxMapFile.java @@ -40,7 +40,7 @@ public class SfxMapFile { private final int unknown_2; // not used private final Path file; - private SfxMapFileEntry[] entries; + private final SfxMapFileEntry[] entries; public SfxMapFile(Path file) { this.file = file; diff --git a/src/toniarts/openkeeper/tools/modelviewer/ModelViewer.java b/src/toniarts/openkeeper/tools/modelviewer/ModelViewer.java index c05732ce3..a2b8d3f69 100644 --- a/src/toniarts/openkeeper/tools/modelviewer/ModelViewer.java +++ b/src/toniarts/openkeeper/tools/modelviewer/ModelViewer.java @@ -398,8 +398,7 @@ private void toggleShowNormals() { spat.depthFirstTraversal(new SceneGraphVisitor() { @Override public void visit(Spatial spatial) { - if (spatial instanceof Geometry) { - Geometry g = (Geometry) spatial; + if (spatial instanceof Geometry g) { Mesh normalMesh = TangentBinormalGenerator.genTbnLines(g.getMesh(), 0.1f); Geometry normalGeometry = new Geometry(g.getName() + "Normal", normalMesh); Material mat = new Material(assetManager, diff --git a/src/toniarts/openkeeper/utils/AssetUtils.java b/src/toniarts/openkeeper/utils/AssetUtils.java index d6f8e0c4e..2756e8085 100644 --- a/src/toniarts/openkeeper/utils/AssetUtils.java +++ b/src/toniarts/openkeeper/utils/AssetUtils.java @@ -497,10 +497,9 @@ private static void prewarmArtResources(List objects, AssetManager assetManag || artResource.getType() == ArtResource.ArtResourceType.MESH_COLLECTION || artResource.getType() == ArtResource.ArtResourceType.PROCEDURAL_MESH) { models.add(loadModel(assetManager, artResource.getName(), artResource)); - } else if (artResource.getType() == ArtResource.ArtResourceType.TERRAIN_MESH && obj instanceof Terrain) { + } else if (artResource.getType() == ArtResource.ArtResourceType.TERRAIN_MESH && obj instanceof Terrain terrain) { // With terrains, we need to see the contruction type - Terrain terrain = (Terrain) obj; if (method.getName().startsWith("getTaggedTopResource") || method.getName().startsWith("getSideResource")) { models.add(loadModel(assetManager, artResource.getName(), artResource)); } else if (terrain.getFlags().contains(Terrain.TerrainFlag.CONSTRUCTION_TYPE_QUAD)) { @@ -517,10 +516,9 @@ private static void prewarmArtResources(List objects, AssetManager assetManag else if (!terrain.getFlags().contains(Terrain.TerrainFlag.CONSTRUCTION_TYPE_WATER)) { models.add(loadModel(assetManager, artResource.getName(), artResource)); } - } else if (artResource.getType() == ArtResource.ArtResourceType.TERRAIN_MESH && obj instanceof Room) { + } else if (artResource.getType() == ArtResource.ArtResourceType.TERRAIN_MESH && obj instanceof Room room) { // With terrains, we need to see the contruction type - Room room = (Room) obj; int count = 0; int start = 0; switch (room.getTileConstruction()) { diff --git a/src/toniarts/openkeeper/utils/GameLoop.java b/src/toniarts/openkeeper/utils/GameLoop.java index 55e5c046a..6cf52653a 100644 --- a/src/toniarts/openkeeper/utils/GameLoop.java +++ b/src/toniarts/openkeeper/utils/GameLoop.java @@ -31,7 +31,7 @@ public class GameLoop { private final IGameLoopManager gameLoopManager; private final Runner loop; - private long updateRate; + private final long updateRate; private long idleSleepTime = 0; private final AtomicBoolean pauseFlag = new AtomicBoolean(false); diff --git a/src/toniarts/openkeeper/view/KeeperHandState.java b/src/toniarts/openkeeper/view/KeeperHandState.java index 4307f32be..b53c709aa 100644 --- a/src/toniarts/openkeeper/view/KeeperHandState.java +++ b/src/toniarts/openkeeper/view/KeeperHandState.java @@ -304,7 +304,7 @@ protected void removeObject(KeeperHandItem object, Entity e) { } - private class KeeperHandItem implements Comparable { + private static class KeeperHandItem implements Comparable { private int index; private IEntityViewControl item; diff --git a/src/toniarts/openkeeper/view/PlayerInteractionState.java b/src/toniarts/openkeeper/view/PlayerInteractionState.java index 89e451180..b6e4925ff 100644 --- a/src/toniarts/openkeeper/view/PlayerInteractionState.java +++ b/src/toniarts/openkeeper/view/PlayerInteractionState.java @@ -92,8 +92,8 @@ public abstract class PlayerInteractionState extends AbstractPauseAwareState { private final IMapInformation mapInformation; private final TextParser textParser; private SelectionHandler selectionHandler; - private Vector2f mousePosition = new Vector2f(Vector2f.ZERO); - private InteractionState interactionState = new InteractionState(); + private final Vector2f mousePosition = new Vector2f(Vector2f.ZERO); + private final InteractionState interactionState = new InteractionState(); private float timeFromLastUpdate = CURSOR_UPDATE_INTERVAL; private Element view; diff --git a/src/toniarts/openkeeper/view/PlayerMapViewState.java b/src/toniarts/openkeeper/view/PlayerMapViewState.java index 0894a48bd..8db6840d2 100644 --- a/src/toniarts/openkeeper/view/PlayerMapViewState.java +++ b/src/toniarts/openkeeper/view/PlayerMapViewState.java @@ -337,7 +337,7 @@ public void setTiles(List mapTiles) { /** * Single map tile that taps into the entity information */ - private class MapTileInformation extends AbstractMapTileInformation { + private static class MapTileInformation extends AbstractMapTileInformation { private final Entity entity; diff --git a/src/toniarts/openkeeper/view/PossessionCameraState.java b/src/toniarts/openkeeper/view/PossessionCameraState.java index a1dad2853..cdeee7715 100644 --- a/src/toniarts/openkeeper/view/PossessionCameraState.java +++ b/src/toniarts/openkeeper/view/PossessionCameraState.java @@ -196,14 +196,11 @@ public void onAnalog(String name, float value, float tpf) { return; } - if (name.equals(CAMERA_VIEW_LEFT)) { - camera.rotate(value, true); - } else if (name.equals(CAMERA_VIEW_RIGHT)) { - camera.rotate(-value, true); - } else if (name.equals(CAMERA_VIEW_UP)) { - camera.rotate(value, false); - } else if (name.equals(CAMERA_VIEW_DOWN)) { - camera.rotate(-value, false); + switch (name) { + case CAMERA_VIEW_LEFT -> camera.rotate(value, true); + case CAMERA_VIEW_RIGHT -> camera.rotate(-value, true); + case CAMERA_VIEW_UP -> camera.rotate(value, false); + case CAMERA_VIEW_DOWN -> camera.rotate(-value, false); } if (name.equals(POSSESSION + Settings.Setting.CAMERA_UP.name())) { diff --git a/src/toniarts/openkeeper/view/camera/PlayerCameraRotateControl.java b/src/toniarts/openkeeper/view/camera/PlayerCameraRotateControl.java index 1ee3346c4..c3b2031cc 100644 --- a/src/toniarts/openkeeper/view/camera/PlayerCameraRotateControl.java +++ b/src/toniarts/openkeeper/view/camera/PlayerCameraRotateControl.java @@ -64,8 +64,7 @@ public void setCamera(PlayerCamera camera) { public void setParent(IContainer parent) { super.setParent(parent); - if (parent instanceof ActionPoint) { - ActionPoint ap = (ActionPoint) parent; + if (parent instanceof ActionPoint ap) { Vector3f location = WorldUtils.ActionPointToVector3f(ap); camera.setLookAt(location); } diff --git a/src/toniarts/openkeeper/view/map/WallSection.java b/src/toniarts/openkeeper/view/map/WallSection.java index 5e77f9c7e..66d7038df 100644 --- a/src/toniarts/openkeeper/view/map/WallSection.java +++ b/src/toniarts/openkeeper/view/map/WallSection.java @@ -25,7 +25,7 @@ * * @author Toni Helenius */ -public class WallSection { +public record WallSection(toniarts.openkeeper.view.map.WallSection.WallDirection direction, List coordinates) { public enum WallDirection { @@ -42,19 +42,4 @@ public float getAngle() { private final float angle; } - private final WallDirection direction; - private final List coordinates; - - public WallSection(WallDirection direction, List coordinates) { - this.direction = direction; - this.coordinates = coordinates; - } - - public List getCoordinates() { - return coordinates; - } - - public WallDirection getDirection() { - return direction; - } } diff --git a/src/toniarts/openkeeper/view/map/construction/HeroGateConstructor.java b/src/toniarts/openkeeper/view/map/construction/HeroGateConstructor.java index cd825500b..e4ffd0091 100644 --- a/src/toniarts/openkeeper/view/map/construction/HeroGateConstructor.java +++ b/src/toniarts/openkeeper/view/map/construction/HeroGateConstructor.java @@ -45,18 +45,18 @@ protected BatchNode constructWall() { int south = 0; for (WallSection section : roomInstance.getWallSections()) { int i = 0; - for (Point p : section.getCoordinates()) { + for (Point p : section.coordinates()) { int piece; Spatial part; float yAngle = 0; - switch (section.getDirection()) { + switch (section.direction()) { case SOUTH: piece = (i == 1) ? 5 : 7; break; case EAST: - if (section.getCoordinates().size() == 1) { + if (section.coordinates().size() == 1) { piece = 6; // outside gate } else { piece = 7; @@ -66,7 +66,7 @@ protected BatchNode constructWall() { case WEST: // FIXME if gate skip walls ??? - if (section.getCoordinates().size() == 1) { + if (section.coordinates().size() == 1) { piece = 6; // inside gate yAngle = FastMath.PI; } else { diff --git a/src/toniarts/openkeeper/view/map/construction/HeroGateThreeByOneConstructor.java b/src/toniarts/openkeeper/view/map/construction/HeroGateThreeByOneConstructor.java index 0279096b4..9f38dbfa0 100644 --- a/src/toniarts/openkeeper/view/map/construction/HeroGateThreeByOneConstructor.java +++ b/src/toniarts/openkeeper/view/map/construction/HeroGateThreeByOneConstructor.java @@ -81,24 +81,24 @@ protected BatchNode constructWall() { for (WallSection section : roomInstance.getWallSections()) { int i = 0; - int sectionSize = section.getCoordinates().size(); + int sectionSize = section.coordinates().size(); - for (Point p : section.getCoordinates()) { + for (Point p : section.coordinates()) { int piece; if (sectionSize == 3) { - piece = (section.getDirection() == WallDirection.EAST - || section.getDirection() == WallDirection.NORTH) ? 2 - i : i; + piece = (section.direction() == WallDirection.EAST + || section.direction() == WallDirection.NORTH) ? 2 - i : i; } else { piece = 6; } i++; float yAngle = 0; - if (section.getDirection() == WallDirection.NORTH) { + if (section.direction() == WallDirection.NORTH) { yAngle = -FastMath.HALF_PI; - } else if (section.getDirection() == WallDirection.SOUTH) { + } else if (section.direction() == WallDirection.SOUTH) { yAngle = FastMath.HALF_PI; - } else if (section.getDirection() == WallDirection.EAST) { + } else if (section.direction() == WallDirection.EAST) { yAngle = FastMath.PI; } //yAngle = -section.getDirection().ordinal() * FastMath.HALF_PI; diff --git a/src/toniarts/openkeeper/view/map/construction/RoomConstructor.java b/src/toniarts/openkeeper/view/map/construction/RoomConstructor.java index 3bfa777cc..a9424066c 100644 --- a/src/toniarts/openkeeper/view/map/construction/RoomConstructor.java +++ b/src/toniarts/openkeeper/view/map/construction/RoomConstructor.java @@ -134,14 +134,14 @@ public Spatial getWallSpatial(Point p, WallSection.WallDirection direction) { for (WallSection section : roomInstance.getWallSections()) { - if (section.getDirection() != direction) { + if (section.direction() != direction) { continue; } - int sectionSize = section.getCoordinates().size(); + int sectionSize = section.coordinates().size(); for (int i = 0; i < sectionSize; i++) { // skip others - if (!p.equals(section.getCoordinates().get(i))) { + if (!p.equals(section.coordinates().get(i))) { continue; } @@ -149,8 +149,8 @@ public Spatial getWallSpatial(Point p, WallSection.WallDirection direction) { if (i == 0 || i == (sectionSize - 1)) { Vector3f moveFirst; Vector3f moveSecond; - if (section.getDirection() == WallSection.WallDirection.WEST - || section.getDirection() == WallSection.WallDirection.SOUTH) { + if (section.direction() == WallSection.WallDirection.WEST + || section.direction() == WallSection.WallDirection.SOUTH) { moveFirst = new Vector3f(MapViewController.TILE_WIDTH / 4, 0, -3 * MapViewController.TILE_WIDTH / 4); moveSecond = new Vector3f(-MapViewController.TILE_WIDTH / 4, 0, -3 * MapViewController.TILE_WIDTH / 4); } else { // NORTH, EAST @@ -160,8 +160,8 @@ public Spatial getWallSpatial(Point p, WallSection.WallDirection direction) { spatial = new BatchNode(); int firstPiece = (i == 0 ? 4 : 6); - if (firstPiece == 4 && (section.getDirection() == WallSection.WallDirection.EAST - || section.getDirection() == WallSection.WallDirection.NORTH)) { + if (firstPiece == 4 && (section.direction() == WallSection.WallDirection.EAST + || section.direction() == WallSection.WallDirection.NORTH)) { firstPiece = 5; // The sorting direction forces us to do this } @@ -173,8 +173,8 @@ public Spatial getWallSpatial(Point p, WallSection.WallDirection direction) { // Second int secondPiece = (i == (sectionSize - 1) ? 5 : 6); - if (secondPiece == 5 && (section.getDirection() == WallSection.WallDirection.EAST - || section.getDirection() == WallSection.WallDirection.NORTH)) { + if (secondPiece == 5 && (section.direction() == WallSection.WallDirection.EAST + || section.direction() == WallSection.WallDirection.NORTH)) { secondPiece = 4; // The sorting direction forces us to do this } @@ -189,7 +189,7 @@ public Spatial getWallSpatial(Point p, WallSection.WallDirection direction) { spatial = AssetUtils.loadModel(assetManager, resource + getWallIndex(i), artResource); spatial.rotate(0, yAngle, 0); - switch (section.getDirection()) { + switch (section.direction()) { case WEST: spatial.move(-MapViewController.TILE_WIDTH, 0, 0); break; diff --git a/src/toniarts/openkeeper/world/EntityInstance.java b/src/toniarts/openkeeper/world/EntityInstance.java index 85b49dbd5..639c14325 100644 --- a/src/toniarts/openkeeper/world/EntityInstance.java +++ b/src/toniarts/openkeeper/world/EntityInstance.java @@ -147,7 +147,7 @@ public String toString() { * construction?)
* The order is "natural", starting from origin */ - private final class PointComparator implements Comparator { + private static final class PointComparator implements Comparator { @Override public int compare(Point o1, Point o2) { diff --git a/src/toniarts/openkeeper/world/room/GenericRoom.java b/src/toniarts/openkeeper/world/room/GenericRoom.java index 47969d88e..293c1ea62 100644 --- a/src/toniarts/openkeeper/world/room/GenericRoom.java +++ b/src/toniarts/openkeeper/world/room/GenericRoom.java @@ -295,7 +295,7 @@ public Spatial getWallSpatial(Point p, WallSection.WallDirection direction) { float yAngle = FastMath.PI; String resource = roomInstance.getRoom().getCompleteResource().getName(); - for (WallSection section : roomInstance.getWallSections()) { + /*for (WallSection section : roomInstance.getWallSections()) { if (section.getDirection() != direction) { continue; @@ -371,7 +371,7 @@ public Spatial getWallSpatial(Point p, WallSection.WallDirection direction) { return spatial; } - } + }*/ return null; } diff --git a/src/toniarts/openkeeper/world/room/HeroGate.java b/src/toniarts/openkeeper/world/room/HeroGate.java index 836b69401..5bc522011 100644 --- a/src/toniarts/openkeeper/world/room/HeroGate.java +++ b/src/toniarts/openkeeper/world/room/HeroGate.java @@ -93,7 +93,7 @@ protected BatchNode constructWall() { Point start = roomInstance.getCoordinates().get(0); String modelName = roomInstance.getRoom().getCompleteResource().getName(); int south = 0; - for (WallSection section : roomInstance.getWallSections()) { + /*for (WallSection section : roomInstance.getWallSections()) { int i = 0; for (Point p : section.getCoordinates()) { int piece; @@ -149,7 +149,7 @@ protected BatchNode constructWall() { //part.move(-MapLoader.TILE_WIDTH / 2, 0, -MapLoader.TILE_WIDTH / 2); root.attachChild(part); } - } + }*/ return root; } diff --git a/src/toniarts/openkeeper/world/room/HeroGateThreeByOne.java b/src/toniarts/openkeeper/world/room/HeroGateThreeByOne.java index 9d3440ae4..58dd773cd 100644 --- a/src/toniarts/openkeeper/world/room/HeroGateThreeByOne.java +++ b/src/toniarts/openkeeper/world/room/HeroGateThreeByOne.java @@ -80,7 +80,7 @@ protected BatchNode constructWall() { // Get the wall points //Point center = roomInstance.getCenter(); String modelName = roomInstance.getRoom().getCompleteResource().getName(); - for (WallSection section : roomInstance.getWallSections()) { + /*for (WallSection section : roomInstance.getWallSections()) { int i = 0; int sectionSize = section.getCoordinates().size(); @@ -113,7 +113,7 @@ protected BatchNode constructWall() { //tile.move(-MapLoader.TILE_WIDTH / 2, 0, -MapLoader.TILE_WIDTH / 2); root.attachChild(tile); } - } + }*/ return root; } From 29033ed1a31d27e2c2a79ad0af57f5823ba5e19a Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sun, 7 Jan 2024 18:29:22 +0200 Subject: [PATCH 32/47] Unnecessary variable --- src/toniarts/openkeeper/game/state/MainMenuScreenController.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/toniarts/openkeeper/game/state/MainMenuScreenController.java b/src/toniarts/openkeeper/game/state/MainMenuScreenController.java index 8c9b0383c..7d4385913 100644 --- a/src/toniarts/openkeeper/game/state/MainMenuScreenController.java +++ b/src/toniarts/openkeeper/game/state/MainMenuScreenController.java @@ -801,7 +801,6 @@ private void setControlSettingsToGUI() { ListBox listBox = screen.findNiftyControl("keyboardSetup", ListBox.class); int i = 0; int selected = 0; - KeyNames kNames = new KeyNames(); listBox.clear(); List settings = Settings.Setting.getSettings(Settings.SettingCategory.CONTROLS); From 7a70986a76eab61387a8acf33931e6758b8212c5 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 9 Mar 2024 11:46:37 +0200 Subject: [PATCH 33/47] Gradle 8.5 -> 8.6 and automatic JDK resolution --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew.bat | 20 ++++++++++---------- settings.gradle | 6 +++++- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/build.gradle b/build.gradle index 03032f434..6f310f76d 100644 --- a/build.gradle +++ b/build.gradle @@ -124,5 +124,5 @@ compileJava { } wrapper { - gradleVersion = '8.5' + gradleVersion = '8.6' } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1af9e0930..a80b22ce5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew.bat b/gradlew.bat index 6689b85be..7101f8e46 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -43,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/settings.gradle b/settings.gradle index 5e1c03ba1..6700c1211 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,5 @@ -rootProject.name = 'OpenKeeper' +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0' +} + +rootProject.name = 'OpenKeeper' \ No newline at end of file From e6ade8779b1af1a69fe31174a1090a31ba265b31 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sun, 16 Jun 2024 17:09:57 +0300 Subject: [PATCH 34/47] Fix too bright videos and graphics --- src/toniarts/openkeeper/game/data/Settings.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/toniarts/openkeeper/game/data/Settings.java b/src/toniarts/openkeeper/game/data/Settings.java index ffa39a05b..5e47bdef8 100644 --- a/src/toniarts/openkeeper/game/data/Settings.java +++ b/src/toniarts/openkeeper/game/data/Settings.java @@ -284,6 +284,9 @@ private Settings(final AppSettings settings) { // Assing some app level settings settings.setTitle(TITLE); settings.setIcons(getApplicationIcons()); + + // We don't allow this to be changed, assets were not meant to use this + settings.setGammaCorrection(false); } /** From c90f5d6c356c4aa1354f12d40382d37b998ec691 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sun, 16 Jun 2024 17:10:20 +0300 Subject: [PATCH 35/47] Default resolution has no effect --- src/toniarts/openkeeper/game/data/Settings.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/toniarts/openkeeper/game/data/Settings.java b/src/toniarts/openkeeper/game/data/Settings.java index 5e47bdef8..edd2caf72 100644 --- a/src/toniarts/openkeeper/game/data/Settings.java +++ b/src/toniarts/openkeeper/game/data/Settings.java @@ -267,10 +267,6 @@ private Settings(final AppSettings settings) { // Init the settings this.settings = settings; - //Default resolution - if (!this.settings.containsKey("Width") || !this.settings.containsKey("Height")) { - this.settings.setResolution(800, 600); // Default resolution - } if (Files.exists(USER_SETTINGS_FILE)) { try (InputStream in = Files.newInputStream(USER_SETTINGS_FILE); BufferedInputStream bin = new BufferedInputStream(in)) { From a11a70664d5ff336c9a593efb624ab70a4241ded Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sun, 16 Jun 2024 17:14:34 +0300 Subject: [PATCH 36/47] Get display modes via LWJGL rather than AWT. Abstracts video modes --- .../game/state/MainMenuScreenController.java | 15 ++- .../openkeeper/game/state/MainMenuState.java | 36 ------ .../utils/AwtDisplayModeProvider.java | 75 ++++++++++++ .../utils/DefaultDisplayModeProvider.java | 44 +++++++ .../DisplayMode.java} | 42 +++---- .../openkeeper/utils/DisplayModeProvider.java | 36 ++++++ .../openkeeper/utils/DisplayModeUtils.java | 79 ++++++++++++ .../utils/Lwjgl2DisplayModeProvider.java | 87 +++++++++++++ .../utils/Lwjgl3DisplayModeProvider.java | 114 ++++++++++++++++++ 9 files changed, 459 insertions(+), 69 deletions(-) create mode 100644 src/toniarts/openkeeper/utils/AwtDisplayModeProvider.java create mode 100644 src/toniarts/openkeeper/utils/DefaultDisplayModeProvider.java rename src/toniarts/openkeeper/{game/state/MyDisplayMode.java => utils/DisplayMode.java} (65%) create mode 100644 src/toniarts/openkeeper/utils/DisplayModeProvider.java create mode 100644 src/toniarts/openkeeper/utils/DisplayModeUtils.java create mode 100644 src/toniarts/openkeeper/utils/Lwjgl2DisplayModeProvider.java create mode 100644 src/toniarts/openkeeper/utils/Lwjgl3DisplayModeProvider.java diff --git a/src/toniarts/openkeeper/game/state/MainMenuScreenController.java b/src/toniarts/openkeeper/game/state/MainMenuScreenController.java index 8c9b0383c..64ffb765a 100644 --- a/src/toniarts/openkeeper/game/state/MainMenuScreenController.java +++ b/src/toniarts/openkeeper/game/state/MainMenuScreenController.java @@ -42,8 +42,6 @@ import de.lessvoid.nifty.screen.Screen; import de.lessvoid.nifty.tools.Color; import de.lessvoid.nifty.tools.SizeValue; -import java.awt.GraphicsDevice; -import java.awt.GraphicsEnvironment; import java.io.File; import java.io.IOException; import java.lang.System.Logger; @@ -84,6 +82,8 @@ import toniarts.openkeeper.tools.convert.map.KwdFile; import toniarts.openkeeper.tools.modelviewer.SoundsLoader; import toniarts.openkeeper.utils.AssetUtils; +import toniarts.openkeeper.utils.DisplayMode; +import toniarts.openkeeper.utils.DisplayModeUtils; import toniarts.openkeeper.utils.PathUtils; import toniarts.openkeeper.utils.Utils; @@ -271,7 +271,7 @@ public void applyGraphicsSettings() { DropDown aa = screen.findNiftyControl("antialiasing", DropDown.class); DropDown af = screen.findNiftyControl("anisotropicFiltering", DropDown.class); CheckBox ssao = screen.findNiftyControl("ssao", CheckBox.class); - MyDisplayMode mdm = (MyDisplayMode) res.getSelection(); + DisplayMode mdm = (DisplayMode) res.getSelection(); // TODO: See if we need a restart, but keep in mind that the settings are saved in the restart // Set the settings @@ -568,7 +568,7 @@ private void setScreen(Screen screen) { } @NiftyEventSubscriber(id = "resolution") - public void onResolutionChanged(final String id, final DropDownSelectionChangedEvent event) { + public void onResolutionChanged(final String id, final DropDownSelectionChangedEvent event) { // Set the bit depths DropDown bitDepth = screen.findNiftyControl("bitDepth", DropDown.class); @@ -729,9 +729,8 @@ private void setGraphicsSettingsToGUI() { // Application settings AppSettings settings = Main.getUserSettings().getAppSettings(); - GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); - MyDisplayMode mdm = new MyDisplayMode(settings); - List resolutions = state.getResolutions(device); + DisplayMode mdm = new DisplayMode(settings); + List resolutions = DisplayModeUtils.getInstance().getDisplayModes(); int resolutionSelectedIndex = Collections.binarySearch(resolutions, mdm); // Get values to the settings screen @@ -762,7 +761,7 @@ private void setGraphicsSettingsToGUI() { // Fullscreen CheckBox fullscreen = screen.findNiftyControl("fullscreen", CheckBox.class); fullscreen.setChecked(settings.isFullscreen()); - fullscreen.setEnabled(device.isFullScreenSupported()); + fullscreen.setEnabled(DisplayModeUtils.getInstance().isFullScreenSupported()); // VSync CheckBox vsync = screen.findNiftyControl("verticalSync", CheckBox.class); diff --git a/src/toniarts/openkeeper/game/state/MainMenuState.java b/src/toniarts/openkeeper/game/state/MainMenuState.java index 2d9f3515f..d7a615571 100644 --- a/src/toniarts/openkeeper/game/state/MainMenuState.java +++ b/src/toniarts/openkeeper/game/state/MainMenuState.java @@ -31,16 +31,12 @@ import com.simsilica.es.EntityData; import com.simsilica.es.EntityId; import com.simsilica.es.base.DefaultEntityData; -import java.awt.DisplayMode; -import java.awt.GraphicsDevice; import java.io.File; import java.io.IOException; import java.lang.System.Logger; import java.lang.System.Logger.Level; import java.nio.file.Paths; -import java.util.ArrayList; import java.util.Collections; -import java.util.List; import toniarts.openkeeper.Main; import static toniarts.openkeeper.Main.getDkIIFolder; import toniarts.openkeeper.cinematics.CameraSweepData; @@ -532,38 +528,6 @@ protected void clearLevelBriefingNarration() { levelBriefing = null; } - /** - * Gets the resolutions supported by the given device. The resolutions are - * sorted by their native order - * - * @param device the graphics device to query resolutions from - * @return sorted list of available resolutions - */ - protected List getResolutions(GraphicsDevice device) { - - // Get from the system - DisplayMode[] modes = device.getDisplayModes(); - - List displayModes = new ArrayList<>(modes.length); - - // Loop them through - for (DisplayMode dm : modes) { - - // They may already exist, then just add the possible resfresh rate - MyDisplayMode mdm = new MyDisplayMode(dm); - int index = Collections.binarySearch(displayModes, mdm); - if (index > -1) { - mdm = displayModes.get(index); - mdm.addRefreshRate(dm); - mdm.addBitDepth(dm); - } else { - displayModes.add(~index, mdm); - } - } - - return displayModes; - } - public void doDebriefing(GameResult result) { setEnabled(true); if (selectedLevel != null && result != null) { diff --git a/src/toniarts/openkeeper/utils/AwtDisplayModeProvider.java b/src/toniarts/openkeeper/utils/AwtDisplayModeProvider.java new file mode 100644 index 000000000..fc5cdfbba --- /dev/null +++ b/src/toniarts/openkeeper/utils/AwtDisplayModeProvider.java @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2014-2024 OpenKeeper + * + * OpenKeeper is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenKeeper is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenKeeper. If not, see . + */ +package toniarts.openkeeper.utils; + +import java.awt.GraphicsDevice; +import java.awt.GraphicsEnvironment; +import java.util.ArrayList; +import java.util.List; + +/** + * Uses Java's own way of getting available display modes. Often errorenious and + * locks up on MacOS with LWJGL 3 + * + * @author Toni Helenius + */ +class AwtDisplayModeProvider extends DefaultDisplayModeProvider { + + public AwtDisplayModeProvider() { + } + + @Override + public List getDisplayModes() { + GraphicsDevice device = getGraphicsDevice(); + + java.awt.DisplayMode[] modes = device.getDisplayModes(); + + List displayModes = new ArrayList<>(modes.length); + + // Loop them through + for (java.awt.DisplayMode dm : modes) { + DisplayMode mdm = getDisplayMode(dm); + addDisplayMode(displayModes, mdm); + } + + return displayModes; + } + + private GraphicsDevice getGraphicsDevice() { + return GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); + } + + private DisplayMode getDisplayMode(java.awt.DisplayMode dm) { + DisplayMode displayMode = new DisplayMode(dm.getWidth(), dm.getHeight()); + if (dm.getRefreshRate() != java.awt.DisplayMode.REFRESH_RATE_UNKNOWN) { + displayMode.addRefreshRate(dm.getRefreshRate()); + } + if (dm.getBitDepth() != java.awt.DisplayMode.BIT_DEPTH_MULTI) { + displayMode.addBitDepth(dm.getBitDepth()); + } + + return displayMode; + } + + @Override + public boolean isFullScreenSupported() { + GraphicsDevice device = getGraphicsDevice(); + + return device.isFullScreenSupported(); + } + +} diff --git a/src/toniarts/openkeeper/utils/DefaultDisplayModeProvider.java b/src/toniarts/openkeeper/utils/DefaultDisplayModeProvider.java new file mode 100644 index 000000000..f2d1cac4a --- /dev/null +++ b/src/toniarts/openkeeper/utils/DefaultDisplayModeProvider.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2014-2024 OpenKeeper + * + * OpenKeeper is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenKeeper is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenKeeper. If not, see . + */ +package toniarts.openkeeper.utils; + +import java.util.Collections; +import java.util.List; + +/** + * Simple groups some common methods for display mode providers + * + * @author Toni Helenius + */ +abstract class DefaultDisplayModeProvider implements DisplayModeProvider { + + protected void addDisplayMode(List displayModes, DisplayMode mdm) { + int index = Collections.binarySearch(displayModes, mdm); + if (index > -1) { + DisplayMode existingDm = displayModes.get(index); + for (Integer refreshRate : mdm.getRefreshRates()) { + existingDm.addRefreshRate(refreshRate); + } + for (Integer bitDepth : mdm.getBitDepths()) { + existingDm.addBitDepth(bitDepth); + } + } else { + displayModes.add(~index, mdm); + } + } + +} diff --git a/src/toniarts/openkeeper/game/state/MyDisplayMode.java b/src/toniarts/openkeeper/utils/DisplayMode.java similarity index 65% rename from src/toniarts/openkeeper/game/state/MyDisplayMode.java rename to src/toniarts/openkeeper/utils/DisplayMode.java index 499505634..7f047cb4a 100644 --- a/src/toniarts/openkeeper/game/state/MyDisplayMode.java +++ b/src/toniarts/openkeeper/utils/DisplayMode.java @@ -14,48 +14,43 @@ * You should have received a copy of the GNU General Public License * along with OpenKeeper. If not, see . */ -package toniarts.openkeeper.game.state; +package toniarts.openkeeper.utils; import com.jme3.system.AppSettings; -import java.awt.DisplayMode; import java.util.Collection; +import java.util.Set; import java.util.TreeSet; /** + * Our own presentation of display mode. Groups everything under resolution. * * @author ArchDemon */ -public final class MyDisplayMode implements Comparable { +public final class DisplayMode implements Comparable { - private final int height; private final int width; - private final Collection refreshRates = new TreeSet<>(); - private final Collection bitDepths = new TreeSet<>(); + private final int height; + private final Set refreshRates = new TreeSet<>(); + private final Set bitDepths = new TreeSet<>(); - public MyDisplayMode(DisplayMode dm) { - height = dm.getHeight(); - width = dm.getWidth(); - addBitDepth(dm); - addRefreshRate(dm); + public DisplayMode(int width, int height) { + this.width = width; + this.height = height; } - MyDisplayMode(AppSettings settings) { + public DisplayMode(AppSettings settings) { height = settings.getHeight(); width = settings.getWidth(); bitDepths.add(settings.getBitsPerPixel()); refreshRates.add(settings.getFrequency()); } - public void addRefreshRate(DisplayMode dm) { - if (dm.getRefreshRate() != DisplayMode.REFRESH_RATE_UNKNOWN && !refreshRates.contains(dm.getRefreshRate())) { - refreshRates.add(dm.getRefreshRate()); - } + protected void addRefreshRate(Integer refreshRate) { + refreshRates.add(refreshRate); } - public void addBitDepth(DisplayMode dm) { - if (dm.getBitDepth() != DisplayMode.BIT_DEPTH_MULTI && !bitDepths.contains(dm.getBitDepth())) { - bitDepths.add(dm.getBitDepth()); - } + protected void addBitDepth(Integer bitDepth) { + bitDepths.add(bitDepth); } public int getWidth() { @@ -67,9 +62,6 @@ public int getHeight() { } public Collection getBitDepths() { - if (bitDepths.isEmpty()) { - bitDepths.add(24); // Add default - } return bitDepths; } @@ -85,7 +77,7 @@ public boolean equals(Object obj) { if (getClass() != obj.getClass()) { return false; } - final MyDisplayMode other = (MyDisplayMode) obj; + final DisplayMode other = (DisplayMode) obj; if (this.height != other.height) { return false; } @@ -106,7 +98,7 @@ public String toString() { } @Override - public int compareTo(MyDisplayMode o) { + public int compareTo(DisplayMode o) { int result = Integer.compare(width, o.width); if (result == 0) { result = Integer.compare(height, o.height); diff --git a/src/toniarts/openkeeper/utils/DisplayModeProvider.java b/src/toniarts/openkeeper/utils/DisplayModeProvider.java new file mode 100644 index 000000000..6049f3962 --- /dev/null +++ b/src/toniarts/openkeeper/utils/DisplayModeProvider.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2014-2024 OpenKeeper + * + * OpenKeeper is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenKeeper is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenKeeper. If not, see . + */ +package toniarts.openkeeper.utils; + +import java.util.List; + +/** + * + * @author Toni Helenius + */ +public interface DisplayModeProvider { + + /** + * Gets the diplay modes supported by the current device. The resolutions + * are sorted by their native order + * + * @return sorted list of available display modes + */ + List getDisplayModes(); + + boolean isFullScreenSupported(); +} diff --git a/src/toniarts/openkeeper/utils/DisplayModeUtils.java b/src/toniarts/openkeeper/utils/DisplayModeUtils.java new file mode 100644 index 000000000..e9f9f36b5 --- /dev/null +++ b/src/toniarts/openkeeper/utils/DisplayModeUtils.java @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2014-2024 OpenKeeper + * + * OpenKeeper is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenKeeper is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenKeeper. If not, see . + */ +package toniarts.openkeeper.utils; + +import java.util.List; + +/** + * Java's own graphics settings are more often wrong than right. Also they block + * MacOS from working (AWT & LWJGL 3 issue). This class tries to probe either + * LWJGL 2 or 3 depending which is available without creating a dependency to + * either. Finally falling back to AWT as a last resort. + * + * @author Toni Helenius + */ +public class DisplayModeUtils implements DisplayModeProvider { + + /** + * The delegate for the actual provider + */ + private final DisplayModeProvider displayModeProvider; + + private static class SingletonHelper { + + private static final DisplayModeUtils INSTANCE = new DisplayModeUtils(); + } + + public static DisplayModeUtils getInstance() { + return SingletonHelper.INSTANCE; + } + + private DisplayModeUtils() { + displayModeProvider = getDisplayModeProvider(); + } + + private DisplayModeProvider getDisplayModeProvider() { + + // LWJGL 3 + try { + Class.forName("com.jme3.system.lwjgl.LwjglWindow"); + return new Lwjgl3DisplayModeProvider(); + } catch (ClassNotFoundException exception) { + } + + // LWJGL 2 + try { + Class.forName("org.lwjgl.opengl.Display"); + return new Lwjgl2DisplayModeProvider(); + } catch (ClassNotFoundException exception) { + } + + // Fallback + return new AwtDisplayModeProvider(); + } + + @Override + public List getDisplayModes() { + return displayModeProvider.getDisplayModes(); + } + + @Override + public boolean isFullScreenSupported() { + return displayModeProvider.isFullScreenSupported(); + } + +} diff --git a/src/toniarts/openkeeper/utils/Lwjgl2DisplayModeProvider.java b/src/toniarts/openkeeper/utils/Lwjgl2DisplayModeProvider.java new file mode 100644 index 000000000..c7ffd3ff9 --- /dev/null +++ b/src/toniarts/openkeeper/utils/Lwjgl2DisplayModeProvider.java @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2014-2024 OpenKeeper + * + * OpenKeeper is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenKeeper is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenKeeper. If not, see . + */ +package toniarts.openkeeper.utils; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; + +/** + * Extracts display modes using LWJGL 2 + * + * @author Toni Helenius + */ +class Lwjgl2DisplayModeProvider extends DefaultDisplayModeProvider { + + private final Method getBitsPerPixel; + private final Method getFrequency; + private final Method getModeHeight; + private final Method getModeWidth; + private final Method getModes; + + public Lwjgl2DisplayModeProvider() { + try { + Class displayClass = Class.forName("org.lwjgl.opengl.Display"); + getModes = displayClass.getDeclaredMethod("getAvailableDisplayModes"); + Class displayModeClass = Class.forName("org.lwjgl.opengl.DisplayMode"); + getBitsPerPixel = displayModeClass.getDeclaredMethod("getBitsPerPixel"); + getFrequency = displayModeClass.getDeclaredMethod("getFrequency"); + getModeHeight = displayModeClass.getDeclaredMethod("getHeight"); + getModeWidth = displayModeClass.getDeclaredMethod("getWidth"); + } catch (ClassNotFoundException | NoSuchMethodException | SecurityException ex) { + throw new RuntimeException("Failed to instantiate LWJGL 2 display mode provider. Has API been changed?", ex); + } + } + + @Override + public List getDisplayModes() { + try { + Object[] glModes = (Object[]) getModes.invoke(null); + + List displayModes = new ArrayList<>(); + for (Object glMode : glModes) { + DisplayMode mode = getDisplayMode(glMode); + addDisplayMode(displayModes, mode); + } + + return displayModes; + } catch (IllegalAccessException | InvocationTargetException ex) { + throw new RuntimeException("Failed to get display modes from LWJGL 2", ex); + } + } + + private DisplayMode getDisplayMode(Object glMode) + throws IllegalAccessException, InvocationTargetException { + int width = (Integer) getModeWidth.invoke(glMode); + int height = (Integer) getModeHeight.invoke(glMode); + int bitDepth = (Integer) getBitsPerPixel.invoke(glMode); + int rate = (Integer) getFrequency.invoke(glMode); + + DisplayMode dm = new DisplayMode(width, height); + dm.addRefreshRate(rate); + dm.addBitDepth(bitDepth); + + return dm; + } + + @Override + public boolean isFullScreenSupported() { + return true; + } + +} diff --git a/src/toniarts/openkeeper/utils/Lwjgl3DisplayModeProvider.java b/src/toniarts/openkeeper/utils/Lwjgl3DisplayModeProvider.java new file mode 100644 index 000000000..887552736 --- /dev/null +++ b/src/toniarts/openkeeper/utils/Lwjgl3DisplayModeProvider.java @@ -0,0 +1,114 @@ +/* + * Copyright (C) 2014-2024 OpenKeeper + * + * OpenKeeper is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenKeeper is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenKeeper. If not, see . + */ +package toniarts.openkeeper.utils; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * Extracts display modes using LWJGL 3 + * + * @author Toni Helenius + */ +class Lwjgl3DisplayModeProvider extends DefaultDisplayModeProvider { + + private final Method get; + private final Method getBlueBits; + private final Method getFrequency; + private final Method getGreenBits; + private final Method getModeHeight; + private final Method getModeWidth; + private final Method getModes; + private final Method getPrimaryMonitor; + private final Method getRedBits; + private final Method hasRemaining; + + public Lwjgl3DisplayModeProvider() { + try { + Class glfwClass = Class.forName("org.lwjgl.glfw.GLFW"); + getModes = glfwClass.getDeclaredMethod("glfwGetVideoModes", long.class); + getPrimaryMonitor = glfwClass.getDeclaredMethod("glfwGetPrimaryMonitor"); + + Class vidModeClass = Class.forName("org.lwjgl.glfw.GLFWVidMode"); + getBlueBits = vidModeClass.getDeclaredMethod("blueBits"); + getFrequency = vidModeClass.getDeclaredMethod("refreshRate"); + getGreenBits = vidModeClass.getDeclaredMethod("greenBits"); + getModeHeight = vidModeClass.getDeclaredMethod("height"); + getModeWidth = vidModeClass.getDeclaredMethod("width"); + getRedBits = vidModeClass.getDeclaredMethod("redBits"); + + Class[] vmInnerClasses = vidModeClass.getDeclaredClasses(); + assert vmInnerClasses.length == 1 : vmInnerClasses.length; + Class vmBufferClass = vmInnerClasses[0]; + get = vmBufferClass.getMethod("get"); + hasRemaining = vmBufferClass.getMethod("hasRemaining"); + } catch (ClassNotFoundException | NoSuchMethodException | SecurityException ex) { + throw new RuntimeException("Failed to instantiate LWJGL 3 display mode provider. Has API been changed?", ex); + } + } + + @Override + public List getDisplayModes() { + try { + Object monitorId = getPrimaryMonitor.invoke(null); + + if (monitorId == null || 0L == (Long) monitorId) { + return Collections.emptyList(); + } + + Object buf = getModes.invoke(null, monitorId); + + List displayModes = new ArrayList<>(); + while ((Boolean) hasRemaining.invoke(buf)) { + Object vidMode = get.invoke(buf); + + DisplayMode mode = getDisplayMode(vidMode); + addDisplayMode(displayModes, mode); + } + + return displayModes; + } catch (IllegalAccessException | InvocationTargetException ex) { + throw new RuntimeException("Failed to get display modes from LWJGL 3", ex); + } + } + + private DisplayMode getDisplayMode(Object glfwVidMode) + throws IllegalAccessException, InvocationTargetException { + int width = (Integer) getModeWidth.invoke(glfwVidMode); + int height = (Integer) getModeHeight.invoke(glfwVidMode); + int redBits = (Integer) getRedBits.invoke(glfwVidMode); + int greenBits = (Integer) getGreenBits.invoke(glfwVidMode); + int blueBits = (Integer) getBlueBits.invoke(glfwVidMode); + int rate = (Integer) getFrequency.invoke(glfwVidMode); + int bitDepth = redBits + greenBits + blueBits; + + DisplayMode dm = new DisplayMode(width, height); + dm.addRefreshRate(rate); + dm.addBitDepth(bitDepth); + + return dm; + } + + @Override + public boolean isFullScreenSupported() { + return true; + } + +} From ddfe4e1a57c7c09df31dbd4f6239fe7d85858b57 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Fri, 5 Jul 2024 18:07:12 +0300 Subject: [PATCH 37/47] Reformat --- .../game/task/creature/Research.java | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/toniarts/openkeeper/game/task/creature/Research.java b/src/toniarts/openkeeper/game/task/creature/Research.java index e68f7f876..45f78c229 100644 --- a/src/toniarts/openkeeper/game/task/creature/Research.java +++ b/src/toniarts/openkeeper/game/task/creature/Research.java @@ -69,21 +69,23 @@ protected ObjectType getRoomObjectType() { public void executeTask(ICreatureController creature, float executionDuration) { // TODO: is this a general case or even smart to do this like this...? - if (executionDuration - getExecutionDuration(creature) >= 1.0f) { - setExecutionDuration(creature, executionDuration - getExecutionDuration(creature)); + if (executionDuration - getExecutionDuration(creature) < 1.0f) { + return; + } + + setExecutionDuration(creature, executionDuration - getExecutionDuration(creature)); - // Advance players spell research - ResearchableEntity researchableEntity = researchControl.research(creature.getResearchPerSecond()); - if (researchableEntity != null) { + // Advance players spell research + ResearchableEntity researchableEntity = researchControl.research(creature.getResearchPerSecond()); + if (researchableEntity != null) { - // Create a spell book - EntityId entityId = objectsController.addRoomSpellBook((short) 0, getTaskLocation().x, getTaskLocation().y, researchableEntity); - entityId = (EntityId) getRoomObjectControl().addItem(entityId, null); - if (entityId != null) { + // Create a spell book + EntityId entityId = objectsController.addRoomSpellBook((short) 0, getTaskLocation().x, getTaskLocation().y, researchableEntity); + entityId = (EntityId) getRoomObjectControl().addItem(entityId, null); + if (entityId != null) { - // Failed add, wut - objectsController.createController(entityId).remove(); - } + // Failed add, wut + objectsController.createController(entityId).remove(); } } } From c0a36250364f00b50e4367a6e615aa7c13e3ca30 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Fri, 5 Jul 2024 18:08:40 +0300 Subject: [PATCH 38/47] Add some data to the task component rather than storing it in the creature controller --- .../game/component/TaskComponent.java | 10 +++++++++- .../creature/CreatureController.java | 18 +++++++++--------- .../openkeeper/game/task/TaskManager.java | 4 ++++ 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/toniarts/openkeeper/game/component/TaskComponent.java b/src/toniarts/openkeeper/game/component/TaskComponent.java index ab07edafe..0b1569493 100644 --- a/src/toniarts/openkeeper/game/component/TaskComponent.java +++ b/src/toniarts/openkeeper/game/component/TaskComponent.java @@ -33,15 +33,23 @@ public class TaskComponent implements EntityComponent { public Point targetLocation; public TaskType taskType; + /** + * How long we have contributed to the task + */ + public float taskDuration; + public boolean taskStarted; + public TaskComponent() { // For serialization } - public TaskComponent(long taskId, EntityId targetEntity, Point targetLocation, TaskType taskType) { + public TaskComponent(long taskId, EntityId targetEntity, Point targetLocation, TaskType taskType, float taskDuration, boolean taskStarted) { this.taskId = taskId; this.targetEntity = targetEntity; this.targetLocation = targetLocation; this.taskType = taskType; + this.taskDuration = taskDuration; + this.taskStarted = taskStarted; } } diff --git a/src/toniarts/openkeeper/game/controller/creature/CreatureController.java b/src/toniarts/openkeeper/game/controller/creature/CreatureController.java index ad271f142..cfe1a4515 100644 --- a/src/toniarts/openkeeper/game/controller/creature/CreatureController.java +++ b/src/toniarts/openkeeper/game/controller/creature/CreatureController.java @@ -105,8 +105,6 @@ public class CreatureController extends EntityController implements ICreatureCon // TODO: All the data is not supposed to be on entities as they become too big, but I don't want these here either private final Creature creature; private final StateMachine stateMachine; - private float taskDuration = 0.0f; - private boolean taskStarted = false; private float motionless = 0; public CreatureController(EntityId entityId, EntityData entityData, Creature creature, INavigationService navigationService, @@ -264,7 +262,6 @@ public void unassingCurrentTask() { assignedTask.unassign(this); entityData.removeComponent(entityId, TaskComponent.class); } - taskStarted = false; } @Override @@ -395,9 +392,12 @@ public boolean isWorker() { @Override public void executeAssignedTask() { - taskStarted = true; + TaskComponent taskComponent = entityData.getComponent(entityId, TaskComponent.class); + if (!taskComponent.taskStarted) { + entityData.setComponent(entityId, new TaskComponent(taskComponent.taskId, taskComponent.targetEntity, taskComponent.targetLocation, taskComponent.taskType, taskComponent.taskDuration, true)); + } if (isAssignedTaskValid()) { - getAssignedTask().executeTask(this, taskDuration); + getAssignedTask().executeTask(this, taskComponent.taskDuration); } } @@ -828,8 +828,9 @@ public void processTick(float tpf, double gameTime) { } // Task timer - if (taskStarted) { - taskDuration += tpf; + TaskComponent taskComponent = entityData.getComponent(entityId, TaskComponent.class); + if (taskComponent != null && taskComponent.taskStarted) { + entityData.setComponent(entityId, new TaskComponent(taskComponent.taskId, taskComponent.targetEntity, taskComponent.targetLocation, taskComponent.taskType, taskComponent.taskDuration + tpf, taskComponent.taskStarted)); } stateMachine.update(); @@ -908,9 +909,8 @@ public void setAssignedTask(Task task) { // Unassign previous task unassingCurrentTask(); - taskDuration = 0.0f; //workNavigationRequired = true; - entityData.setComponent(entityId, new TaskComponent(task.getId(), task.getTaskTarget(), task.getTaskLocation(), task.getTaskType())); + entityData.setComponent(entityId, new TaskComponent(task.getId(), task.getTaskTarget(), task.getTaskLocation(), task.getTaskType(), 0.0f, false)); } @Override diff --git a/src/toniarts/openkeeper/game/task/TaskManager.java b/src/toniarts/openkeeper/game/task/TaskManager.java index 6597105ea..c1b577e61 100644 --- a/src/toniarts/openkeeper/game/task/TaskManager.java +++ b/src/toniarts/openkeeper/game/task/TaskManager.java @@ -233,6 +233,10 @@ private void processChangedTasks(Set entities) { for (Entity entity : entities) { long taskId = entity.get(TaskComponent.class).taskId; Long oldTaskId = tasksIdsByEntities.put(entity.getId(), taskId); + if (oldTaskId != null && taskId == oldTaskId) { + continue; + } + Task task = tasksByIds.get(oldTaskId); if (task != null) { task.unassign(creaturesController.createController(entity.getId())); From a3ab19c07566cc8b8720d80328229f9aad62bc20 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Fri, 5 Jul 2024 18:09:09 +0300 Subject: [PATCH 39/47] Detect experience gain from training --- .../game/logic/CreatureExperienceSystem.java | 146 +++++++++++++----- 1 file changed, 104 insertions(+), 42 deletions(-) diff --git a/src/toniarts/openkeeper/game/logic/CreatureExperienceSystem.java b/src/toniarts/openkeeper/game/logic/CreatureExperienceSystem.java index 807d3babb..6984f5ebc 100644 --- a/src/toniarts/openkeeper/game/logic/CreatureExperienceSystem.java +++ b/src/toniarts/openkeeper/game/logic/CreatureExperienceSystem.java @@ -21,15 +21,21 @@ import com.simsilica.es.EntityData; import com.simsilica.es.EntityId; import com.simsilica.es.EntitySet; +import com.simsilica.es.filter.AndFilter; +import com.simsilica.es.filter.FieldFilter; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; +import java.util.function.Supplier; import toniarts.openkeeper.game.component.CreatureAi; import toniarts.openkeeper.game.component.CreatureComponent; import toniarts.openkeeper.game.component.CreatureExperience; +import toniarts.openkeeper.game.component.TaskComponent; import toniarts.openkeeper.game.controller.ICreaturesController; import toniarts.openkeeper.game.controller.creature.CreatureState; +import toniarts.openkeeper.game.task.TaskType; +import toniarts.openkeeper.tools.convert.map.Creature; import toniarts.openkeeper.tools.convert.map.KwdFile; import toniarts.openkeeper.tools.convert.map.Variable; import toniarts.openkeeper.utils.Utils; @@ -44,11 +50,19 @@ */ public class CreatureExperienceSystem implements IGameLogicUpdatable { + private enum ExperienceGainReason { + NONE, + WORKING_OR_FIGHTING, + TRAINING + } + private final KwdFile kwdFile; private final EntitySet experienceEntities; + private final EntitySet trainingEntities; private final EntityData entityData; private final int impExperienceGainPerSecond; - private final SafeArrayList entityIds; + private final SafeArrayList experienceEntityIds; + private final SafeArrayList trainingEntityIds; private final ICreaturesController creaturesController; private final Map timeWorkingByEntityId = new HashMap<>(); @@ -58,75 +72,97 @@ public CreatureExperienceSystem(EntityData entityData, KwdFile kwdFile, this.kwdFile = kwdFile; this.entityData = entityData; this.creaturesController = creaturesController; - entityIds = new SafeArrayList<>(EntityId.class); + experienceEntityIds = new SafeArrayList<>(EntityId.class); + trainingEntityIds = new SafeArrayList<>(EntityId.class); impExperienceGainPerSecond = (int) gameSettings.get(Variable.MiscVariable.MiscType.IMP_EXPERIENCE_GAIN_PER_SECOND).getValue(); experienceEntities = entityData.getEntities(CreatureComponent.class, CreatureExperience.class, CreatureAi.class); - processAddedEntities(experienceEntities); + trainingEntities = entityData.getEntities(new AndFilter(TaskComponent.class, new FieldFilter(TaskComponent.class, "taskStarted", true), new FieldFilter(TaskComponent.class, "taskType", TaskType.TRAIN)), CreatureComponent.class, CreatureExperience.class, CreatureAi.class, TaskComponent.class); + processAddedEntities(experienceEntities, experienceEntityIds); + processAddedEntities(trainingEntities, trainingEntityIds); } @Override public void processTick(float tpf, double gameTime) { if (experienceEntities.applyChanges()) { - processAddedEntities(experienceEntities.getAddedEntities()); + processAddedEntities(experienceEntities.getAddedEntities(), experienceEntityIds); - processDeletedEntities(experienceEntities.getRemovedEntities()); + processDeletedEntities(experienceEntities.getRemovedEntities(), experienceEntityIds); + } + + if (trainingEntities.applyChanges()) { + + processAddedEntities(trainingEntities.getAddedEntities(), trainingEntityIds); + + processDeletedEntities(trainingEntities.getRemovedEntities(), trainingEntityIds); } // Increase the experience level of those who are worthy - for (EntityId entityId : entityIds.getArray()) { + for (EntityId entityId : experienceEntityIds.getArray()) { Entity entity = experienceEntities.getEntity(entityId); - CreatureExperience creatureExperience = entity.get(CreatureExperience.class); - if (creatureExperience.level >= Utils.MAX_CREATURE_LEVEL) { - continue; - } + handleEntity(entity, entityId, tpf, () -> { + return isEntityWorkingOrFighting(entity) ? ExperienceGainReason.WORKING_OR_FIGHTING : ExperienceGainReason.NONE; + }); + } + for (EntityId entityId : trainingEntityIds.getArray()) { + Entity entity = trainingEntities.getEntity(entityId); + handleEntity(entity, entityId, tpf, () -> { + return ExperienceGainReason.TRAINING; + }); + } + } - // Check if we can gain exp - if (isEntityWorkingOrFighting(entity)) { - double timeWorking = timeWorkingByEntityId.compute(entityId, (k, v) -> { - if (v == null) { - return 0.0; - } - return v + tpf; - }); - - // Increase the exp - if (timeWorking >= 1) { - timeWorkingByEntityId.merge(entityId, -1.0, Double::sum); - - CreatureComponent creatureComponent = entity.get(CreatureComponent.class); - int experience = creatureExperience.experience; - if (kwdFile.getImp().getId() == creatureComponent.creatureId) { - experience += impExperienceGainPerSecond; - } else { - experience += creatureExperience.experiencePerSecond; - } - - // See if we gained a level - if (experience >= creatureExperience.experienceToNextLevel) { - experience -= creatureExperience.experienceToNextLevel; - creaturesController.levelUpCreature(entityId, creatureExperience.level + 1, experience); - } else { - entityData.setComponent(entityId, new CreatureExperience(creatureExperience.level, experience, creatureExperience.experienceToNextLevel, creatureExperience.experiencePerSecond, creatureExperience.experiencePerSecondTraining)); - } - } + private void handleEntity(Entity entity, EntityId entityId, float tpf, Supplier reasonSupplier) { + CreatureExperience creatureExperience = entity.get(CreatureExperience.class); + if (creatureExperience.level >= Utils.MAX_CREATURE_LEVEL) { + return; + } + + // Check if we can gain exp + ExperienceGainReason reason = reasonSupplier.get(); + if (reason == ExperienceGainReason.NONE) { + return; + } + + double timeWorking = timeWorkingByEntityId.compute(entityId, (k, v) -> { + if (v == null) { + return 0.0; } + return v + tpf; + }); + + // Increase the exp + if (timeWorking < 1) { + return; + } + + timeWorkingByEntityId.merge(entityId, -1.0, Double::sum); + int experience = creatureExperience.experience + getCreatureExperienceGain(entity, reason); + + // See if we gained a level + if (experience >= creatureExperience.experienceToNextLevel) { + experience -= creatureExperience.experienceToNextLevel; + creaturesController.levelUpCreature(entityId, creatureExperience.level + 1, experience); + } else { + entityData.setComponent(entityId, new CreatureExperience(creatureExperience.level, experience, creatureExperience.experienceToNextLevel, creatureExperience.experiencePerSecond, creatureExperience.experiencePerSecondTraining)); } } - private void processAddedEntities(Set entities) { + private void processAddedEntities(Set entities, SafeArrayList entityIds) { for (Entity entity : entities) { int index = Collections.binarySearch(entityIds, entity.getId()); entityIds.add(~index, entity.getId()); } } - private void processDeletedEntities(Set entities) { + private void processDeletedEntities(Set entities, SafeArrayList entityIds) { for (Entity entity : entities) { int index = Collections.binarySearch(entityIds, entity.getId()); entityIds.remove(index); + + // Logically it can't be on the two lists at the same time timeWorkingByEntityId.remove(entity.getId()); } } @@ -142,6 +178,30 @@ private boolean isWorker(Entity entity) { return creatureComponent.worker; } + private int getCreatureExperienceGain(Entity entity, ExperienceGainReason reason) { + switch (reason) { + case WORKING_OR_FIGHTING -> { + CreatureComponent creatureComponent = entity.get(CreatureComponent.class); + if (kwdFile.getImp().getId() == creatureComponent.creatureId) { + return impExperienceGainPerSecond; + } else { + return entity.get(CreatureExperience.class).experiencePerSecond; + } + } + case TRAINING -> { + Creature creature = kwdFile.getCreature(entity.get(CreatureComponent.class).creatureId); + Map stats = kwdFile.getCreatureStats(entity.get(CreatureExperience.class).level); + + return stats != null + ? stats.get(Variable.CreatureStats.StatType.EXPERIENCE_POINTS_FROM_TRAINING_PER_SECOND).getValue() + : creature.getAttributes().getExpPerSecondTraining(); + } + default -> { + return 0; + } + } + } + @Override public void start() { @@ -150,8 +210,10 @@ public void start() { @Override public void stop() { experienceEntities.release(); + trainingEntities.release(); timeWorkingByEntityId.clear(); - entityIds.clear(); + experienceEntityIds.clear(); + trainingEntityIds.clear(); } } From 4eabb68f8ac32bdb66a14de3c86d6b2df92269b0 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Fri, 5 Jul 2024 18:52:56 +0300 Subject: [PATCH 40/47] Better exit condition --- src/toniarts/openkeeper/game/task/TaskManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/toniarts/openkeeper/game/task/TaskManager.java b/src/toniarts/openkeeper/game/task/TaskManager.java index c1b577e61..1200c1526 100644 --- a/src/toniarts/openkeeper/game/task/TaskManager.java +++ b/src/toniarts/openkeeper/game/task/TaskManager.java @@ -233,7 +233,7 @@ private void processChangedTasks(Set entities) { for (Entity entity : entities) { long taskId = entity.get(TaskComponent.class).taskId; Long oldTaskId = tasksIdsByEntities.put(entity.getId(), taskId); - if (oldTaskId != null && taskId == oldTaskId) { + if (oldTaskId == null || taskId == oldTaskId) { continue; } From 1ecf31269b26d5e4dd1b153fa641435b4934eb76 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Fri, 5 Jul 2024 19:46:48 +0300 Subject: [PATCH 41/47] Better syntax --- src/toniarts/openkeeper/utils/WorldUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/toniarts/openkeeper/utils/WorldUtils.java b/src/toniarts/openkeeper/utils/WorldUtils.java index 1c43557d4..6d6d0f65c 100644 --- a/src/toniarts/openkeeper/utils/WorldUtils.java +++ b/src/toniarts/openkeeper/utils/WorldUtils.java @@ -146,7 +146,7 @@ public static Point[] getSurroundingTiles(IMapDataInformation mapData, Point poi addIfValidCoordinate(mapData, point.x + 1, point.y + 1, tileCoords); // SE } - return tileCoords.toArray(new Point[0]); + return tileCoords.toArray(Point[]::new); } private static void addIfValidCoordinate(IMapDataInformation mapData, final int x, final int y, List tileCoords) { From 42804c627fc0f9a7939f8ae2435dd41d634a1094 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Fri, 5 Jul 2024 19:47:54 +0300 Subject: [PATCH 42/47] Allow other tasks use the finding nearby tile algorithm --- .../openkeeper/game/task/AbstractTask.java | 29 +++++++++++++++++++ .../game/task/worker/DigTileTask.java | 19 +----------- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/toniarts/openkeeper/game/task/AbstractTask.java b/src/toniarts/openkeeper/game/task/AbstractTask.java index fb6b66e70..32b8824a6 100644 --- a/src/toniarts/openkeeper/game/task/AbstractTask.java +++ b/src/toniarts/openkeeper/game/task/AbstractTask.java @@ -158,6 +158,35 @@ protected boolean isReachable(ICreatureController creature, Vector2f target) { return (navigationService.findPath(WorldUtils.vectorToPoint(creature.getPosition()), targetTile, creature) != null); } + /** + * Tries to find a accessible target, a tile next to a tile where the task + * is supposed to happen + * + * @param creature the creature trying to reach this + * @return task location next to the wanted tile + */ + protected Vector2f getAccessibleTargetNextToLocation(ICreatureController creature) { + for (Point taskPerformLocation : WorldUtils.getSurroundingTiles(mapController.getMapData(), getTaskLocation(), false)) { + for (Point p : WorldUtils.getSurroundingTiles(mapController.getMapData(), getTaskLocation(), false)) { + if (p.equals(getTaskLocation())) { + continue; + } + + if (!navigationService.isAccessible(mapController.getMapData().getTile(p), mapController.getMapData().getTile(taskPerformLocation), creature)) { + continue; + } + + // TODO: intelligent coordinates? + Vector2f target = new Vector2f(p.x, p.y); + if (isReachable(creature, target)) { + return target; + } + } + } + + return null; + } + @Override public boolean isFaceTarget() { return false; diff --git a/src/toniarts/openkeeper/game/task/worker/DigTileTask.java b/src/toniarts/openkeeper/game/task/worker/DigTileTask.java index a8499d6cc..b538bea8b 100644 --- a/src/toniarts/openkeeper/game/task/worker/DigTileTask.java +++ b/src/toniarts/openkeeper/game/task/worker/DigTileTask.java @@ -24,7 +24,6 @@ import toniarts.openkeeper.game.navigation.INavigationService; import toniarts.openkeeper.game.task.AbstractTileTask; import toniarts.openkeeper.game.task.TaskType; -import toniarts.openkeeper.utils.WorldUtils; /** * Dig a tile task, for workers @@ -45,23 +44,7 @@ public int getMaxAllowedNumberOfAsignees() { @Override public Vector2f getTarget(ICreatureController creature) { - - // Find an accessible target - // TODO: entity's location? - for (Point taskPerformLocation : WorldUtils.getSurroundingTiles(mapController.getMapData(), getTaskLocation(), false)) { - for (Point p : WorldUtils.getSurroundingTiles(mapController.getMapData(), getTaskLocation(), false)) { - if (navigationService.isAccessible(mapController.getMapData().getTile(p), mapController.getMapData().getTile(taskPerformLocation), creature)) { - - // TODO: intelligent coordinates? - Vector2f target = new Vector2f(p.x, p.y); - if (isReachable(creature, target)) { - return target; - } - } - } - } - - return null; + return getAccessibleTargetNextToLocation(creature); } @Override From fc95a1602123b8a66a6afed8380778b58114d722 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Fri, 5 Jul 2024 19:48:55 +0300 Subject: [PATCH 43/47] Have the creatures face training equipment instead of going inside them --- .../openkeeper/game/task/creature/Train.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/toniarts/openkeeper/game/task/creature/Train.java b/src/toniarts/openkeeper/game/task/creature/Train.java index 9ea327f71..b0135874f 100644 --- a/src/toniarts/openkeeper/game/task/creature/Train.java +++ b/src/toniarts/openkeeper/game/task/creature/Train.java @@ -32,7 +32,6 @@ import toniarts.openkeeper.tools.convert.map.Variable; import toniarts.openkeeper.tools.convert.map.Variable.MiscVariable; import toniarts.openkeeper.tools.convert.map.Variable.MiscVariable.MiscType; -import toniarts.openkeeper.utils.WorldUtils; /** * Trains creature @@ -66,7 +65,12 @@ public boolean isValid(ICreatureController creature) { @Override public Vector2f getTarget(ICreatureController creature) { - return WorldUtils.pointToVector2f(getTaskLocation()); // FIXME 0.5f not needed? + return getAccessibleTargetNextToLocation(creature); + } + + @Override + public boolean isFaceTarget() { + return true; } @Override @@ -91,4 +95,8 @@ public TaskType getTaskType() { return TaskType.TRAIN; } + @Override + public boolean isRemovable() { + return true; + } } From c45f5ba64ba727a8dbfeb316e9309d6007dbb185 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Fri, 5 Jul 2024 19:57:38 +0300 Subject: [PATCH 44/47] Animate research and training --- src/toniarts/openkeeper/game/logic/CreatureViewSystem.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/toniarts/openkeeper/game/logic/CreatureViewSystem.java b/src/toniarts/openkeeper/game/logic/CreatureViewSystem.java index 76723b711..e81d97b57 100644 --- a/src/toniarts/openkeeper/game/logic/CreatureViewSystem.java +++ b/src/toniarts/openkeeper/game/logic/CreatureViewSystem.java @@ -32,6 +32,7 @@ import toniarts.openkeeper.game.component.Unconscious; import toniarts.openkeeper.game.controller.creature.CreatureState; import toniarts.openkeeper.game.task.TaskType; +import static toniarts.openkeeper.game.task.TaskType.TRAIN; import toniarts.openkeeper.tools.convert.map.Creature; /** @@ -161,6 +162,10 @@ private static Creature.AnimationType getAnimation(TaskType taskType) { return Creature.AnimationType.SLEEPING; case DIG_TILE: return Creature.AnimationType.MELEE_ATTACK; + case TRAIN: + return Creature.AnimationType.MELEE_ATTACK; + case RESEARCH: + return Creature.AnimationType.RESEARCHING; default: return Creature.AnimationType.STAND_STILL; } From 0221603e6baf5ae1cec3ba12a4a4990e25b686ee Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Fri, 5 Jul 2024 23:04:19 +0300 Subject: [PATCH 45/47] Fixed some coding issues --- .../room/storage/RoomTraineeControl.java | 2 +- .../openkeeper/game/task/TaskManager.java | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/toniarts/openkeeper/game/controller/room/storage/RoomTraineeControl.java b/src/toniarts/openkeeper/game/controller/room/storage/RoomTraineeControl.java index a0f23c398..8f2fd7b60 100644 --- a/src/toniarts/openkeeper/game/controller/room/storage/RoomTraineeControl.java +++ b/src/toniarts/openkeeper/game/controller/room/storage/RoomTraineeControl.java @@ -36,7 +36,7 @@ */ public abstract class RoomTraineeControl extends AbstractRoomObjectControl { - public RoomTraineeControl(KwdFile kwdFile, IRoomController parent, IObjectsController objectsController, IGameTimer gameTimer) { + protected RoomTraineeControl(KwdFile kwdFile, IRoomController parent, IObjectsController objectsController, IGameTimer gameTimer) { super(kwdFile, parent, objectsController, gameTimer); } diff --git a/src/toniarts/openkeeper/game/task/TaskManager.java b/src/toniarts/openkeeper/game/task/TaskManager.java index 1200c1526..977a57763 100644 --- a/src/toniarts/openkeeper/game/task/TaskManager.java +++ b/src/toniarts/openkeeper/game/task/TaskManager.java @@ -656,27 +656,29 @@ private static Integer getShortestDistance(Point currentPosition, Point... coord private AbstractTask getRoomTask(ObjectType objectType, Point target, EntityId targetEntity, ICreatureController creature, IRoomController room) { switch (objectType) { - case GOLD: { + case GOLD -> { return new CarryGoldToTreasuryTask(navigationService, mapController, target, creature.getOwnerId(), room, gameWorldController); } - case LAIR: { + case LAIR -> { return new ClaimLair(navigationService, mapController, target, creature.getOwnerId(), room, this); } - case RESEARCHER: { + case RESEARCHER -> { return new Research(navigationService, mapController, target, creature.getOwnerId(), room, this, playerControllers.get(creature.getOwnerId()).getResearchControl(), objectsController); } - case PRISONER: { + case PRISONER -> { return new CarryEnemyCreatureToPrison(navigationService, mapController, target, creature.getOwnerId(), room, this, creaturesController.createController(targetEntity)); } - case SPECIAL: - case SPELL_BOOK: { + case SPECIAL, SPELL_BOOK -> { return new CarryObjectToStorageTask(navigationService, mapController, target, creature.getOwnerId(), room, this, objectsController.createController(targetEntity)); } - case TRAINEE: { + case TRAINEE -> { return new Train(navigationService, mapController, target, creature.getOwnerId(), room, this, gameWorldController, gameSettings, playerControllers.get(creature.getOwnerId())); } + default -> { + logger.log(Level.DEBUG, "No task defined for " + objectType); + return null; + } } - return null; } protected void removeRoomTask(AbstractCapacityCriticalRoomTask task) { From 62029d5c06e66f5f179ef0deb0fd20452443cabb Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Fri, 5 Jul 2024 23:14:03 +0300 Subject: [PATCH 46/47] Refactor to try to reduce complexity --- .../controller/RoomControllerFactory.java | 103 +++++++++--------- .../view/text/CreatureTextParser.java | 60 ++++++---- 2 files changed, 91 insertions(+), 72 deletions(-) diff --git a/src/toniarts/openkeeper/game/controller/RoomControllerFactory.java b/src/toniarts/openkeeper/game/controller/RoomControllerFactory.java index 8b177fd18..8d3b132f4 100644 --- a/src/toniarts/openkeeper/game/controller/RoomControllerFactory.java +++ b/src/toniarts/openkeeper/game/controller/RoomControllerFactory.java @@ -55,69 +55,70 @@ private RoomControllerFactory() { public static IRoomController constructRoom(KwdFile kwdFile, RoomInstance roomInstance, IObjectsController objectsController, Map 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 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); } } diff --git a/src/toniarts/openkeeper/view/text/CreatureTextParser.java b/src/toniarts/openkeeper/view/text/CreatureTextParser.java index c81d9f5f6..d226e0a82 100644 --- a/src/toniarts/openkeeper/view/text/CreatureTextParser.java +++ b/src/toniarts/openkeeper/view/text/CreatureTextParser.java @@ -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 From 3d6f5c3e7dae50d686cd5465ec56f45a88793303 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 6 Jul 2024 10:36:10 +0300 Subject: [PATCH 47/47] Check if the wanted coordinate is actually valid for dropping gold --- .../game/controller/room/storage/RoomGoldControl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/toniarts/openkeeper/game/controller/room/storage/RoomGoldControl.java b/src/toniarts/openkeeper/game/controller/room/storage/RoomGoldControl.java index 6577147f7..31c2bc5e7 100644 --- a/src/toniarts/openkeeper/game/controller/room/storage/RoomGoldControl.java +++ b/src/toniarts/openkeeper/game/controller/room/storage/RoomGoldControl.java @@ -48,7 +48,7 @@ public RoomGoldControl(KwdFile kwdFile, IRoomController parent, IObjectsControll @Override public Integer addItem(Integer sum, Point p) { - if (p != null) { + if (p != null && parent.isTileAccessible(null, p)) { sum = putGold(sum, p); }