create系メソッドと全リソースを返すget系メソッドの戻り値の型についての変更.
create系メソッドの戻り値の型をIDAddressedEntityからHashMap<K,V>に変更.
getCharactersなどの全リソースを返すget系メソッドの戻り値の型をList<V>からHashMap<K, V>に変更.
(IDと実体の全組み合わせを返す)
1 parent efc97b8 commit ca10556f98e5db1bbd6413240baa7d992b2ba770
r-isitani authored on 2 Jul 2018
Showing 4 changed files
View
6
src/main/java/cactusServer/entities/Character.java
return itemMap.get(itemId);
}
 
@JSONHint(ignore = true)
public List<Item> getItems() {
return new ArrayList<Item>(itemMap.values());
public HashMap<String, Item> getItems() {
return itemMap;
}
 
public void setAccountURI(String accountURI) {
this.accountURI = accountURI;
}
 
private String findAreaURI(Instance instance) {
// キャラクターのポジションを用いてどのエリア内にいるかを判定して当該エリアのURIに更新する
for (String areaId : instance.getAreaIdSet()) {
for (String areaId : instance.getAreas().keySet()) {
Area area = instance.getArea(areaId);
if (area.isSurroundingPosition(position)) {
int subStringEndIndex = areaURI.length() - Area.UNIQUE_ID_LENGTH;
StringBuilder newAreaURI = new StringBuilder();
View
42
src/main/java/cactusServer/entities/Instance.java
@JSONHint(ignore = true)
public Universe getUniverse() {
return universe;
}
 
@JSONHint(ignore = true)
public Set<String> getAreaIdSet() {
return areaMap.keySet();
public HashMap<String, Area> getAreas() {
return areaMap;
}
 
public Area getArea(String areaId) {
return areaMap.get(areaId);
}
 
@JSONHint(ignore = true)
public Set<String> getObjIdSet() {
return objMap.keySet();
public HashMap<String, Object> getObjects() {
return objMap;
}
 
public Object getObject(String objId) {
return objMap.get(objId);
}
 
@JSONHint(ignore = true)
public List<Character> getCharacters() {
return new ArrayList<Character>(characterMap.values());
public HashMap<String, Character> getCharacters() {
return characterMap;
}
 
public Character getCharacter(String characterId) {
return characterMap.get(characterId);
public void setStageID(int stageURI) {
this.stageID = stageURI;
}
 
public IDAddressedEntity createArea(String name, Plain[] region, HashSet<Allowed> permissions) {
public HashMap<String, Area> createArea(String name, Plain[] region, HashSet<Allowed> permissions) {
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);
HashMap<String, Area> returnMap = new HashMap<>();
returnMap.put(id, area);
return returnMap;
}
 
public IDAddressedEntity createObject(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity,
public HashMap<String, Object> createObject(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity,
Quaternion3D 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);
universe.place(object.getPlaceable());
return new IDAddressedEntity(id, object);
HashMap<String, Object> returnMap = new HashMap<>();
returnMap.put(id, object);
return returnMap;
}
 
public IDAddressedEntity createCharacter(String instanceId, String accountURI, String name, Position3D position,
public HashMap<String, Character> createCharacter(String instanceId, String accountURI, String name, Position3D position,
Quaternion3D angle, String modelID) {
String id = RandomStringGenerator.generateUniqueString(Character.UNIQUE_ID_LENGTH,
RandomStringGenerator.ALPHA_NUMERIC, characterMap.keySet());
Character character = new Character(instanceId, accountURI, name, position, angle, Integer.parseInt(modelID));
characterMap.put(id, character);
return new IDAddressedEntity(id, character);
HashMap<String, Character> returnMap = new HashMap<>();
returnMap.put(id, character);
return returnMap;
}
 
public Instance update(Instance.State state) {
setState(state);
return this;
}
View
2
■■■
src/main/java/cactusServer/entities/Player.java
}
 
private String findAreaURI(Instance instance) {
// キャラクターのポジションを用いてどのエリア内にいるかを判定して当該エリアのURIに更新する
for (String areaId : instance.getAreaIdSet()) {
for (String areaId : instance.getAreas().keySet()) {
Area area = instance.getArea(areaId);
if (area.isSurroundingPosition(position)) {
int subStringEndIndex = areaURI.length() - Area.UNIQUE_ID_LENGTH; // …/{instanceId}/areas/ まで
return areaURI.substring(0, subStringEndIndex) + areaId;
View
83
src/main/java/cactusServer/models/Instances.java
private HashMap<String, Player> playerMap = new HashMap<>();
 
private Instances() {
//ダミーコード
// instanceMap.put("test1", new Instance("test1", State.AVAILABLE, 0));
// instanceMap.put("test2", new Instance("test2", State.AVAILABLE, 1));
instanceMap.put("test1", new Instance("test1", 0));
instanceMap.put("test2", new Instance("test2", 1));
}
 
/**
* Instancesクラスを取得する (シングルトン)
*
* @return
*/
public static Instances getInstance() {
if (theInstance == null) {
}
return theInstance;
}
 
public IDAddressedEntity createInstance(String name, int stageID) {
public HashMap<String, Instance> createInstance(String name, int stageID) {
String id = RandomStringGenerator.generateUniqueString(Instance.UNIQUE_ID_LENGTH,
RandomStringGenerator.ALPHA_NUMERIC, instanceMap.keySet());
//Instance instance = new Instance(name, Instance.State.AVAILABLE, stageID);
Instance instance = new Instance(name, stageID);
instanceMap.put(id, instance);
return new IDAddressedEntity(id, instance);
}
/**
* InstanceRestとのエラー解消用 (後で消す)
*/
public IDAddressedEntity createInstance(String name, Instance.State state, String stageID) {
String id = RandomStringGenerator.generateUniqueString(Instance.UNIQUE_ID_LENGTH,
RandomStringGenerator.ALPHA_NUMERIC, instanceMap.keySet());
//Instance instance = new Instance(name, state, Integer.parseInt(stageID));
Instance instance = new Instance(name, Integer.parseInt(stageID));
instanceMap.put(id, instance);
return new IDAddressedEntity(id, instance);
HashMap<String, Instance> returnMap = new HashMap<>();
returnMap.put(id, instance);
return returnMap;
}
 
public IDAddressedEntity createPlayer(String instanceURI, String characterURI, CameraState cameraState,
public HashMap<String, Player> createPlayer(String instanceURI, String characterURI, CameraState cameraState,
EmoteState.EmoteType animationClassToStart) {
String id = RandomStringGenerator.generateUniqueString(Player.UNIQUE_ID_LENGTH,
RandomStringGenerator.ALPHA_NUMERIC, playerMap.keySet());
Player player = new Player(instanceURI, characterURI, cameraState, animationClassToStart);
playerMap.put(id, player);
return new IDAddressedEntity(id, player);
}
public List<Instance> getInstances() {
return new ArrayList<Instance>(instanceMap.values());
HashMap<String, Player> returnMap = new HashMap<>();
returnMap.put(id, player);
return returnMap;
}
 
/**
* IDに対応するInstanceを取得して返す
*
* @param instanceId
* 取得したいInstanceのID
* @return IDに対応するInstance
*/
public HashMap<String, Instance> getInstances() {
return instanceMap;
}
 
public Instance getInstance(String instanceId) {
return instanceMap.get(instanceId);
}
 
/**
* 全playerを返す
* @return
*/
public List<Player> getPlayers() {
return new ArrayList<Player>(playerMap.values());
public HashMap<String, Player> getPlayers() {
return playerMap;
}
 
/**
* IDに対応するinstanceにいる全playerを返す
* @param instanceId
* @return
*/
public List<Player> getPlayers(String instanceId) {
public HashMap<String, Player> getPlayers(String instanceId) {
if (instanceId == null || instanceId.isEmpty()) {
return getPlayers();
}
List<Player> responsePlayers = new ArrayList<>();
for (Player player : playerMap.values()) {
HashMap<String, Player> responsePlayers = new HashMap<>();
for (String id : playerMap.keySet()) {
Player player = playerMap.get(id);
String[] instanceURISplit = player.getInstanceURI().split("/"); // …/instances/{instanceId}
if (instanceId.equals(instanceURISplit[instanceURISplit.length - 1])) {
responsePlayers.add(player);
responsePlayers.put(id, player);
}
}
return responsePlayers;
}
player.update(characterURI, position, angle, cameraState, animationClassToStart);
return player;
}
 
/**
* IDに対応するInstanceをMapから削除して返す
*
* @param instanceId
* Instanceを識別する一意のID
* @return Mapから削除されたInstance
*/
public Instance destroyInstance(String instanceId) {
return instanceMap.remove(instanceId);
}