diff --git a/src/main/java/cactusServer/entities/Character.java b/src/main/java/cactusServer/entities/Character.java index cc22cf3..a8f67f2 100644 --- a/src/main/java/cactusServer/entities/Character.java +++ b/src/main/java/cactusServer/entities/Character.java @@ -15,17 +15,19 @@ private String name; private Position3D position; private Angle angle; -// private Model model; + private Model model; private String areaURI; private HashMap itemMap = new HashMap<>(); private static final int UNIQUE_ID_LENGTH = 12; - public Character(String accountURI, String name, Position3D position, String areaId) { + public Character(String accountURI, String name, Position3D position, Angle angle, Model model) { this.accountURI = accountURI; this.name = name; this.position = position; - this.areaURI = areaId; + this.angle = angle; + this.model = model; + updateAreaURI(); } public String getAccountURI() { @@ -40,7 +42,15 @@ return position; } - public String getAreaId() { + public Angle getAngle() { + return angle; + } + + public Model getModel() { + return model; + } + + public String getAreaURI() { return areaURI; } @@ -97,6 +107,10 @@ return item; } + private void updateAreaURI() { + + } + public Item destroyItem(String itemId) { return itemMap.remove(itemId); } diff --git a/src/main/java/cactusServer/entities/EmoteState.java b/src/main/java/cactusServer/entities/EmoteState.java index 79f20d9..4d2f606 100644 --- a/src/main/java/cactusServer/entities/EmoteState.java +++ b/src/main/java/cactusServer/entities/EmoteState.java @@ -8,11 +8,22 @@ */ public class EmoteState { private EmoteType emoteType; - + public EmoteState(EmoteType emoteType) { this.emoteType = emoteType; } + public EmoteType getEmoteType() { + return emoteType; + } + + public void setEmoteType(EmoteType emoteType) { + if (!this.emoteType.equals(emoteType)) { + this.emoteType = emoteType; + // ���̉��ŃG���[�g�̎�ނ�ύX�������Ƃɂ��K�v�������Ăяo�� + } + } + public static enum EmoteType { // �J�n����G���[�g�̎�ނ̗� } diff --git a/src/main/java/cactusServer/entities/Instance.java b/src/main/java/cactusServer/entities/Instance.java index d7a0a5d..3da95e1 100644 --- a/src/main/java/cactusServer/entities/Instance.java +++ b/src/main/java/cactusServer/entities/Instance.java @@ -9,6 +9,7 @@ import cactusServer.entities.Entity; import cactusServer.entities.Object; +import cactusServer.models.Instances; import cactusServer.utils.RandomStringGenerator; import cactusServer.entities.Character; import framework.model3D.Position3D; @@ -22,24 +23,45 @@ public class Instance extends Entity { private String name; private State state; -// private StageModel stage; - @JSONHint(ignore = true) private HashMap areaMap = new HashMap<>(); - @JSONHint(ignore = true) private HashMap objMap = new HashMap<>(); - @JSONHint(ignore = true) private HashMap characterMap = new HashMap<>(); - @JSONHint(ignore = true) private static final int UNIQUE_ID_LENGTH = 12; + private StageModel stage; + + private HashMap areaMap = new HashMap<>(); + private HashMap objMap = new HashMap<>(); + private HashMap characterMap = new HashMap<>(); + private static final int UNIQUE_ID_LENGTH = 12; + private final String INSTANCE_URI; + /** * (�����͌����_�ł̉��̂���) * @param name �C���X�^���X�� */ + public Instance(String instanceID, String name, State state, StageModel stageModel) { + this.INSTANCE_URI = Instances.INSTANCES_URI + "/" + instanceID; + this.name = name; + this.state = state; + this.stage = stageModel; + } + + /** + * InstancesRest�Ƃ̃G���[�����p (��ŏ���) + * @param name + * @param state + */ public Instance(String name, State state) { this.name = name; this.state = state; + this.INSTANCE_URI = Instances.INSTANCES_URI + "/"; } + /** + * InstancesRest�Ƃ̃G���[�����p (��ŏ���) + * @param name + */ public Instance(String name) { this.name = name; this.state = State.AVAILABLE; + this.INSTANCE_URI = Instances.INSTANCES_URI + "/"; } public String getName() { @@ -50,6 +72,10 @@ return state; } + public StageModel getStage() { + return stage; + } + @JSONHint(ignore = true) public Set getAreaIdSet() { return areaMap.keySet(); @@ -105,30 +131,48 @@ this.state = state; } - public Map createArea(Area area) { + public AddressedEntity createArea(Area area) { String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, areaMap.keySet()); areaMap.put(id, area); - return new HashMap() { - {put(id, area);} - }; - } - - public Map createObject(Object object) { - String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, objMap.keySet()); - objMap.put(id, object); - return new HashMap() { - {put(id, object);} - }; + return new AddressedEntity((INSTANCE_URI + "/areas/" + id), area); } - public Map createCharacter(Character character) { +// public Map createArea(Area area) { +// String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, areaMap.keySet()); +// areaMap.put(id, area); +// return new HashMap() { +// {put(id, area);} +// }; +// } + + public AddressedEntity createObject(Object object) { + String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, objMap.keySet()); + objMap.put(id, object); + return new AddressedEntity((INSTANCE_URI + "/objects/" + id), object); + } + +// public Map createObject(Object object) { +// String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, objMap.keySet()); +// objMap.put(id, object); +// return new HashMap() { +// {put(id, object);} +// }; +// } + + public AddressedEntity createObject(Character character) { String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, characterMap.keySet()); characterMap.put(id, character); - return new HashMap() { - {put(id, character);} - }; + return new AddressedEntity((INSTANCE_URI + "/characters/" + id), character); } +// public Map createCharacter(Character character) { +// String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, characterMap.keySet()); +// characterMap.put(id, character); +// return new HashMap() { +// {put(id, character);} +// }; +// } + public Character updateCharacter(String characterId, Position3D position) { Character character = characterMap.get(characterId); character.setPosition(position); diff --git a/src/main/java/cactusServer/entities/Model.java b/src/main/java/cactusServer/entities/Model.java new file mode 100644 index 0000000..9836744 --- /dev/null +++ b/src/main/java/cactusServer/entities/Model.java @@ -0,0 +1,5 @@ +package cactusServer.entities; + +public class Model { + +} diff --git a/src/main/java/cactusServer/entities/Player.java b/src/main/java/cactusServer/entities/Player.java index 2620cc7..5a02d68 100644 --- a/src/main/java/cactusServer/entities/Player.java +++ b/src/main/java/cactusServer/entities/Player.java @@ -3,7 +3,7 @@ import framework.model3D.Position3D; public class Player extends Entity{ - private String InstanceURI; + private String instanceURI; private String characterURI; private String areaURI; private Position3D position; @@ -11,15 +11,15 @@ private CameraState cameraState; private EmoteState emoteState; - public Player(String InstanceURI, String characterURI, CameraState cameraState, EmoteState.EmoteType animationClassToStart) { - this.InstanceURI = InstanceURI; + public Player(String instanceURI, String characterURI, CameraState cameraState, EmoteState.EmoteType animationClassToStart) { + this.instanceURI = instanceURI; this.characterURI = characterURI; this.cameraState = cameraState; this.emoteState = new EmoteState(animationClassToStart); } public String getInstanceURI() { - return InstanceURI; + return instanceURI; } public String getCharacterURI() { @@ -33,4 +33,40 @@ public Position3D getPosition() { return position; } + + public Angle getAngle() { + return angle; + } + + public CameraState getCameraState() { + return cameraState; + } + + public EmoteState getEmoteState() { + return emoteState; + } + + public void setInstanceURI(String instanceURI) { + this.instanceURI = instanceURI; + } + + public void setCharacterURI(String characterURI) { + this.characterURI = characterURI; + } + + public void setPosition(Position3D position) { + this.position = position; + } + + public void setAngle(Angle angle) { + this.angle = angle; + } + + public void setCameraState(CameraState cameraState) { + this.cameraState = cameraState; + } + + public void updateEmoteType(EmoteState.EmoteType animationClassToStart) { + this.emoteState.setEmoteType(animationClassToStart); + } } diff --git a/src/main/java/cactusServer/entities/StageModel.java b/src/main/java/cactusServer/entities/StageModel.java new file mode 100644 index 0000000..48466d6 --- /dev/null +++ b/src/main/java/cactusServer/entities/StageModel.java @@ -0,0 +1,5 @@ +package cactusServer.entities; + +public class StageModel { + +} diff --git a/src/main/java/cactusServer/models/Instances.java b/src/main/java/cactusServer/models/Instances.java index 18ddea3..16931a3 100644 --- a/src/main/java/cactusServer/models/Instances.java +++ b/src/main/java/cactusServer/models/Instances.java @@ -7,21 +7,26 @@ import org.apache.commons.lang3.RandomStringUtils; import cactusServer.entities.AddressedEntity; +import cactusServer.entities.CameraState; +import cactusServer.entities.EmoteState; import cactusServer.entities.Instance; +import cactusServer.entities.Player; +import cactusServer.entities.StageModel; import cactusServer.utils.RandomStringGenerator; import net.arnx.jsonic.JSONHint; /** * �C���X�^���X���Ǘ�����N���X * - * @author ryo isitani + * @author r-isitani * */ public class Instances { private static Instances theInstance = null; private HashMap instanceMap = new HashMap<>(); // instance��ID�Ǝ��̂��Ǘ� + private HashMap playerMap = new HashMap<>(); private static final int UNIQUE_ID_LENGTH = 12; - private static final String INSTANCES_URI = "/CactusServer/rest/instances/"; + @JSONHint(ignore = true) public static final String INSTANCES_URI = "/CactusServer/rest/instances"; private Instances() { @@ -39,17 +44,19 @@ return theInstance; } -// /** -// * �V����Instance���쐬����Map�ɒlj����� -// * -// * @param instance -// * @return �V�����쐬���ꂽID��Instance��Map -// */ -// public AddressedEntity createInstance(Instance instance) { -// String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, instanceMap.keySet()); -// instanceMap.put(id, instance); -// return new AddressedEntity(URI.create(INSTANCES_URI + id).toString(), instance); -// } + /** + * �V����Instance�N���X���쐬����Map�ɒlj����� + * @param name + * @param state + * @param stageModel + * @return + */ + public AddressedEntity createInstance(String name, Instance.State state, StageModel stageModel) { + String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, instanceMap.keySet()); + Instance instance = new Instance(id, name, state, stageModel); + instanceMap.put(id, instance); + return new AddressedEntity((INSTANCES_URI + "/" + id), instance); + } /** * InstancesRest�Ƃ̃G���[�����p (��ŏ���) @@ -65,17 +72,29 @@ }; } +// /** +// * �V����Player���쐬����Map�ɒlj����� +// * +// * @param plyaer +// * @return �V�����쐬���ꂽID��Instance��Map +// */ +// public AddressedEntity createInstance(Player player) { +// String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, playerMap.keySet()); +// playerMap.put(id, player); +// return new AddressedEntity((INSTANCES_URI + "/" + id), player); +// } + /** - * InstancesRest�̃G���[�����p (�ォ�����) - * @param id - * @param name - * @return + * �V����Player���쐬����Map�ɒlj����� + * + * @param plyaer + * @return �V�����쐬���ꂽID��Instance��Map */ - public Instance createInstance(String id, String name) { -// String id = createUniqueId(UNIQUE_ID_LENGTH, instanceMap.keySet()); - Instance instance = new Instance(name, Instance.State.AVAILABLE); - instanceMap.put(id, instance); - return instance; + public AddressedEntity createPlayer(String instanceURI, String characterURI, CameraState cameraState, EmoteState.EmoteType animationClassToStart) { + String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, playerMap.keySet()); + Player player = new Player(instanceURI, characterURI, cameraState, animationClassToStart); + playerMap.put(id, player); + return new AddressedEntity((INSTANCES_URI + "/players/" + id), player); } /** @@ -88,6 +107,10 @@ public Instance getInstance(String instanceId) { return instanceMap.get(instanceId); } + + public Player getPlayer(String playerId) { + return playerMap.get(playerId); + } /** * ID�ɑΉ�����Instance��Map����폜���ĕԂ� @@ -99,4 +122,8 @@ public Instance destroyInstance(String instanceId) { return instanceMap.remove(instanceId); } + + public Player destroyPlayer(String playerId) { + return playerMap.remove(playerId); + } }