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);