diff --git a/src/main/java/cactusServer/entities/Instance.java b/src/main/java/cactusServer/entities/Instance.java index 930931d..54ed46b 100644 --- a/src/main/java/cactusServer/entities/Instance.java +++ b/src/main/java/cactusServer/entities/Instance.java @@ -2,6 +2,8 @@ import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; import org.ntlab.radishforandroidstudio.framework.model3D.BaseObject3D; import org.ntlab.radishforandroidstudio.framework.model3D.Object3D; @@ -255,6 +257,24 @@ } return null; } + + public void removeDeadBullets() { + Iterator> playersBulletsIt = bulletMap.values().iterator(); + while (playersBulletsIt.hasNext()) { + Map playersBullets = playersBulletsIt.next(); + Iterator> bulletEntryIt = playersBullets.entrySet().iterator(); + while (bulletEntryIt.hasNext()) { + Map.Entry bulletEntry = bulletEntryIt.next(); + Bullet bullet = bulletEntry.getValue(); + if (!bullet.isAlive()) { + String bulletId = bulletEntry.getKey(); + bulletEntryIt.remove(); + universe.displace(bullet.getPlaceable()); + System.out.println(bulletId + "�폜"); + } + } + } + } public static enum State { AVAILABLE, MAINTENANCE; diff --git a/src/main/java/cactusServer/entities/Player.java b/src/main/java/cactusServer/entities/Player.java index e361d32..fc4569e 100644 --- a/src/main/java/cactusServer/entities/Player.java +++ b/src/main/java/cactusServer/entities/Player.java @@ -4,8 +4,6 @@ import org.ntlab.radishforandroidstudio.framework.model3D.Object3D; import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D; -import org.ntlab.radishforandroidstudio.java3d.Box; -import org.ntlab.radishforandroidstudio.java3d.Primitive; import cactusServer.models.CharacterModelManager; import cactusServer.models.Instances; diff --git a/src/main/java/cactusServer/models/Instances.java b/src/main/java/cactusServer/models/Instances.java index 1d1f7b4..755526a 100644 --- a/src/main/java/cactusServer/models/Instances.java +++ b/src/main/java/cactusServer/models/Instances.java @@ -1,6 +1,8 @@ package cactusServer.models; import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D; @@ -133,4 +135,27 @@ player.destroy(); return playerMap.remove(playerId); } + + public void removeInactivePlayers() { + long currentTime = System.nanoTime(); + Iterator> it = playerMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + String playerId = entry.getKey(); + Player player = entry.getValue(); + long lastUpdateTime = player.getLastUpdateTime(); + if (currentTime > (lastUpdateTime + Player.INACTIVE_TIME_LIMIT)) { + System.out.println("delete started (playerId: " + playerId + ")"); + player.destroy(); + it.remove(); + System.out.println("delete finished (playerId: " + playerId + ")"); + } + } + } + + public void removeDeadBullets() { + for (Instance instance : instanceMap.values()) { + instance.removeDeadBullets(); + } + } } diff --git a/src/main/java/cactusServer/utils/App.java b/src/main/java/cactusServer/utils/App.java index 70e8c2e..a97048a 100644 --- a/src/main/java/cactusServer/utils/App.java +++ b/src/main/java/cactusServer/utils/App.java @@ -63,8 +63,8 @@ @Override public void run() { CollisionManager.getInstance().collisionRun(System.currentTimeMillis() - lasttime); - removeDeadBullets(); - removeInactivePlayers(); + Instances.getInstance().removeInactivePlayers(); + Instances.getInstance().removeDeadBullets(); lasttime = System.currentTimeMillis(); } @@ -90,92 +90,34 @@ accountUri = "/CactusServer/rest/accounts/" + Accounts.getInstance().getAccountByID("test2").getUniqueID(); chara1 = new Character("test2", accountUri, "chara3", new Position3D(), new Quaternion3D(), 0); Instances.getInstance().getInstance("test2").getCharacters().put("chara3", chara1); - /* - // �_�~�[�v���C���[2�� - chara1.setPosition(new Position3D(34.5, 23.4, 19)); - CameraState cameraState = new CameraState(1.24, new Quaternion3D(), 2.38, 3); - Player player1 = new Player("test1", "chara1", null, null); - Instances.getInstance().getPlayers().put("player1", player1); - Player player2 = new Player("test2", "chara2", cameraState, EmoteType.DUMMY); - Instances.getInstance().getPlayers().put("player2", player2); - Player player3 = new Player("test1","chara1",null,null); - Instances.getInstance().getPlayers().put("player3", player3); - */ + +// // �_�~�[�v���C���[3�� +// chara1.setPosition(new Position3D(34.5, 23.4, 19)); +// CameraState cameraState = new CameraState(1.24, new Quaternion3D(), 2.38, 3); +// Player player1 = new Player("test1", "chara1", null, null); +// Instances.getInstance().getPlayers().put("player1", player1); +// Player player2 = new Player("test2", "chara2", cameraState, EmoteType.DUMMY); +// Instances.getInstance().getPlayers().put("player2", player2); +// Player player3 = new Player("test1","chara1",null,null); +// Instances.getInstance().getPlayers().put("player3", player3); + // �_�~�[�I�u�W�F�N�g Instances.getInstance().getInstance("test1").createObject(new Position3D(0, 0, 0), new Velocity3D(), new AngularVelocity3D(), new Quaternion3D(), new Attribute(true, 1), 0); - /* - // �_�~�[�o���b�g - Instances.getInstance().getInstance("test1").createBullet("player1", "testBulletId1", - new Position3D(50, 50, 50), new Quaternion3D()); - Instances.getInstance().getInstance("test1").createBullet("player1", "testBulletId2", - new Position3D(300, 400, 500), new Quaternion3D()); - Instances.getInstance().getInstance("test1").createBullet("player1", "testBulletId3", - new Position3D(110, 110, 110), new Quaternion3D()); - Instances.getInstance().getInstance("test1").createBullet("player1", "testBulletId4", new Position3D(0, 0, 0), - new Quaternion3D()); - Instances.getInstance().getInstance("test1").createBullet("player1", "testBulletId5", - new Position3D(300, 400, 500), new Quaternion3D()); - Instances.getInstance().getInstance("test1").createBullet("player1", "testBulletId6", - new Position3D(300, 400, 500), new Quaternion3D()); + +// // �_�~�[�o���b�g +// Instances.getInstance().getInstance("test1").createBullet("player1", "testBulletId1", +// new Position3D(50, 50, 50), new Quaternion3D()); +// Instances.getInstance().getInstance("test1").createBullet("player1", "testBulletId2", +// new Position3D(300, 400, 500), new Quaternion3D()); +// Instances.getInstance().getInstance("test1").createBullet("player1", "testBulletId3", +// new Position3D(110, 110, 110), new Quaternion3D()); +// Instances.getInstance().getInstance("test1").createBullet("player1", "testBulletId4", +// new Position3D(0, 0, 0), new Quaternion3D()); +// Instances.getInstance().getInstance("test1").createBullet("player1", "testBulletId5", +// new Position3D(300, 400, 500), new Quaternion3D()); +// Instances.getInstance().getInstance("test1").createBullet("player1", "testBulletId6", +// new Position3D(300, 400, 500), new Quaternion3D()); System.out.println("obj"); - */ - // // �m�F�p - // String player1Encode = JSON.encode(player1, true); - // String player2Encode = JSON.encode(player2, true); - // Player player1Decode = JSON.decode(player1Encode, Player.class); - // Player player2Decode = JSON.decode(player2Encode, Player.class); - // System.out.println(JSON.encode(player1Decode, true)); - // System.out.println(JSON.encode(player2Decode, true)); - - // JSON json = new JSON(); - // String characterId = player1.getCharacterID(); - // String encodeCharacterId = json.encode(characterId); - // System.out.println(characterId); - // System.out.println(encodeCharacterId); - // String position = json.encode(player1.getPosition()); - // System.out.println(position); - } - - private void removeInactivePlayers() { - long currentTime = System.nanoTime(); - Iterator> it = Instances.getInstance().getPlayers().entrySet().iterator(); - while (it.hasNext()) { - Map.Entry entry = it.next(); - String playerId = entry.getKey(); - Player player = entry.getValue(); - long lastUpdateTime = player.getLastUpdateTime(); - // System.out.println( - // currentTime + ", " + (lastUpdateTime + Player.STOP_TIME_LIMIT) + " // - // playerId: " + playerId); - if (currentTime > (lastUpdateTime + Player.INACTIVE_TIME_LIMIT)) { - System.out.println("delete started (playerId: " + playerId + ")"); - player.destroy(); - it.remove(); - System.out.println("delete finished (playerId: " + playerId + ")"); - } - } - // System.out.println(); - - } - - private void removeDeadBullets() { - for (Instance instance : Instances.getInstance().getInstances().values()) { - Iterator> playersBulletsIt = instance.getBullets().values().iterator(); - while (playersBulletsIt.hasNext()) { - Map playersBullets = playersBulletsIt.next(); - Iterator> bulletEntryIt = playersBullets.entrySet().iterator(); - while (bulletEntryIt.hasNext()) { - Map.Entry bulletEntry = bulletEntryIt.next(); - Bullet bullet = bulletEntry.getValue(); - if (!bullet.isAlive()) { - String bulletId = bulletEntry.getKey(); - bulletEntryIt.remove(); - instance.getUniverse().displace(bullet.getPlaceable()); - System.out.println(bulletId + "�폜"); - } - } - } - } } } \ No newline at end of file