diff --git a/src/main/java/cactusServer/entities/Character.java b/src/main/java/cactusServer/entities/Character.java index a9bb863..9519233 100644 --- a/src/main/java/cactusServer/entities/Character.java +++ b/src/main/java/cactusServer/entities/Character.java @@ -15,7 +15,7 @@ private String name; private Position3D position; private Angle angle; - private CharacterModel model; + private String model; private String areaURI; private HashMap itemMap = new HashMap<>(); @JSONHint(ignore = true) @@ -26,7 +26,7 @@ } // public Character(String accountURI, String name, Position3D position, Angle - // angle, CharacterModel model) { + // angle, String model) { // setAccountURI(accountURI); // setName(name); // setPosition(position); @@ -36,7 +36,7 @@ // } public Character(String instanceId, String accountURI, String name, Position3D position, Angle angle, - CharacterModel model) { + String model) { setAccountURI(accountURI); setName(name); setPosition(position); @@ -61,7 +61,7 @@ return angle; } - public CharacterModel getModel() { + public String getModel() { return model; } @@ -99,7 +99,7 @@ this.angle = angle; } - public void setModel(CharacterModel model) { + public void setModel(String model) { this.model = model; } @@ -152,6 +152,26 @@ } throw new IllegalStateException("Character is in the unknown area."); } + + public void updateCharacter(Position3D position, Angle angle, String model) { + setPosition(position); + setAngle(angle); + setModel(model); + updateAreaURI(); + } + + private void updateAreaURI() { + String[] areaURISplit = areaURI.split("/"); // �c�c/instances/{instanceId}/areas/{areaId} + int splitSize = areaURISplit.length; + String instanceId = areaURISplit[splitSize - 3]; + String previousAreaId = areaURISplit[splitSize - 1]; + Instance instance = Instances.getInstance().getInstance(instanceId); + Area previousArea = instance.getArea(previousAreaId); + if (!previousArea.isSurroundingPosition(position)) { + // �L�����N�^�[�̃|�W�V������p���Ăǂ̃G���A���ɂ��邩�𔻒肵�ē��Y�G���A��URI�ɍX�V���� + setAreaURI(findAreaURI(instance)); + } + } public Item destroyItem(String itemId) { return itemMap.remove(itemId); diff --git a/src/main/java/cactusServer/entities/Instance.java b/src/main/java/cactusServer/entities/Instance.java index 6d3486d..83500ef 100644 --- a/src/main/java/cactusServer/entities/Instance.java +++ b/src/main/java/cactusServer/entities/Instance.java @@ -112,27 +112,28 @@ } public IDAddressedEntity createObject(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, - Angle angle, Attribute attribute, ObjectModel model) { + Angle 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); return new IDAddressedEntity(id, object); } - - // public IDAddressedEntity createCharacter(String accountURI, String name, - // Position3D position, Angle angle, CharacterModel model) { - // String id = - // RandomStringGenerator.generateUniqueString(Character.UNIQUE_ID_LENGTH, - // RandomStringGenerator.ALPHA_NUMERIC, characterMap.keySet()); - // Character character = new Character(accountURI, name, position, angle, - // model); - // characterMap.put(id, character); - // return new IDAddressedEntity(id, character); - // } + + /** + * InstancesRest�Ƃ̃G���[�����p (��ŏ���) + */ + public IDAddressedEntity createObject(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, + Angle angle, Attribute attribute, ObjectModel model) { + String id = RandomStringGenerator.generateUniqueString(Object.UNIQUE_ID_LENGTH, + RandomStringGenerator.ALPHA_NUMERIC, objMap.keySet()); + Object object = new Object(position, velocity, angularVelocity, angle, attribute, ""); + objMap.put(id, object); + return new IDAddressedEntity(id, object); + } public IDAddressedEntity createCharacter(String instanceId, String accountURI, String name, Position3D position, - Angle angle, CharacterModel model) { + Angle angle, String model) { String id = RandomStringGenerator.generateUniqueString(Character.UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, characterMap.keySet()); Character character = new Character(instanceId, accountURI, name, position, angle, model); @@ -140,11 +141,9 @@ return new IDAddressedEntity(id, character); } - public Character updateCharacter(String characterId, Position3D position, Angle angle, CharacterModel model) { + public Character updateCharacter(String characterId, Position3D position, Angle angle, String model) { Character character = characterMap.get(characterId); - character.setPosition(position); - character.setAngle(angle); - character.setModel(model); + character.updateCharacter(position, angle, model); return character; } diff --git a/src/main/java/cactusServer/entities/Object.java b/src/main/java/cactusServer/entities/Object.java index 4cee989..d73a8f9 100644 --- a/src/main/java/cactusServer/entities/Object.java +++ b/src/main/java/cactusServer/entities/Object.java @@ -11,7 +11,7 @@ private AngularVelocity3D angularVelocity; private Angle angle; private Attribute attribute; - private ObjectModel model; + private String model; @JSONHint(ignore = true) public static final int UNIQUE_ID_LENGTH = 12; private Object() { @@ -19,7 +19,7 @@ } public Object(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, Angle angle, - Attribute attribute, ObjectModel model) { + Attribute attribute, String model) { setPosition(position); setVelocity(velocity); setAngularVelocity(angularVelocity); @@ -48,7 +48,7 @@ return attribute; } - public ObjectModel getModel() { + public String getModel() { return model; } @@ -72,7 +72,7 @@ this.attribute = attribute; } - public void setModel(ObjectModel model) { + public void setModel(String model) { this.model = model; } diff --git a/src/main/java/cactusServer/entities/Player.java b/src/main/java/cactusServer/entities/Player.java index 5ac3279..4fb7d00 100644 --- a/src/main/java/cactusServer/entities/Player.java +++ b/src/main/java/cactusServer/entities/Player.java @@ -24,7 +24,7 @@ setInstanceURI(instanceURI); setCharacterURI(characterURI); setCameraState(cameraState); - setEmoteState(new EmoteState(animationClassToStart)); + setAnimationClassToStart(animationClassToStart); readCharacterData(characterURI); } @@ -102,6 +102,16 @@ public void setAnimationClassToStart(EmoteState.EmoteType animationClassToStart) { setEmoteState(new EmoteState(animationClassToStart)); } + + public Player updatePlayer(String CharacterURI, Position3D position, Angle angle, CameraState cameraState, EmoteState.EmoteType animationClassToStart) { + setCharacterURI(CharacterURI); + setPosition(position); + setAngle(angle); + setCameraState(cameraState); + updateEmoteType(animationClassToStart); + updateAreaURI(); + return this; + } private void updateAreaURI() { String[] areaURISplit = areaURI.split("/"); // �c�c/instances/{instanceId}/areas/{areaId} diff --git a/src/main/java/cactusServer/models/Instances.java b/src/main/java/cactusServer/models/Instances.java index f68c77c..8d8fd0e 100644 --- a/src/main/java/cactusServer/models/Instances.java +++ b/src/main/java/cactusServer/models/Instances.java @@ -21,7 +21,6 @@ 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 Instances() {