package cactusServer.entities;
import java.util.HashMap;
import java.util.HashSet;
import cactusServer.entities.Area.Allowed;
import cactusServer.entities.Object;
import framework.model3D.Position3D;
import framework.physics.AngularVelocity3D;
import framework.physics.Velocity3D;
/**
* インスタンス
* @author ryo isitani
*
*/
public class Instance {
private String name;
private State state;
private HashMap<String, Area> areaMap = new HashMap<>();
private HashMap<String, Object> objMap = new HashMap<>();
/**
* (引数は現時点での仮のもの)
* @param name インスタンス名
*/
public Instance(String name, State state) {
this.name = name;
this.state = state;
}
public String getName() {
return name;
}
public State getState() {
return state;
}
public HashMap<String, Area> getAreaMap() {
return areaMap;
}
public Area getArea(String areaId) {
return areaMap.get(areaId);
}
public HashMap<String, Object> getObjMap() {
return objMap;
}
public Object getObject(String objId) {
return objMap.get(objId);
}
public void setState(State state) {
this.state = state;
}
public Area createArea(String areaId, String name, Plain[] regions, HashSet<Allowed> permissions) {
if (areaMap.containsKey(areaId)) {
return null;
}
Area area = new Area(name, regions, permissions);
areaMap.put(areaId, area);
return area;
}
public Object createObject(String objId, Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity) {
if (objMap.containsKey(objId)) {
return null;
}
Object object = new Object(position, velocity, angularVelocity);
objMap.put(objId, object);
return object;
}
public Area removeArea(String areaId) {
return areaMap.remove(areaId);
}
public Object removeObject(String objId) {
return objMap.remove(objId);
}
public static enum State {
AVAILABLE, MAINTENANCE;
}
}