diff --git a/src/main/java/cactusServer/entities/AddressedEntity.java b/src/main/java/cactusServer/entities/AddressedEntity.java index 2b3dc80..d66bee5 100644 --- a/src/main/java/cactusServer/entities/AddressedEntity.java +++ b/src/main/java/cactusServer/entities/AddressedEntity.java @@ -5,19 +5,22 @@ * @author r-isitani * */ -public class AddressedEntity { - private String URI; +public abstract class AddressedEntity { private Entity body; - public AddressedEntity(String URI, Entity body) { - this.URI = URI; - this.body = body; + protected AddressedEntity() { + // JSONDecode���̌Ăяo���p } - - public String getURI() { - return URI; + + public AddressedEntity(Entity body) { + setBody(body); } + public Entity getBody() { return body; } + + public void setBody(Entity body) { + this.body = body; + } } diff --git a/src/main/java/cactusServer/entities/Angle.java b/src/main/java/cactusServer/entities/Angle.java index b3b6fa5..3edb57f 100644 --- a/src/main/java/cactusServer/entities/Angle.java +++ b/src/main/java/cactusServer/entities/Angle.java @@ -6,11 +6,15 @@ private double vz; private double a; + private Angle() { + // JSONDecode���̌Ăяo���p + } + public Angle(double vx, double vy, double vz, double a) { - this.vx = vx; - this.vy = vy; - this.vz = vz; - this.a = a; + setVx(vx); + setVy(vy); + setVz(vz); + setA(a); } public double getVx() { diff --git a/src/main/java/cactusServer/entities/Area.java b/src/main/java/cactusServer/entities/Area.java index 222db78..3dc0ee4 100644 --- a/src/main/java/cactusServer/entities/Area.java +++ b/src/main/java/cactusServer/entities/Area.java @@ -6,30 +6,50 @@ private String name; private Plain[] region; // �C�ӌ‚̕��ʂ̕����� private HashSet permissions; // �G���A���ʼn”\�Ȃ��Ƃ̗��� + + private Area() { + // JSONDecode���̌Ăяo���p + } - public Area(String name, Plain[] regions, HashSet permissions) { - this.name = name; - this.region = regions; - this.permissions = permissions; + public Area(String name, Plain[] region, HashSet permissions) { + setName(name); + setRegion(region); + setPermissions(permissions); } public String getName() { return name; } - public Plain[] getRegions() { + public Plain[] getRegion() { return region; } - + public Plain getRegion(int index) { return region[index]; } + public HashSet getPermissions() { + return permissions; + } + public boolean isPermission(Allowed allowed) { return permissions.contains(allowed); } + + public void setName(String name) { + this.name = name; + } - public void setPermission(Allowed allowed) { + public void setRegion(Plain[] region) { + this.region = region; + } + + public void setPermissions(HashSet permissions) { + this.permissions = permissions; + } + + public void addPermission(Allowed allowed) { permissions.add(allowed); } diff --git a/src/main/java/cactusServer/entities/CameraState.java b/src/main/java/cactusServer/entities/CameraState.java index 3801ab1..e4704db 100644 --- a/src/main/java/cactusServer/entities/CameraState.java +++ b/src/main/java/cactusServer/entities/CameraState.java @@ -6,11 +6,15 @@ private double tilt; // �`���g(rad) private double fov; // ����p(rad) + private CameraState() { + // JSONDecode���̌Ăяo���p + } + public CameraState(double distance, Angle angle, double tilt, double fov) { - this.distance = distance; - this.angle = angle; - this.tilt = tilt; - this.fov = fov; + setDistance(distance); + setAngle(angle); + setTilt(tilt); + setFov(fov); } public double getDistance() { diff --git a/src/main/java/cactusServer/entities/Character.java b/src/main/java/cactusServer/entities/Character.java index cc22cf3..f435a04 100644 --- a/src/main/java/cactusServer/entities/Character.java +++ b/src/main/java/cactusServer/entities/Character.java @@ -15,17 +15,23 @@ private String name; private Position3D position; private Angle angle; -// private Model model; + private CharacterModel model; private String areaURI; private HashMap itemMap = new HashMap<>(); private static final int UNIQUE_ID_LENGTH = 12; - public Character(String accountURI, String name, Position3D position, String areaId) { - this.accountURI = accountURI; - this.name = name; - this.position = position; - this.areaURI = areaId; + private Character() { + // JSONDecode���̌Ăяo���p + } + + public Character(String accountURI, String name, Position3D position, Angle angle, CharacterModel model) { + setAccountURI(accountURI); + setName(name); + setPosition(position); + setAngle(angle); + setModel(model); + updateAreaURI(); } public String getAccountURI() { @@ -40,7 +46,15 @@ return position; } - public String getAreaId() { + public Angle getAngle() { + return angle; + } + + public CharacterModel getModel() { + return model; + } + + public String getAreaURI() { return areaURI; } @@ -56,6 +70,10 @@ return itemList; } + public void setAccountURI(String accountURI) { + this.accountURI = accountURI; + } + public void setName(String name) { this.name = name; } @@ -64,18 +82,24 @@ this.position = position; } - public void setAreaID(String areaID) { - this.areaURI = areaID; + public void setAngle(Angle angle) { + this.angle = angle; } - public Map createItem(String name, int amount) { + public void setModel(CharacterModel model) { + this.model = model; + } + + public void setAreaURI(String areaURI) { + this.areaURI = areaURI; + } + + public AddressedEntity createItem(String name, int amount) { Item item = new Item(name, amount); if (!hasItem(item)) { String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, itemMap.keySet()); itemMap.put(id, item); - return new HashMap() { - {put(id, item);} - }; + return new IDAddressedEntity(id, item); } return null; } @@ -97,6 +121,10 @@ return item; } + private void updateAreaURI() { + // �L�����N�^�[�̃|�W�V������p���Ăǂ̃G���A���ɂ��邩�𔻒肵�ē��Y�G���A��URI�ɍX�V���� + } + public Item destroyItem(String itemId) { return itemMap.remove(itemId); } diff --git a/src/main/java/cactusServer/entities/CharacterModel.java b/src/main/java/cactusServer/entities/CharacterModel.java new file mode 100644 index 0000000..2daa1d1 --- /dev/null +++ b/src/main/java/cactusServer/entities/CharacterModel.java @@ -0,0 +1,5 @@ +package cactusServer.entities; + +public class CharacterModel { + +} diff --git a/src/main/java/cactusServer/entities/EmoteState.java b/src/main/java/cactusServer/entities/EmoteState.java index 79f20d9..ab16a90 100644 --- a/src/main/java/cactusServer/entities/EmoteState.java +++ b/src/main/java/cactusServer/entities/EmoteState.java @@ -8,8 +8,20 @@ */ public class EmoteState { private EmoteType emoteType; + + private EmoteState() { + // JSONDecode���̌Ăяo���p + } public EmoteState(EmoteType emoteType) { + setEmoteType(emoteType); + } + + public EmoteType getEmoteType() { + return emoteType; + } + + public void setEmoteType(EmoteType emoteType) { this.emoteType = emoteType; } diff --git a/src/main/java/cactusServer/entities/IDAddressedEntity.java b/src/main/java/cactusServer/entities/IDAddressedEntity.java new file mode 100644 index 0000000..4ca3a59 --- /dev/null +++ b/src/main/java/cactusServer/entities/IDAddressedEntity.java @@ -0,0 +1,22 @@ +package cactusServer.entities; + +public class IDAddressedEntity extends AddressedEntity{ + private String id; + + private IDAddressedEntity() { + // JSONDecode���̌Ăяo���p + } + + public IDAddressedEntity(String id, Entity body) { + super(body); + setId(id); + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/src/main/java/cactusServer/entities/Instance.java b/src/main/java/cactusServer/entities/Instance.java index d7a0a5d..7a5ff6c 100644 --- a/src/main/java/cactusServer/entities/Instance.java +++ b/src/main/java/cactusServer/entities/Instance.java @@ -3,15 +3,21 @@ 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; import cactusServer.entities.Entity; import cactusServer.entities.Object; +import cactusServer.entities.Area.Allowed; +import cactusServer.entities.Object.Attribute; +import cactusServer.models.Instances; import cactusServer.utils.RandomStringGenerator; import cactusServer.entities.Character; import framework.model3D.Position3D; +import framework.physics.AngularVelocity3D; +import framework.physics.Velocity3D; import net.arnx.jsonic.JSONHint; /** @@ -22,21 +28,41 @@ public class Instance extends Entity { private String name; private State state; -// private StageModel stage; - @JSONHint(ignore = true) private HashMap areaMap = new HashMap<>(); - @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 StageModel stage; + + private HashMap areaMap = new HashMap<>(); + private HashMap objMap = new HashMap<>(); + private HashMap characterMap = new HashMap<>(); + private static final int UNIQUE_ID_LENGTH = 12; + + private Instance() { + // JSONDecode���̌Ăяo���p + } /** * (�����͌����_�ł̉��̂���) * @param name �C���X�^���X�� */ + public Instance(String name, State state, StageModel stageModel) { + setName(name); + setState(state); + setStage(stageModel); + } + + /** + * InstancesRest�Ƃ̃G���[�����p (��ŏ���) + * @param name + * @param state + */ public Instance(String name, State state) { this.name = name; this.state = state; } + /** + * InstancesRest�Ƃ̃G���[�����p (��ŏ���) + * @param name + */ public Instance(String name) { this.name = name; this.state = State.AVAILABLE; @@ -50,6 +76,10 @@ return state; } + public StageModel getStage() { + return stage; + } + @JSONHint(ignore = true) public Set getAreaIdSet() { return areaMap.keySet(); @@ -104,34 +134,38 @@ public void setState(State state) { this.state = state; } + + public void setStage(StageModel stage) { + this.stage = stage; + } - public Map createArea(Area area) { + public AddressedEntity createArea(String name, Plain[] region, HashSet permissions) { String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, areaMap.keySet()); + Area area = new Area(name, region, permissions); areaMap.put(id, area); - return new HashMap() { - {put(id, area);} - }; + return new IDAddressedEntity(id, area); + } + + public AddressedEntity createObject(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, Angle angle, Attribute attribute, ObjectModel model) { + String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, objMap.keySet()); + Object object = new Object(position, velocity, angularVelocity, angle, attribute, model); + objMap.put(id, object); + return new IDAddressedEntity(id, object); + } + + public AddressedEntity createCharacter(String accountURI, String name, Position3D position, Angle angle, CharacterModel model) { + String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, characterMap.keySet()); +// String characterURI = (INSTANCE_URI + "/characters/" + id); + Character character = new Character(accountURI, name, position, angle, model); + characterMap.put(id, character); + return new IDAddressedEntity(id, character); } - public Map createObject(Object object) { - String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, objMap.keySet()); - objMap.put(id, object); - return new HashMap() { - {put(id, object);} - }; - } - - public Map createCharacter(Character character) { - String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, characterMap.keySet()); - characterMap.put(id, character); - return new HashMap() { - {put(id, character);} - }; - } - - public Character updateCharacter(String characterId, Position3D position) { + public Character updateCharacter(String characterId, Position3D position, Angle angle, CharacterModel model) { Character character = characterMap.get(characterId); character.setPosition(position); + character.setAngle(angle); + character.setModel(model); return character; } diff --git a/src/main/java/cactusServer/entities/Item.java b/src/main/java/cactusServer/entities/Item.java index 77ff15f..88533bb 100644 --- a/src/main/java/cactusServer/entities/Item.java +++ b/src/main/java/cactusServer/entities/Item.java @@ -4,9 +4,13 @@ private String name; private int amount; + private Item() { + // JSONDecode���̌Ăяo���p + } + public Item(String name, int amount) { - this.name = name; - this.amount = amount; + setName(name); + setAmount(amount); } public String getName() { @@ -21,6 +25,14 @@ return (amount == 0); } + public void setName(String name) { + this.name = name; + } + + public void setAmount(int amount) { + this.amount = amount; + } + public Item changeAmount(int amountOfChange) { amount = Math.max(amount + amountOfChange, 0); return this; diff --git a/src/main/java/cactusServer/entities/Object.java b/src/main/java/cactusServer/entities/Object.java index 9c2b7b6..19f55f1 100644 --- a/src/main/java/cactusServer/entities/Object.java +++ b/src/main/java/cactusServer/entities/Object.java @@ -10,13 +10,21 @@ private Position3D position; private Velocity3D velocity; private AngularVelocity3D angularVelocity; + private Angle angle; private Attribute attribute; + private ObjectModel model; + + private Object() { + // JSONDecode���̌Ăяo���p + } - public Object(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, Attribute attribute) { + public Object(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, Angle angle, Attribute attribute, ObjectModel model) { setPosition(position); setVelocity(velocity); setAngularVelocity(angularVelocity); - this.attribute = attribute; + setAngle(angle); + setAttribute(attribute); + setModel(model); } public Position3D getPosition() { @@ -31,6 +39,18 @@ return angularVelocity; } + public Angle getAngle() { + return angle; + } + + public Attribute getAttribute() { + return attribute; + } + + public ObjectModel getModel() { + return model; + } + public void setPosition(Position3D position) { this.position = position; } @@ -43,13 +63,25 @@ this.angularVelocity = angularVelocity; } + public void setAngle(Angle angle) { + this.angle = angle; + } + + public void setAttribute(Attribute attribute) { + this.attribute = attribute; + } + + public void setModel(ObjectModel model) { + this.model = model; + } + public static class Attribute { - private boolean moveable; - private double cof; + private boolean moveable; // �“� + private double cof; // ���C�W�� public Attribute(boolean moveable, double cof) { - this.moveable = moveable; - this.cof = cof; + setMoveable(moveable); + setCof(cof); } public boolean isMoveable() { @@ -59,5 +91,13 @@ public double getCof() { return cof; } + + public void setMoveable(boolean moveable) { + this.moveable = moveable; + } + + public void setCof(double cof) { + this.cof = cof; + } } } diff --git a/src/main/java/cactusServer/entities/ObjectModel.java b/src/main/java/cactusServer/entities/ObjectModel.java new file mode 100644 index 0000000..8b387f8 --- /dev/null +++ b/src/main/java/cactusServer/entities/ObjectModel.java @@ -0,0 +1,5 @@ +package cactusServer.entities; + +public class ObjectModel { + +} diff --git a/src/main/java/cactusServer/entities/Plain.java b/src/main/java/cactusServer/entities/Plain.java index 6d78bac..fbe7603 100644 --- a/src/main/java/cactusServer/entities/Plain.java +++ b/src/main/java/cactusServer/entities/Plain.java @@ -8,11 +8,15 @@ private double c; // ���ʂ̕����� ax+by+cz+d ��c private double d; // ���ʂ̕����� ax+by+cz+d ��d + private Plain() { + // JSONDecode���̌Ăяo���p + } + public Plain(double a, double b, double c, double d) { - this.a = a; - this.b = b; - this.c = c; - this.d = d; + setA(a); + setB(b); + setC(c); + setD(d); } public double getA() { @@ -30,4 +34,20 @@ public double getD() { return d; } + + public void setA(double a) { + this.a = a; + } + + public void setB(double b) { + this.b = b; + } + + public void setC(double c) { + this.c = c; + } + + public void setD(double d) { + this.d = d; + } } diff --git a/src/main/java/cactusServer/entities/Player.java b/src/main/java/cactusServer/entities/Player.java index 2620cc7..f2c59d4 100644 --- a/src/main/java/cactusServer/entities/Player.java +++ b/src/main/java/cactusServer/entities/Player.java @@ -1,9 +1,10 @@ package cactusServer.entities; +import cactusServer.models.Instances; import framework.model3D.Position3D; public class Player extends Entity{ - private String InstanceURI; + private String instanceURI; private String characterURI; private String areaURI; private Position3D position; @@ -11,15 +12,19 @@ private CameraState cameraState; private EmoteState emoteState; - public Player(String InstanceURI, String characterURI, CameraState cameraState, EmoteState.EmoteType animationClassToStart) { - this.InstanceURI = InstanceURI; - this.characterURI = characterURI; - this.cameraState = cameraState; - this.emoteState = new EmoteState(animationClassToStart); + private Player() { + // JSONDecode���̌Ăяo���p } + public Player(String instanceURI, String characterURI, CameraState cameraState, EmoteState.EmoteType animationClassToStart) { + setInstanceURI(instanceURI); + setCharacterURI(characterURI); + setCameraState(cameraState); + setEmoteState(new EmoteState(animationClassToStart)); + } + public String getInstanceURI() { - return InstanceURI; + return instanceURI; } public String getCharacterURI() { @@ -33,4 +38,48 @@ public Position3D getPosition() { return position; } + + public Angle getAngle() { + return angle; + } + + public CameraState getCameraState() { + return cameraState; + } + + public EmoteState getEmoteState() { + return emoteState; + } + + public void setInstanceURI(String instanceURI) { + this.instanceURI = instanceURI; + } + + public void setCharacterURI(String characterURI) { + this.characterURI = characterURI; + } + + public void setPosition(Position3D position) { + this.position = position; + } + + public void setAngle(Angle angle) { + this.angle = angle; + } + + public void setCameraState(CameraState cameraState) { + this.cameraState = cameraState; + } + + public void setEmoteState(EmoteState emoteState) { + this.emoteState = emoteState; + } + + public void setanimationClassToStart(EmoteState.EmoteType animationClassToStart) { + setEmoteState(new EmoteState(animationClassToStart)); + } + + public void updateEmoteType(EmoteState.EmoteType animationClassToStart) { + this.emoteState.setEmoteType(animationClassToStart); + } } diff --git a/src/main/java/cactusServer/entities/StageModel.java b/src/main/java/cactusServer/entities/StageModel.java new file mode 100644 index 0000000..48466d6 --- /dev/null +++ b/src/main/java/cactusServer/entities/StageModel.java @@ -0,0 +1,5 @@ +package cactusServer.entities; + +public class StageModel { + +} diff --git a/src/main/java/cactusServer/entities/URIAddressedEntity.java b/src/main/java/cactusServer/entities/URIAddressedEntity.java new file mode 100644 index 0000000..53b6e99 --- /dev/null +++ b/src/main/java/cactusServer/entities/URIAddressedEntity.java @@ -0,0 +1,22 @@ +package cactusServer.entities; + +public class URIAddressedEntity extends AddressedEntity{ + private String uri; + + private URIAddressedEntity() { + // JSONDecode���̌Ăяo���p + } + + public URIAddressedEntity(String uri, Entity body) { + super(body); + setUri(uri); + } + + public String getUri() { + return uri; + } + + public void setUri(String uri) { + this.uri = uri; + } +} diff --git a/src/main/java/cactusServer/models/Instances.java b/src/main/java/cactusServer/models/Instances.java index 18ddea3..377c738 100644 --- a/src/main/java/cactusServer/models/Instances.java +++ b/src/main/java/cactusServer/models/Instances.java @@ -7,21 +7,26 @@ import org.apache.commons.lang3.RandomStringUtils; import cactusServer.entities.AddressedEntity; +import cactusServer.entities.CameraState; +import cactusServer.entities.EmoteState; +import cactusServer.entities.IDAddressedEntity; import cactusServer.entities.Instance; +import cactusServer.entities.Player; +import cactusServer.entities.StageModel; import cactusServer.utils.RandomStringGenerator; import net.arnx.jsonic.JSONHint; /** * �C���X�^���X���Ǘ�����N���X * - * @author ryo isitani + * @author r-isitani * */ public class Instances { private static Instances theInstance = null; private HashMap instanceMap = new HashMap<>(); // instance��ID�Ǝ��̂��Ǘ� + private HashMap playerMap = new HashMap<>(); private static final int UNIQUE_ID_LENGTH = 12; - private static final String INSTANCES_URI = "/CactusServer/rest/instances/"; private Instances() { @@ -39,17 +44,19 @@ return theInstance; } -// /** -// * �V����Instance���쐬����Map�ɒlj����� -// * -// * @param instance -// * @return �V�����쐬���ꂽID��Instance��Map -// */ -// public AddressedEntity createInstance(Instance instance) { -// String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, instanceMap.keySet()); -// instanceMap.put(id, instance); -// return new AddressedEntity(URI.create(INSTANCES_URI + id).toString(), instance); -// } + /** + * �V����Instance�N���X���쐬����Map�ɒlj����� + * @param name + * @param state + * @param stageModel + * @return + */ + public AddressedEntity createInstance(String name, Instance.State state, StageModel stageModel) { + String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, instanceMap.keySet()); + Instance instance = new Instance(name, state, stageModel); + instanceMap.put(id, instance); + return new IDAddressedEntity(id, instance); + } /** * InstancesRest�Ƃ̃G���[�����p (��ŏ���) @@ -64,18 +71,12 @@ {put(id, instance);} }; } - - /** - * InstancesRest�̃G���[�����p (�ォ�����) - * @param id - * @param name - * @return - */ - public Instance createInstance(String id, String name) { -// String id = createUniqueId(UNIQUE_ID_LENGTH, instanceMap.keySet()); - Instance instance = new Instance(name, Instance.State.AVAILABLE); - instanceMap.put(id, instance); - return instance; + + public AddressedEntity createPlayer(String instanceURI, String characterURI, CameraState cameraState, EmoteState.EmoteType animationClassToStart) { + String id = RandomStringGenerator.generateUniqueString(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); } /** @@ -88,6 +89,10 @@ public Instance getInstance(String instanceId) { return instanceMap.get(instanceId); } + + public Player getPlayer(String playerId) { + return playerMap.get(playerId); + } /** * ID�ɑΉ�����Instance��Map����폜���ĕԂ� @@ -99,4 +104,8 @@ public Instance destroyInstance(String instanceId) { return instanceMap.remove(instanceId); } + + public Player destroyPlayer(String playerId) { + return playerMap.remove(playerId); + } }