diff --git a/src/main/java/cactusServer/entities/Character.java b/src/main/java/cactusServer/entities/Character.java index 1c46d45..d04e582 100644 --- a/src/main/java/cactusServer/entities/Character.java +++ b/src/main/java/cactusServer/entities/Character.java @@ -1,7 +1,9 @@ package cactusServer.entities; import java.net.URI; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import framework.model3D.Position3D; @@ -47,13 +49,17 @@ public boolean isActive() { return isActive; } - - public HashMap getItemMap() { - return itemMap; + + public Item getItem(String itemId) { + return itemMap.get(itemId); } - public Item getItemMap(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 setPosition(Position3D position) { @@ -65,12 +71,24 @@ } 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 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) { diff --git a/src/main/java/cactusServer/entities/Instance.java b/src/main/java/cactusServer/entities/Instance.java index 9ee6e0b..09f9a1e 100644 --- a/src/main/java/cactusServer/entities/Instance.java +++ b/src/main/java/cactusServer/entities/Instance.java @@ -1,8 +1,10 @@ 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.Set; @@ -49,10 +51,6 @@ return areaMap.keySet(); } - public HashMap getAreaMap() { - return areaMap; - } - public Area getArea(String areaId) { return areaMap.get(areaId); } @@ -61,36 +59,32 @@ return objMap.keySet(); } - public HashMap getObjMap() { - return objMap; - } - public Object getObject(String objId) { return objMap.get(objId); } - public Map getActiveCharacterMap() { - Map activeCharacterMap = new HashMap<>(); + public List getActiveCharacters() { + List activeCharacterList = new ArrayList<>(); for (Map.Entry entry : characterMap.entrySet()) { Character character = entry.getValue(); if (character.isActive()) { - activeCharacterMap.put(entry.getKey(), character); + activeCharacterList.add(character); } } - return activeCharacterMap; + return activeCharacterList; } - public Map getCharacterMap(String accountUniqueId) { - Map accountCharacterMap = new HashMap<>(); + 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�Ƃ̏ƍ������� - accountCharacterMap.put(entry.getKey(), character); + accountCharacterList.add(character); } } - return accountCharacterMap; + return accountCharacterList; } public Character getCharacter(String characterId) { diff --git a/src/main/java/cactusServer/entities/Item.java b/src/main/java/cactusServer/entities/Item.java index 5b1b9a3..bd819f8 100644 --- a/src/main/java/cactusServer/entities/Item.java +++ b/src/main/java/cactusServer/entities/Item.java @@ -25,4 +25,18 @@ amount = Math.max(amount + amountOfChange, 0); return this; } + + @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; + } }