diff --git a/src/main/java/cactusServer/entities/Character.java b/src/main/java/cactusServer/entities/Character.java index d4328f7..40dfe65 100644 --- a/src/main/java/cactusServer/entities/Character.java +++ b/src/main/java/cactusServer/entities/Character.java @@ -1,14 +1,12 @@ package cactusServer.entities; import java.net.URI; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; -import java.util.Set; -import java.util.UUID; import framework.model3D.Position3D; -import framework.physics.AngularVelocity3D; -import framework.physics.Velocity3D; import net.arnx.jsonic.JSONHint; public class Character { @@ -24,14 +22,14 @@ @JSONHint(ignore = true) HashMap itemMap = new HashMap<>(); @JSONHint(ignore = true) private static final int UNIQUE_ID_LENGTH = 12; - public Character(URI accountURI, String name, Position3D position, String areaId, boolean isActive) { - this.accountURI = accountURI; - this.name = name; - this.position = position; - this.areaID = areaId; - this.isActive = isActive; - } - +// public Character(URI accountURI, String name, Position3D position, String areaId, boolean isActive) { +// this.accountURI = accountURI; +// this.name = name; +// this.position = position; +// this.areaID = areaId; +// this.isActive = isActive; +// } + public URI getAccountURI() { return accountURI; } @@ -48,18 +46,22 @@ return areaID; } - public boolean isAactive() { + public boolean isActive() { return isActive; } - - public HashMap getItemMap() { - return itemMap; - } - public Item getItemMap(String itemId) { + public Item getItem(String itemId) { return itemMap.get(itemId); } + public List getItems() { + List itemList = new ArrayList<>(); + for (Item item : itemMap.values()) { + itemList.add(item); + } + return itemList; + } + public void setAccountURI(URI accountURI) { this.accountURI = accountURI; } @@ -71,22 +73,42 @@ public void setPosition(Position3D position) { this.position = position; } + + public void setAreaID(String areaID) { + this.areaID = areaID; + } public void setActive(boolean isActive) { this.isActive = isActive; } public Map createItem(String name, int amount) { - String id = new RandomStringGenerator().createUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, itemMap.keySet()); Item item = new Item(name, amount); - itemMap.put(id, item); - return new HashMap() { - {put(id, item);} - }; + if (!hasItem(item)) { + String id = new RandomStringGenerator().createUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, itemMap.keySet()); + itemMap.put(id, item); + return new HashMap() { + {put(id, item);} + }; + } + return null; } - public Item addItem(String itemId, int num) { - return itemMap.get(itemId).addAmount(num); + public boolean hasItem(Item item) { + for (Map.Entry entry : itemMap.entrySet()) { + if (entry.getValue().equals(item)) { + return true; + } + } + return false; + } + + public Item changeAmountOfItem(String itemId, int amountOfChange) { + Item item = itemMap.get(itemId).changeAmount(amountOfChange); + if (item.isEmpty()) { + destroyItem(itemId); + } + return item; } public Item destroyItem(String itemId) { diff --git a/src/main/java/cactusServer/entities/Instance.java b/src/main/java/cactusServer/entities/Instance.java index 611dbd8..4586393 100644 --- a/src/main/java/cactusServer/entities/Instance.java +++ b/src/main/java/cactusServer/entities/Instance.java @@ -1,12 +1,12 @@ package cactusServer.entities; import java.net.URI; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; -import java.util.Random; import java.util.Set; -import java.util.UUID; import cactusServer.entities.Area.Allowed; import cactusServer.entities.Object; @@ -29,7 +29,6 @@ @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 static final String ALPHANUMERIC = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; /** * (�����͌����_�ł̉��̂���) @@ -52,10 +51,6 @@ return areaMap.keySet(); } - public HashMap getAreaMap() { - return areaMap; - } - public Area getArea(String areaId) { return areaMap.get(areaId); } @@ -64,26 +59,42 @@ return objMap.keySet(); } - public HashMap getObjMap() { - return objMap; - } - public Object getObject(String objId) { return objMap.get(objId); } - public Set getCharacterIdSet() { - return characterMap.keySet(); + public List getActiveCharacters() { + List activeCharacterList = new ArrayList<>(); + for (Map.Entry entry : characterMap.entrySet()) { + Character character = entry.getValue(); + if (character.isActive()) { + activeCharacterList.add(character); + } + } + return activeCharacterList; } - public HashMap getCharacterMap() { - return characterMap; + public List getCharacters(String accountUniqueId) { + List accountCharacterList = new ArrayList<>(); + for (Map.Entry entry : characterMap.entrySet()) { + Character character = entry.getValue(); + URI accountURI = character.getAccountURI(); + if (accountUniqueId.equals("")) { + // if���̏����ɂ�accountURI�Ɋ܂܂��accountId�ƈ�����id�Ƃ̏ƍ������� + accountCharacterList.add(character); + } + } + return accountCharacterList; } 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; } @@ -106,15 +117,29 @@ }; } - public Map createCharacter(URI accountURI, String name, Position3D position, String areaId, boolean isActive) { +// public Map createCharacter(URI accountURI, String name, Position3D position, String areaId, boolean isActive) { +// String id = new RandomStringGenerator().createUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, characterMap.keySet()); +// Character character = new Character(accountURI, name, position, areaId, isActive); +// characterMap.put(id, character); +// return new HashMap() { +// {put(id, character);} +// }; +// } + + public Map createCharacter(Character character) { String id = new RandomStringGenerator().createUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, characterMap.keySet()); - Character character = new Character(accountURI, name, position, areaId, isActive); 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); + return character; + } + public Character destroyCharacter(String characterId) { return characterMap.remove(characterId); } diff --git a/src/main/java/cactusServer/entities/Item.java b/src/main/java/cactusServer/entities/Item.java index ae63d46..9bc9af3 100644 --- a/src/main/java/cactusServer/entities/Item.java +++ b/src/main/java/cactusServer/entities/Item.java @@ -21,8 +21,29 @@ return (amount == 0); } - public Item addAmount(int num) { - amount = Math.max(amount + num, 0); + 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; + if (this.name.equals(item.name)) { + return true; // �����̃A�C�e���͓��� + } + } + return false; + } } diff --git a/src/main/java/cactusServer/models/Instances.java b/src/main/java/cactusServer/models/Instances.java index f829b43..48e2bcc 100644 --- a/src/main/java/cactusServer/models/Instances.java +++ b/src/main/java/cactusServer/models/Instances.java @@ -1,10 +1,7 @@ package cactusServer.models; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import java.util.Set; -import java.util.UUID; import org.apache.commons.lang3.RandomStringUtils; @@ -22,7 +19,6 @@ private static Instances theInstance = null; private HashMap instanceMap = new HashMap<>(); // instance��ID�Ǝ��̂��Ǘ� private static final int UNIQUE_ID_LENGTH = 12; - private static final String ALPHANUMERIC = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; private Instances() { @@ -43,13 +39,11 @@ /** * �V����Instance���쐬����Map�ɒlj����� * - * @param name - * �C���X�^���X�� (��) + * @param instance * @return �V�����쐬���ꂽID��Instance��Map */ - public Map createInstance(String name) { + public Map createInstance(Instance instance) { String id = new RandomStringGenerator().createUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, instanceMap.keySet()); - Instance instance = new Instance(name, Instance.State.AVAILABLE); instanceMap.put(id, instance); return new HashMap() { {put(id, instance);} @@ -57,7 +51,7 @@ } /** - * �G���[�����p (�ォ�����) + * InstancesRest�̃G���[�����p (�ォ�����) * @param id * @param name * @return