diff --git a/src/main/java/cactusServer/entities/Character.java b/src/main/java/cactusServer/entities/Character.java index 289a173..5ddf3d4 100644 --- a/src/main/java/cactusServer/entities/Character.java +++ b/src/main/java/cactusServer/entities/Character.java @@ -4,7 +4,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; import cactusServer.models.Instances; import cactusServer.utils.RandomStringGenerator; @@ -26,14 +25,14 @@ // JSONDecode���̌Ăяo���p } - public Character(String accountURI, String name, Position3D position, Angle angle, CharacterModel model) { - setAccountURI(accountURI); - setName(name); - setPosition(position); - setAngle(angle); - setModel(model); - updateAreaURI(); - } +// public Character(String accountURI, String name, Position3D position, Angle angle, CharacterModel model) { +// setAccountURI(accountURI); +// setName(name); +// setPosition(position); +// setAngle(angle); +// setModel(model); +// updateAreaURI(); +// } public Character(String instanceId, String accountURI, String name, Position3D position, Angle angle, CharacterModel model) { @@ -42,7 +41,7 @@ setPosition(position); setAngle(angle); setModel(model); - updateAreaURI(); + initAreaURI(instanceId); } public String getAccountURI() { @@ -137,7 +136,7 @@ private void initAreaURI(String instanceId) { Instance instance = Instances.getInstance().getInstance(instanceId); - areaURI = findAreaURI(instance); + setAreaURI(findAreaURI(instance)); } private String findAreaURI(Instance instance) { @@ -149,18 +148,21 @@ return newAreaURI.append(areaURI.substring(0, subStringStartIndex)).append(areaId).toString(); } } - throw new IllegalStateException("Character is in the unknown area"); + throw new IllegalStateException("Character is in the unknown area."); } private boolean isInTheArea(Area area) { - boolean inTheArea = false; for (Plain plain : area.getRegion()) { + // ������ Plain��a,b,c,d �� Character��x,y,z ��p����, �L�����N�^�[�����ʂɂ��邩�ǂ����̔�����s�� + // double equation = (plain.getA() * position.getX()) + (plain.getB() * // position.getY()) // + (plain.getC() * position.getZ()) + plain.getD(); - // inTheArea = (equation < 0); + // if (equation > 0) { + // return false; + // } } - return inTheArea; + return true; } private void updateAreaURI() { @@ -170,12 +172,10 @@ String previousAreaId = areaURISplit[splitSize - 1]; Instance instance = Instances.getInstance().getInstance(instanceId); Area previousArea = instance.getArea(previousAreaId); - // ���݂̃L�����N�^�[�̃|�W�V�������X�V�O�ɂ����G���A���ɂ��邩�ǂ����𔻒� - if (isInTheArea(previousArea)) { - return; // �X�V�O�ɂ����G���A���ɂ���΃G���AURI��ύX����K�v�͂Ȃ� + if (!isInTheArea(previousArea)) { + // �L�����N�^�[�̃|�W�V������p���Ăǂ̃G���A���ɂ��邩�𔻒肵�ē��Y�G���A��URI�ɍX�V���� + setAreaURI(findAreaURI(instance)); } - // �L�����N�^�[�̃|�W�V������p���Ăǂ̃G���A���ɂ��邩�𔻒肵�ē��Y�G���A��URI�ɍX�V���� - areaURI = findAreaURI(instance); } public Item destroyItem(String itemId) { diff --git a/src/main/java/cactusServer/entities/Instance.java b/src/main/java/cactusServer/entities/Instance.java index 59485b2..6d3486d 100644 --- a/src/main/java/cactusServer/entities/Instance.java +++ b/src/main/java/cactusServer/entities/Instance.java @@ -19,6 +19,7 @@ /** * �C���X�^���X + * * @author ryo isitani * */ @@ -26,19 +27,21 @@ private String name; private State state; private String stage; - private HashMap areaMap = new HashMap<>(); private HashMap objMap = new HashMap<>(); private HashMap characterMap = new HashMap<>(); - @JSONHint(ignore = true) public static final int UNIQUE_ID_LENGTH = 12; + @JSONHint(ignore = true) + public static final int UNIQUE_ID_LENGTH = 12; private Instance() { // JSONDecode���̌Ăяo���p } - + /** * (�����͌����_�ł̉��̂���) - * @param name �C���X�^���X�� + * + * @param name + * �C���X�^���X�� */ public Instance(String name, State state, String stageModel) { setName(name); @@ -49,11 +52,11 @@ public String getName() { return name; } - + public State getState() { return state; } - + public String getStage() { return stage; } @@ -62,22 +65,22 @@ public Set getAreaIdSet() { return areaMap.keySet(); } - + @JSONHint(ignore = true) public Area getArea(String areaId) { return areaMap.get(areaId); } - + @JSONHint(ignore = true) public Set getObjIdSet() { return objMap.keySet(); } - + @JSONHint(ignore = true) public Object getObject(String objId) { return objMap.get(objId); } - + @JSONHint(ignore = true) public List getCharacters() { return new ArrayList(characterMap.values()); @@ -87,36 +90,52 @@ public Character getCharacter(String characterId) { return characterMap.get(characterId); } - + public void setName(String name) { this.name = name; } - + public void setState(State state) { this.state = state; } - + public void setStage(String stage) { this.stage = stage; } public IDAddressedEntity createArea(String name, Plain[] region, HashSet permissions) { - String id = RandomStringGenerator.generateUniqueString(Area.UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, areaMap.keySet()); + 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); } - - 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()); + + 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, 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); + + // 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); + // } + + public IDAddressedEntity createCharacter(String instanceId, 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(instanceId, accountURI, name, position, angle, model); characterMap.put(id, character); return new IDAddressedEntity(id, character); } @@ -128,19 +147,19 @@ character.setModel(model); return character; } - + public Character destroyCharacter(String characterId) { return characterMap.remove(characterId); } - + public Area destroyArea(String areaId) { return areaMap.remove(areaId); } - + public Object destroyObject(String objId) { return objMap.remove(objId); } - + public static enum State { AVAILABLE, MAINTENANCE; }