diff --git a/src/main/java/cactusServer/entities/AddressedEntity.java b/src/main/java/cactusServer/entities/AddressedEntity.java deleted file mode 100644 index d66bee5..0000000 --- a/src/main/java/cactusServer/entities/AddressedEntity.java +++ /dev/null @@ -1,26 +0,0 @@ -package cactusServer.entities; - -/** - * �e���\�[�X��POST�ō쐬�����ۂ�, ���Y���\�[�X�̎��̂�URI���Ăяo�����ɕԂ��Ƃ��ɗp����N���X - * @author r-isitani - * - */ -public abstract class AddressedEntity { - private Entity body; - - protected AddressedEntity() { - // JSONDecode���̌Ăяo���p - } - - public AddressedEntity(Entity body) { - setBody(body); - } - - public Entity getBody() { - return body; - } - - public void setBody(Entity body) { - this.body = body; - } -} diff --git a/src/main/java/cactusServer/entities/Character.java b/src/main/java/cactusServer/entities/Character.java index d45e75b..a495421 100644 --- a/src/main/java/cactusServer/entities/Character.java +++ b/src/main/java/cactusServer/entities/Character.java @@ -1,9 +1,6 @@ package cactusServer.entities; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; -import java.util.Map; import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D; @@ -68,8 +65,8 @@ } @JSONHint(ignore = true) - public List getItems() { - return new ArrayList(itemMap.values()); + public HashMap getItems() { + return itemMap; } public void setAccountURI(String accountURI) { @@ -96,13 +93,15 @@ this.areaURI = areaURI; } - public AddressedEntity createItem(String name, int amount) { + public HashMap createItem(String name, int amount) { Item item = new Item(name, amount); if (!hasItem(item)) { String id = RandomStringGenerator.generateUniqueString(Item.UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, itemMap.keySet()); itemMap.put(id, item); - return new IDAddressedEntity(id, item); + HashMap returnMap = new HashMap<>(); + returnMap.put(id, item); + return returnMap; } return null; } @@ -131,7 +130,7 @@ private String findAreaURI(Instance instance) { // �L�����N�^�[�̃|�W�V������p���Ăǂ̃G���A���ɂ��邩�𔻒肵�ē��Y�G���A��URI�ɍX�V���� - for (String areaId : instance.getAreaIdSet()) { + for (String areaId : instance.getAreas().keySet()) { Area area = instance.getArea(areaId); if (area.isSurroundingPosition(position)) { int subStringEndIndex = areaURI.length() - Area.UNIQUE_ID_LENGTH; diff --git a/src/main/java/cactusServer/entities/IDAddressedEntity.java b/src/main/java/cactusServer/entities/IDAddressedEntity.java deleted file mode 100644 index 4ca3a59..0000000 --- a/src/main/java/cactusServer/entities/IDAddressedEntity.java +++ /dev/null @@ -1,22 +0,0 @@ -package cactusServer.entities; - -public class IDAddressedEntity extends AddressedEntity{ - private String id; - - private IDAddressedEntity() { - // JSONDecode���̌Ăяo���p - } - - public IDAddressedEntity(String id, Entity body) { - super(body); - setId(id); - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } -} diff --git a/src/main/java/cactusServer/entities/Instance.java b/src/main/java/cactusServer/entities/Instance.java index fb2aa1d..54ab95a 100644 --- a/src/main/java/cactusServer/entities/Instance.java +++ b/src/main/java/cactusServer/entities/Instance.java @@ -1,14 +1,8 @@ package cactusServer.entities; -import java.io.IOException; -import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; -import java.util.List; -import java.util.Set; -import org.ntlab.radishforandroidstudio.framework.model3D.ModelFactory; -import org.ntlab.radishforandroidstudio.framework.model3D.ModelFileFormatException; import org.ntlab.radishforandroidstudio.framework.model3D.Object3D; import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D; @@ -21,6 +15,7 @@ import cactusServer.entities.Object; import cactusServer.entities.Area.Allowed; import cactusServer.entities.Object.Attribute; +import cactusServer.models.StageModelManager; import cactusServer.utils.RandomStringGenerator; import cactusServer.entities.Character; import net.arnx.jsonic.JSONHint; @@ -48,28 +43,19 @@ // JSONDecode���̌Ăяo���p } - public Instance(String name, State state, int stageID) { + public Instance(String name, int stageID) { setName(name); - setState(state); + setState(Instance.State.AVAILABLE); setStageID(stageID); - //initUniverse(); + // initUniverse(); } private void initUniverse() { universe = new Universe(); - - // stageURI�����ɂ��ēǂݍ��ރX�e�[�W�̃t�@�C����(���΃p�X)�����\�� - String stageFileName = ""; - // �X�e�[�W��3D�f�[�^��ǂݍ��ݔz�u���� - Object3D stageObj; - try { - stageObj = ModelFactory.loadModel(stageFileName, null, false, true).createObject(); - stage = new Ground(stageObj); - universe.place(stage); - } catch (IOException | ModelFileFormatException e) { - e.printStackTrace(); - } + Object3D stageObj = StageModelManager.getInstance().getStage(stageID).createObject(); + stage = new Ground(stageObj); + universe.place(stage); } public String getName() { @@ -90,8 +76,8 @@ } @JSONHint(ignore = true) - public Set getAreaIdSet() { - return areaMap.keySet(); + public HashMap getAreas() { + return areaMap; } public Area getArea(String areaId) { @@ -99,8 +85,8 @@ } @JSONHint(ignore = true) - public Set getObjIdSet() { - return objMap.keySet(); + public HashMap getObjects() { + return objMap; } public Object getObject(String objId) { @@ -108,8 +94,8 @@ } @JSONHint(ignore = true) - public List getCharacters() { - return new ArrayList(characterMap.values()); + public HashMap getCharacters() { + return characterMap; } public Character getCharacter(String characterId) { @@ -128,33 +114,39 @@ this.stageID = stageURI; } - public IDAddressedEntity createArea(String name, Plain[] region, HashSet permissions) { + public HashMap createArea(String name, Plain[] region, HashSet permissions) { String id = RandomStringGenerator.generateUniqueString(Area.UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, areaMap.keySet()); Area area = new Area(name, region, permissions); areaMap.put(id, area); - return new IDAddressedEntity(id, area); + HashMap returnMap = new HashMap<>(); + returnMap.put(id, area); + return returnMap; } - public IDAddressedEntity createObject(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, - Quaternion3D angle, Attribute attribute, String model) { + public HashMap createObject(Position3D position, Velocity3D velocity, + AngularVelocity3D angularVelocity, Quaternion3D angle, Attribute attribute, String model) { String id = RandomStringGenerator.generateUniqueString(Object.UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, objMap.keySet()); Object object = new Object(position, velocity, angularVelocity, angle, attribute, model); objMap.put(id, object); universe.place(object.getPlaceable()); - return new IDAddressedEntity(id, object); + HashMap returnMap = new HashMap<>(); + returnMap.put(id, object); + return returnMap; } - public IDAddressedEntity createCharacter(String instanceId, String accountURI, String name, Position3D position, - Quaternion3D angle, String modelID) { + public HashMap createCharacter(String instanceId, String accountURI, String name, + Position3D position, Quaternion3D angle, String modelID) { String id = RandomStringGenerator.generateUniqueString(Character.UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, characterMap.keySet()); Character character = new Character(instanceId, accountURI, name, position, angle, Integer.parseInt(modelID)); characterMap.put(id, character); - return new IDAddressedEntity(id, character); + HashMap returnMap = new HashMap<>(); + returnMap.put(id, character); + return returnMap; } - + public Instance update(Instance.State state) { setState(state); return this; diff --git a/src/main/java/cactusServer/entities/Item.java b/src/main/java/cactusServer/entities/Item.java index 0055397..91ad0f3 100644 --- a/src/main/java/cactusServer/entities/Item.java +++ b/src/main/java/cactusServer/entities/Item.java @@ -2,15 +2,17 @@ import net.arnx.jsonic.JSONHint; -public class Item extends Entity{ +public class Item extends Entity { private String name; private int amount; - @JSONHint(ignore = true) public static final int UNIQUE_ID_LENGTH = 12; - + + @JSONHint(ignore = true) + public static final int UNIQUE_ID_LENGTH = 12; + private Item() { // JSONDecode���̌Ăяo���p } - + public Item(String name, int amount) { setName(name); setAmount(amount); @@ -19,15 +21,15 @@ public String getName() { return name; } - + public int getAmount() { return amount; } - + public boolean isEmpty() { return (amount == 0); } - + public void setName(String name) { this.name = name; } @@ -35,26 +37,26 @@ public void setAmount(int amount) { this.amount = amount; } - + public Item changeAmount(int amountOfChange) { amount = Math.max(amount + amountOfChange, 0); return this; } - + @Override public int hashCode() { int result = 17; result = result * 31 + name.hashCode(); return result; } - + @Override public boolean equals(java.lang.Object obj) { if (this == obj) { return true; } if (obj instanceof Item) { - Item item = (Item)obj; + Item item = (Item) obj; if (this.name.equals(item.name)) { return true; // �����̃A�C�e���͓��� } diff --git a/src/main/java/cactusServer/entities/Player.java b/src/main/java/cactusServer/entities/Player.java index a0945b8..7a1566a 100644 --- a/src/main/java/cactusServer/entities/Player.java +++ b/src/main/java/cactusServer/entities/Player.java @@ -1,9 +1,11 @@ package cactusServer.entities; import org.ntlab.radishforandroidstudio.framework.gameMain.Actor; +import org.ntlab.radishforandroidstudio.framework.model3D.Object3D; import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D; +import cactusServer.models.CharacterModelManager; import cactusServer.models.Instances; import net.arnx.jsonic.JSONHint; @@ -28,31 +30,19 @@ setCharacterURI(characterURI); setCameraState(cameraState); setAnimationClassToStart(animationClassToStart); - readCharacterData(characterURI); + Character character = getCharacter(characterURI); + readCharacterData(character); // ����Ȋ����œ��Y�R���X�g���N�^�̍Ō��placeable�̒������s��(��ۃN���X�̎��������܂��c�����Ă��Ȃ�) - // setPlaceable(new Actor()); + // int modelID = character.getModelID(); + // Object3D body = + // CharacterModelManager.getInstance().getCharacterModel(modelID).createObject(); + // setPlaceable(new Actor(body, )); // ��������Instance������Universe��placeable��z�u���� String[] instanceURISplit = instanceURI.split("/"); // �c�c/instances/{instanceId} String instanceId = instanceURISplit[instanceURISplit.length - 1]; Instances.getInstance().getInstance(instanceId).getUniverse().place(this.getPlaceable()); } - private Character getCharacter(String characterURI) { - String[] characterURISplit = characterURI.split("/"); // �c�c/instances/{instanceId}/characters/{characterId} - int splitSize = characterURISplit.length; - String characterId = characterURISplit[splitSize - 1]; - String instanceId = characterURISplit[splitSize - 3]; - return Instances.getInstance().getInstance(instanceId).getCharacter(characterId); - } - - private void readCharacterData(String characterURI) { - Character character = getCharacter(characterURI); - setPosition(character.getPosition()); - setQuaternion3D(character.getQuaternion3D()); - setAreaURI(character.getAreaURI()); - setCharacterURI(characterURI); - } - public String getInstanceURI() { return instanceURI; } @@ -139,7 +129,7 @@ private String findAreaURI(Instance instance) { // �L�����N�^�[�̃|�W�V������p���Ăǂ̃G���A���ɂ��邩�𔻒肵�ē��Y�G���A��URI�ɍX�V���� - for (String areaId : instance.getAreaIdSet()) { + for (String areaId : instance.getAreas().keySet()) { Area area = instance.getArea(areaId); if (area.isSurroundingPosition(position)) { int subStringEndIndex = areaURI.length() - Area.UNIQUE_ID_LENGTH; // �c/{instanceId}/areas/ �܂� @@ -152,7 +142,7 @@ private void updateEmoteType(EmoteState.EmoteType animationClassToStart) { emoteState.setEmoteType(animationClassToStart); } - + public void changeCharacter(String characterURI) { writeCharacterData(this.characterURI); readCharacterData(characterURI); @@ -162,6 +152,26 @@ writeCharacterData(characterURI); } + private Character getCharacter(String characterURI) { + String[] characterURISplit = characterURI.split("/"); // �c�c/instances/{instanceId}/characters/{characterId} + int splitSize = characterURISplit.length; + String characterId = characterURISplit[splitSize - 1]; + String instanceId = characterURISplit[splitSize - 3]; + return Instances.getInstance().getInstance(instanceId).getCharacter(characterId); + } + + private void readCharacterData(Character character) { + setPosition(character.getPosition()); + setQuaternion3D(character.getQuaternion3D()); + setAreaURI(character.getAreaURI()); + setCharacterURI(characterURI); + } + + private void readCharacterData(String characterURI) { + Character character = getCharacter(characterURI); + readCharacterData(character); + } + private void writeCharacterData(String characterURI) { Character character = getCharacter(characterURI); character.update(position, angle, null, areaURI); // model(��3����)�̍X�V�͏o���Ȃ� diff --git a/src/main/java/cactusServer/models/Instances.java b/src/main/java/cactusServer/models/Instances.java index 8eec861..6a96cee 100644 --- a/src/main/java/cactusServer/models/Instances.java +++ b/src/main/java/cactusServer/models/Instances.java @@ -1,17 +1,13 @@ package cactusServer.models; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D; import cactusServer.entities.CameraState; import cactusServer.entities.EmoteState; -import cactusServer.entities.IDAddressedEntity; import cactusServer.entities.Instance; -import cactusServer.entities.Instance.State; import cactusServer.entities.Player; import cactusServer.utils.RandomStringGenerator; @@ -27,9 +23,9 @@ private HashMap playerMap = new HashMap<>(); private Instances() { - //�_�~�[�R�[�h - instanceMap.put("test1", new Instance("test1", State.AVAILABLE, 0)); - instanceMap.put("test2", new Instance("test2", State.AVAILABLE, 1)); + // �_�~�[�R�[�h + instanceMap.put("test1", new Instance("test1", 0)); + instanceMap.put("test2", new Instance("test2", 1)); } /** @@ -44,71 +40,57 @@ return theInstance; } - public IDAddressedEntity createInstance(String name, int stageID) { + public HashMap createInstance(String name, int stageID) { String id = RandomStringGenerator.generateUniqueString(Instance.UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, instanceMap.keySet()); - Instance instance = new Instance(name, Instance.State.AVAILABLE, stageID); + Instance instance = new Instance(name, stageID); instanceMap.put(id, instance); - return new IDAddressedEntity(id, instance); - } - - /** - * InstanceRest�Ƃ̃G���[�����p (��ŏ���) - */ - public IDAddressedEntity createInstance(String name, Instance.State state, String stageID) { - String id = RandomStringGenerator.generateUniqueString(Instance.UNIQUE_ID_LENGTH, - RandomStringGenerator.ALPHA_NUMERIC, instanceMap.keySet()); - Instance instance = new Instance(name, state, Integer.parseInt(stageID)); - instanceMap.put(id, instance); - return new IDAddressedEntity(id, instance); + HashMap returnMap = new HashMap<>(); + returnMap.put(id, instance); + return returnMap; } - public IDAddressedEntity createPlayer(String instanceURI, String characterURI, CameraState cameraState, + public HashMap createPlayer(String instanceURI, String characterURI, CameraState cameraState, EmoteState.EmoteType animationClassToStart) { String id = RandomStringGenerator.generateUniqueString(Player.UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, playerMap.keySet()); Player player = new Player(instanceURI, characterURI, cameraState, animationClassToStart); playerMap.put(id, player); - return new IDAddressedEntity(id, player); - } - - public List getInstances() { - return new ArrayList(instanceMap.values()); + HashMap returnMap = new HashMap<>(); + returnMap.put(id, player); + return returnMap; } - /** - * ID�ɑΉ�����Instance���擾���ĕԂ� - * - * @param instanceId - * �擾������Instance��ID - * @return ID�ɑΉ�����Instance - */ + public HashMap getInstances() { + return instanceMap; + } + public Instance getInstance(String instanceId) { return instanceMap.get(instanceId); } /** * �Splayer��Ԃ� - * @return */ - public List getPlayers() { - return new ArrayList(playerMap.values()); + public HashMap getPlayers() { + return playerMap; } - + /** * ID�ɑΉ�����instance�ɂ���Splayer��Ԃ� + * * @param instanceId - * @return */ - public List getPlayers(String instanceId) { + public HashMap getPlayers(String instanceId) { if (instanceId == null || instanceId.isEmpty()) { return getPlayers(); } - List responsePlayers = new ArrayList<>(); - for (Player player : playerMap.values()) { + HashMap responsePlayers = new HashMap<>(); + for (String id : playerMap.keySet()) { + Player player = playerMap.get(id); String[] instanceURISplit = player.getInstanceURI().split("/"); // �c/instances/{instanceId} if (instanceId.equals(instanceURISplit[instanceURISplit.length - 1])) { - responsePlayers.add(player); + responsePlayers.put(id, player); } } return responsePlayers; @@ -123,7 +105,7 @@ instance.update(state); return instance; } - + public Player updatePlayer(String playerId, String characterURI, Position3D position, Quaternion3D angle, CameraState cameraState, EmoteState.EmoteType animationClassToStart) { Player player = playerMap.get(playerId); @@ -131,13 +113,6 @@ return player; } - /** - * ID�ɑΉ�����Instance��Map����폜���ĕԂ� - * - * @param instanceId - * Instance�����ʂ����ӂ�ID - * @return Map����폜���ꂽInstance - */ public Instance destroyInstance(String instanceId) { return instanceMap.remove(instanceId); }