diff --git a/src/main/java/cactusServer/entities/Area.java b/src/main/java/cactusServer/entities/Area.java new file mode 100644 index 0000000..5050012 --- /dev/null +++ b/src/main/java/cactusServer/entities/Area.java @@ -0,0 +1,43 @@ +package cactusServer.entities; + +import java.util.HashSet; + +public class Area { + private String name; + private Plain[] region; // �C�ӌ‚̕��ʂ̕����� + private HashSet permissions; // �G���A���ʼn”\�Ȃ��Ƃ̗��� + + public Area(String name, Plain[] regions, HashSet permissions) { + this.name = name; + this.region = regions; + this.permissions = permissions; + } + + public String getName() { + return name; + } + + public Plain[] getRegions() { + return region; + } + + public Plain getRegion(int index) { + return region[index]; + } + + public boolean isPermission(Allowed allowed) { + return permissions.contains(allowed); + } + + public void setPermission(Allowed allowed) { + permissions.add(allowed); + } + + public void removePermission(Allowed allowed) { + permissions.remove(allowed); + } + + public static enum Allowed { + SHOOT, KILL; + } +} diff --git a/src/main/java/cactusServer/entities/Instance.java b/src/main/java/cactusServer/entities/Instance.java index 6231d89..1301487 100644 --- a/src/main/java/cactusServer/entities/Instance.java +++ b/src/main/java/cactusServer/entities/Instance.java @@ -1,5 +1,14 @@ 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; + /** * �C���X�^���X * @author ryo isitani @@ -7,16 +16,74 @@ */ public class Instance { private String name; + private State state; + private HashMap areaMap = new HashMap<>(); + private HashMap objMap = new HashMap<>(); /** * (�����͌����_�ł̉��̂���) * @param name �C���X�^���X�� */ - public Instance(String 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 getAreaMap() { + return areaMap; + } + + public Area getArea(String areaId) { + return areaMap.get(areaId); + } + + public HashMap 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 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; + } } diff --git a/src/main/java/cactusServer/entities/Object.java b/src/main/java/cactusServer/entities/Object.java new file mode 100644 index 0000000..19054f0 --- /dev/null +++ b/src/main/java/cactusServer/entities/Object.java @@ -0,0 +1,43 @@ +package cactusServer.entities; + +import java.util.HashMap; + +import framework.model3D.Position3D; +import framework.physics.AngularVelocity3D; +import framework.physics.Velocity3D; + +public class Object { + private Position3D position; + private Velocity3D velocity; + private AngularVelocity3D angularVelocity; + + public Object(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity) { + setPosition(position); + setVelocity(velocity); + setAngularVelocity(angularVelocity); + } + + public Position3D getPosition() { + return position; + } + + public Velocity3D getVelocity() { + return velocity; + } + + public AngularVelocity3D getAngularVelocity() { + return angularVelocity; + } + + public void setPosition(Position3D position) { + this.position = position; + } + + public void setVelocity(Velocity3D velocity) { + this.velocity = velocity; + } + + public void setAngularVelocity(AngularVelocity3D angularVelocity) { + this.angularVelocity = angularVelocity; + } +} diff --git a/src/main/java/cactusServer/entities/Plain.java b/src/main/java/cactusServer/entities/Plain.java new file mode 100644 index 0000000..6d78bac --- /dev/null +++ b/src/main/java/cactusServer/entities/Plain.java @@ -0,0 +1,33 @@ +package cactusServer.entities; + +import java.util.List; + +public class Plain { + private double a; // ���ʂ̕����� ax+by+cz+d ��a + private double b; // ���ʂ̕����� ax+by+cz+d ��b + private double c; // ���ʂ̕����� ax+by+cz+d ��c + private double d; // ���ʂ̕����� ax+by+cz+d ��d + + public Plain(double a, double b, double c, double d) { + this.a = a; + this.b = b; + this.c = c; + this.d = d; + } + + public double getA() { + return a; + } + + public double getB() { + return b; + } + + public double getC() { + return c; + } + + public double getD() { + return d; + } +} diff --git a/src/main/java/cactusServer/models/Instances.java b/src/main/java/cactusServer/models/Instances.java index 04dbad1..f7ee85c 100644 --- a/src/main/java/cactusServer/models/Instances.java +++ b/src/main/java/cactusServer/models/Instances.java @@ -14,7 +14,6 @@ public class Instances { private static Instances theInstance = null; private HashMap instanceMap = new HashMap<>(); // instance��ID�Ǝ��̂��Ǘ� - private HashSet instanceIdSet = new HashSet<>(); // �g�p�ς�ID�̏W�� private Instances() { @@ -43,10 +42,10 @@ * ������, instanceID���d�������ꍇ�͐V�KInstance���쐬������null��Ԃ� */ public Instance createInstance(String instanceId, String name) { - if (!instanceIdSet.add(instanceId)) { + if (instanceMap.containsKey(instanceId)) { return null; } - Instance instance = new Instance(name); + Instance instance = new Instance(name, Instance.State.AVAILABLE); instanceMap.put(instanceId, instance); return instance; }