diff --git a/src/ei/game/gamestate/InGameState.java b/src/ei/game/gamestate/InGameState.java index 22a2bbe..00eb9fd 100644 --- a/src/ei/game/gamestate/InGameState.java +++ b/src/ei/game/gamestate/InGameState.java @@ -24,6 +24,8 @@ public class InGameState extends GameState{ private static InGameMouseInput mouse; private static InGameKeyboardInput keyboard; + protected static boolean network = false; + public InGameState(String name){ super(name); } @@ -97,6 +99,10 @@ public class InGameState extends GameState{ return map; } + public static boolean isNetwork(){ + return network; + } + public static void input(boolean b){ mouse.setEnabled(b); keyboard.setEnabled(b); diff --git a/src/ei/game/network/EIClient.java b/src/ei/game/network/EIClient.java new file mode 100644 index 0000000..f3fca34 --- /dev/null +++ b/src/ei/game/network/EIClient.java @@ -0,0 +1,13 @@ +package ei.game.network; + +import ei.game.gamestate.InGameState; + +public class EIClient extends InGameState{ + + public EIClient(String name) { + super(name); + } + + + +} diff --git a/src/ei/game/network/EIClientWorker.java b/src/ei/game/network/EIClientWorker.java new file mode 100644 index 0000000..41bbfe2 --- /dev/null +++ b/src/ei/game/network/EIClientWorker.java @@ -0,0 +1,13 @@ +package ei.game.network; + +import ei.engine.network.worker.Worker; + +public class EIClientWorker extends Worker{ + + @Override + public void update() { + // TODO Auto-generated method stub + + } + +} diff --git a/src/ei/game/network/EIServer.java b/src/ei/game/network/EIServer.java new file mode 100644 index 0000000..7668525 --- /dev/null +++ b/src/ei/game/network/EIServer.java @@ -0,0 +1,5 @@ +package ei.game.network; + +public class EIServer { + +} diff --git a/src/ei/game/network/entities/NetworkBuilding.java b/src/ei/game/network/entities/NetworkBuilding.java new file mode 100644 index 0000000..515895b --- /dev/null +++ b/src/ei/game/network/entities/NetworkBuilding.java @@ -0,0 +1,70 @@ +package ei.game.network.entities; + +import ei.engine.math.Vector2i; +import ei.game.gamestate.InGameState; +import ei.game.player.Player; +import ei.game.scene.buildings.Building; +import ei.game.scene.units.Unit; + +public abstract class NetworkBuilding extends Building{ + private static int nextId; + private int buildingId; + + public NetworkBuilding(int l, Vector2i pos, Player p, int size) { + super(l, pos, p, size); + buildingId = nextId; + nextId++; + } + + public int getBuildingId(){ + return buildingId; + } + + public void setPos(int x, int y, int size) { + if(!InGameState.isNetwork()){ + super.setPos(x, y, size); + } + else{ + + } + } + + public void buildUnit(Unit u){ + if(!InGameState.isNetwork()){ + super.buildUnit(u); + } + else{ + + } + } + + public void removeLast(){ + if(!InGameState.isNetwork()){ + super.removeLast(); + } + else{ + + } + } + + public void remove(){ + if(!InGameState.isNetwork()){ + super.remove(); + } + else{ + + } + } + + public void update() { + if(!InGameState.isNetwork()){ + super.update(); + } + else{ + + } + } + + + +} diff --git a/src/ei/game/network/entities/NetworkPlayer.java b/src/ei/game/network/entities/NetworkPlayer.java new file mode 100644 index 0000000..62ce5ee --- /dev/null +++ b/src/ei/game/network/entities/NetworkPlayer.java @@ -0,0 +1,25 @@ +package ei.game.network.entities; + +import ei.game.gamestate.InGameState; +import ei.game.player.Player; + +public abstract class NetworkPlayer extends Player{ + + public void setKredits(int k){ + if(!InGameState.isNetwork()){ + super.setKredits(k); + } + else{ + + } + } + + public void addKredits(int add){ + if(!InGameState.isNetwork()){ + super.addKredits(add); + } + else{ + + } + } +} diff --git a/src/ei/game/network/entities/NetworkUnit.java b/src/ei/game/network/entities/NetworkUnit.java new file mode 100644 index 0000000..b8e1180 --- /dev/null +++ b/src/ei/game/network/entities/NetworkUnit.java @@ -0,0 +1,82 @@ +package ei.game.network.entities; + +import ei.engine.math.Vector2i; +import ei.game.gamestate.InGameState; +import ei.game.player.Player; +import ei.game.scene.units.Unit; + +public abstract class NetworkUnit extends Unit{ + private static int nextId; + private int unitId = -1; + + public NetworkUnit(int l, Player p) { + super(l, p); + unitId = nextId; + nextId++; + } + + public NetworkUnit(int l, Vector2i pos, Player p) { + super(l, pos, p); + unitId = nextId; + nextId++; + } + + public int getUnitId(){ + return unitId; + } + + protected void move(int x, int y, boolean b) { + if(!InGameState.isNetwork()){ + super.move(x, y, b); + } + else{ + + } + } + + public void attack(Vector2i target, boolean play) { + if(!InGameState.isNetwork()){ + super.attack(target, play); + } + else{ + + } + } + + public void remove(){ + if(!InGameState.isNetwork()){ + super.remove(); + } + else{ + + } + } + + public void setPos(int x, int y) { + if(!InGameState.isNetwork()){ + super.setPos(x, y); + } + else{ + + } + } + + public void forcePos(int x, int y){ + if(!InGameState.isNetwork()){ + super.forcePos(x, y); + } + else{ + + } + } + + public void update() { + if(!InGameState.isNetwork()){ + super.update(); + } + else{ + + } + } + +} diff --git a/src/ei/game/network/entities/NetworkWepon.java b/src/ei/game/network/entities/NetworkWepon.java new file mode 100644 index 0000000..075fb30 --- /dev/null +++ b/src/ei/game/network/entities/NetworkWepon.java @@ -0,0 +1,31 @@ +package ei.game.network.entities; + +import ei.engine.math.Vector2f; +import ei.engine.math.Vector2i; +import ei.game.gamestate.InGameState; +import ei.game.scene.weapons.Weapon; + +public abstract class NetworkWepon extends Weapon{ + + public NetworkWepon(Vector2f startPos) { + super(startPos); + } + + public void launch(Vector2i target) { + if(!InGameState.isNetwork()){ + super.launch(target); + } + else{ + + } + } + + public void update() { + if(!InGameState.isNetwork()){ + super.update(); + } + else{ + + } + } +} diff --git a/src/ei/game/network/messages/AttackUnitMessage.java b/src/ei/game/network/messages/AttackUnitMessage.java new file mode 100644 index 0000000..f69fb9b --- /dev/null +++ b/src/ei/game/network/messages/AttackUnitMessage.java @@ -0,0 +1,9 @@ +package ei.game.network.messages; + +import ei.engine.network.message.Message; + +public class AttackUnitMessage extends Message{ + + private static final long serialVersionUID = 1L; + +} diff --git a/src/ei/game/network/messages/BuildUnitMessage.java b/src/ei/game/network/messages/BuildUnitMessage.java new file mode 100644 index 0000000..98f5463 --- /dev/null +++ b/src/ei/game/network/messages/BuildUnitMessage.java @@ -0,0 +1,9 @@ +package ei.game.network.messages; + +import ei.engine.network.message.Message; + +public class BuildUnitMessage extends Message{ + + private static final long serialVersionUID = 1L; + +} diff --git a/src/ei/game/network/messages/KreditsMessage.java b/src/ei/game/network/messages/KreditsMessage.java new file mode 100644 index 0000000..14d7a38 --- /dev/null +++ b/src/ei/game/network/messages/KreditsMessage.java @@ -0,0 +1,9 @@ +package ei.game.network.messages; + +import ei.engine.network.message.Message; + +public class KreditsMessage extends Message { + + private static final long serialVersionUID = 1L; + +} diff --git a/src/ei/game/network/messages/MoveUnitMessage.java b/src/ei/game/network/messages/MoveUnitMessage.java new file mode 100644 index 0000000..ad7269d --- /dev/null +++ b/src/ei/game/network/messages/MoveUnitMessage.java @@ -0,0 +1,9 @@ +package ei.game.network.messages; + +import ei.engine.network.message.Message; + +public class MoveUnitMessage extends Message { + + private static final long serialVersionUID = 1L; + +} diff --git a/src/ei/game/network/messages/NewUnitMessage.java b/src/ei/game/network/messages/NewUnitMessage.java new file mode 100644 index 0000000..3eaf6c1 --- /dev/null +++ b/src/ei/game/network/messages/NewUnitMessage.java @@ -0,0 +1,9 @@ +package ei.game.network.messages; + +import ei.engine.network.message.Message; + +public class NewUnitMessage extends Message { + + private static final long serialVersionUID = 1L; + +} diff --git a/src/ei/game/player/AiPlayer.java b/src/ei/game/player/AiPlayer.java index 7f35dbe..4db0dcf 100644 --- a/src/ei/game/player/AiPlayer.java +++ b/src/ei/game/player/AiPlayer.java @@ -2,6 +2,7 @@ package ei.game.player; import java.util.ArrayList; +import ei.game.network.entities.NetworkPlayer; import ei.game.scene.GameEntity; import ei.game.scene.buildings.Building; import ei.game.scene.buildings.CommandCenter; @@ -14,7 +15,7 @@ import ei.game.scene.units.Tank; * */ -public class AiPlayer extends Player{ +public class AiPlayer extends NetworkPlayer{ private CommandCenter cc; private int timer; private ArrayList attackingUnits; diff --git a/src/ei/game/player/GaiaPlayer.java b/src/ei/game/player/GaiaPlayer.java index ee639f9..1c93c1f 100644 --- a/src/ei/game/player/GaiaPlayer.java +++ b/src/ei/game/player/GaiaPlayer.java @@ -1,5 +1,6 @@ package ei.game.player; +import ei.game.network.entities.NetworkPlayer; import ei.game.scene.buildings.Building; /** @@ -8,7 +9,7 @@ import ei.game.scene.buildings.Building; * @author Ziver * */ -public class GaiaPlayer extends Player{ +public class GaiaPlayer extends NetworkPlayer{ @Override public Building getCC() { diff --git a/src/ei/game/player/HumanPlayer.java b/src/ei/game/player/HumanPlayer.java index 0ba3fb3..481d24b 100644 --- a/src/ei/game/player/HumanPlayer.java +++ b/src/ei/game/player/HumanPlayer.java @@ -2,10 +2,11 @@ package ei.game.player; import ei.engine.state.GameStateManager; import ei.game.gamestate.EndGameState; +import ei.game.network.entities.NetworkPlayer; import ei.game.scene.buildings.Building; import ei.game.scene.buildings.CommandCenter; -public class HumanPlayer extends Player{ +public class HumanPlayer extends NetworkPlayer{ private CommandCenter cc; public HumanPlayer(){ diff --git a/src/ei/game/scene/GameEntity.java b/src/ei/game/scene/GameEntity.java index 19f900d..aa8e584 100644 --- a/src/ei/game/scene/GameEntity.java +++ b/src/ei/game/scene/GameEntity.java @@ -22,16 +22,7 @@ public abstract class GameEntity{ public int getLife(){ return life; } - - public abstract boolean isTerrain(); - - public abstract Vector2i getPos(); - - public abstract boolean isAttacking(); - - public abstract boolean isMoving(); - /** * Set the life * @param l The life to set to @@ -93,9 +84,8 @@ public abstract class GameEntity{ protected abstract SelectBox getSelection(); - public void move(boolean play, int x, int y) { - - } + public void move(boolean play, int x, int y) {} + public abstract void remove(); public abstract void update(); @@ -106,6 +96,16 @@ public abstract class GameEntity{ public abstract Entity getSprite(); - public abstract int getMaintenanceCost(); + public abstract int getMaintenanceCost(); + + public abstract void initGraphics(); + + public abstract boolean isTerrain(); + + public abstract Vector2i getPos(); + + public abstract boolean isAttacking(); + + public abstract boolean isMoving(); } diff --git a/src/ei/game/scene/Map.java b/src/ei/game/scene/Map.java index 9e12648..d6a4ab9 100644 --- a/src/ei/game/scene/Map.java +++ b/src/ei/game/scene/Map.java @@ -153,7 +153,7 @@ public class Map { gaia.addUnit(new Prison(new Vector2i(i,j),gaia)); break; case OBJ_WATER: - gaia.addUnit(new Water(new Vector2i(i,j),gaia, 300)); + gaia.addUnit(new Water(new Vector2i(i,j),gaia)); break; } } diff --git a/src/ei/game/scene/buildings/Building.java b/src/ei/game/scene/buildings/Building.java index 313f039..178d4d1 100644 --- a/src/ei/game/scene/buildings/Building.java +++ b/src/ei/game/scene/buildings/Building.java @@ -41,6 +41,7 @@ public abstract class Building extends GameEntity{ moveFrom.sub(unitNode.getLocation().getX()-20,unitNode.getLocation().getY()); moveTo.sub(unitNode.getLocation().getX(),unitNode.getLocation().getY()); + initGraphics(); } public void setSelected(Player p,boolean b, boolean playSound) { diff --git a/src/ei/game/scene/buildings/CommandCenter.java b/src/ei/game/scene/buildings/CommandCenter.java index 1343b83..3ebb59a 100644 --- a/src/ei/game/scene/buildings/CommandCenter.java +++ b/src/ei/game/scene/buildings/CommandCenter.java @@ -25,6 +25,9 @@ public class CommandCenter extends Building{ public CommandCenter(int x, int y, Player p){ super(1000, new Vector2i(x,y), p, 4); + } + + public void initGraphics(){ ground = new Sprite("CC_Ground", "data/buildings/cc/cc_ground.png"); ground.setSize(new Vector2f(200,200)); getNode().add(ground); diff --git a/src/ei/game/scene/map/Factory.java b/src/ei/game/scene/map/Factory.java index 99352f5..15f9c4c 100644 --- a/src/ei/game/scene/map/Factory.java +++ b/src/ei/game/scene/map/Factory.java @@ -20,6 +20,9 @@ public class Factory extends Building{ public Factory(Vector2i pos, Player p) { super(500, pos, p, 4); + } + + public void initGraphics(){ factory = new Sprite("Factory",img[(int)(Math.random()*img.length)]); factory.setSize(new Vector2f(200,200)); getNode().add(factory); diff --git a/src/ei/game/scene/map/Prison.java b/src/ei/game/scene/map/Prison.java index ae07a20..ed39273 100644 --- a/src/ei/game/scene/map/Prison.java +++ b/src/ei/game/scene/map/Prison.java @@ -19,13 +19,16 @@ public class Prison extends Building{ public Prison(Vector2i pos, Player p) { super(2000, pos, p, 6); + } + + public void initGraphics(){ prison = new Sprite("Prison",img[(int)(Math.random()*img.length)]); prison.setSize(new Vector2f(300,300)); getNode().add(prison); selectionBox = new SelectBox(0,300,300,getMaxLife()); } - + @Override public Entity getSprite() { return prison; diff --git a/src/ei/game/scene/map/Stone.java b/src/ei/game/scene/map/Stone.java index f70d112..34691cc 100644 --- a/src/ei/game/scene/map/Stone.java +++ b/src/ei/game/scene/map/Stone.java @@ -25,10 +25,12 @@ public class Stone extends MapEntity{ } @Override - public void init() { + public void init() {} + + public void initGraphics(){ stone = new Sprite("Stone",img[(int)(Math.random()*img.length)]); stone.setSize(new Vector2f(40,40)); - getNode().add(stone); + getNode().add(stone); } @Override diff --git a/src/ei/game/scene/map/Water.java b/src/ei/game/scene/map/Water.java index b1ec045..19a1405 100644 --- a/src/ei/game/scene/map/Water.java +++ b/src/ei/game/scene/map/Water.java @@ -5,7 +5,6 @@ import ei.engine.math.Vector2i; import ei.engine.scene.Entity; import ei.engine.scene.Sprite; import ei.game.player.Player; -import ei.game.scene.Map; import ei.game.scene.SelectBox; import ei.game.scene.buildings.Building; @@ -15,12 +14,14 @@ public class Water extends Building{ }; private Sprite water; - public Water(Vector2i pos, Player p, int size) { - super(Integer.MAX_VALUE, pos, p, size%Map.POS_SIZE); + public Water(Vector2i pos, Player p) { + super(Integer.MAX_VALUE, pos, p, 6); + } + + public void initGraphics(){ water = new Sprite("Water",img[(int)(Math.random()*img.length)]); - water.setSize(new Vector2f(size, size)); - getNode().add(water); - + water.setSize(new Vector2f(300, 300)); + getNode().add(water); } @Override diff --git a/src/ei/game/scene/units/APU.java b/src/ei/game/scene/units/APU.java index 4624a93..37fb41c 100644 --- a/src/ei/game/scene/units/APU.java +++ b/src/ei/game/scene/units/APU.java @@ -4,6 +4,7 @@ import ei.engine.math.Vector2f; import ei.engine.math.Vector2i; import ei.engine.scene.Sprite; import ei.engine.sound.Sound; +import ei.game.network.entities.NetworkUnit; import ei.game.player.Player; import ei.game.scene.SelectBox; import ei.game.scene.weapons.Explotion; @@ -16,7 +17,7 @@ import ei.game.scene.weapons.WeaponHandler; * @author Jesper Lundin * */ -public class APU extends Unit{ +public class APU extends NetworkUnit{ private SelectBox selectionBox; private Sprite sprite; @@ -34,11 +35,14 @@ public class APU extends Unit{ } public void init(){ + setBuildTime(200); + setPrice(200); + } + + public void initGraphics(){ sprite = new Sprite("APU", "data/units/apu/apu0000.png"); sprite.setSize(new Vector2f(40,40)); getNode().add(sprite); - setBuildTime(200); - setPrice(200); gunSound = new Sound("gunSound", "data/sounds/machinegun.wav"); moveSound = new Sound[2]; diff --git a/src/ei/game/scene/units/Bomber.java b/src/ei/game/scene/units/Bomber.java index d73b410..81a8a9b 100644 --- a/src/ei/game/scene/units/Bomber.java +++ b/src/ei/game/scene/units/Bomber.java @@ -5,6 +5,7 @@ import ei.engine.math.Vector2i; import ei.engine.scene.Sprite; import ei.engine.sound.Sound; import ei.engine.texture.AnimatedTexture; +import ei.game.network.entities.NetworkUnit; import ei.game.player.Player; import ei.game.scene.SelectBox; import ei.game.scene.weapons.BomberWeapon; @@ -17,7 +18,7 @@ import ei.game.scene.weapons.WeaponHandler; * @author Jesper Lundin * */ -public class Bomber extends Unit{ +public class Bomber extends NetworkUnit{ private SelectBox selectionBox; private Sprite sprite; @@ -35,6 +36,15 @@ public class Bomber extends Unit{ } public void init(){ + getNode().add(sprite); + setBuildTime(400); + setPrice(800); + autoAttack(false); + + + } + + public void initGraphics(){ AnimatedTexture tex = new AnimatedTexture("BomberTexture"); tex.addAnimation("normal", new String[]{ "data/units/bomber/bomber0000.png", @@ -45,10 +55,6 @@ public class Bomber extends Unit{ tex.setDelay(5); sprite = new Sprite("Bomber",tex); sprite.setSize(new Vector2f(50,60)); - getNode().add(sprite); - setBuildTime(400); - setPrice(800); - autoAttack(false); gunSound = new Sound("gunSound", "data/sounds/bomberweapon.wav"); moveSound = new Sound[2]; diff --git a/src/ei/game/scene/units/Tank.java b/src/ei/game/scene/units/Tank.java index ff4b004..0976d35 100644 --- a/src/ei/game/scene/units/Tank.java +++ b/src/ei/game/scene/units/Tank.java @@ -4,6 +4,7 @@ import ei.engine.math.Vector2f; import ei.engine.math.Vector2i; import ei.engine.scene.Sprite; import ei.engine.sound.Sound; +import ei.game.network.entities.NetworkUnit; import ei.game.player.Player; import ei.game.scene.SelectBox; import ei.game.scene.weapons.CannonBall; @@ -16,7 +17,7 @@ import ei.game.scene.weapons.WeaponHandler; * @author Jesper Lundin * */ -public class Tank extends Unit{ +public class Tank extends NetworkUnit{ private SelectBox selectionBox; private Sprite sprite; @@ -34,11 +35,14 @@ public class Tank extends Unit{ } public void init(){ + setBuildTime(300); + setPrice(400); + } + + public void initGraphics(){ sprite = new Sprite("Tank", "data/units/tank/tank0000.png"); sprite.setSize(new Vector2f(40,40)); getNode().add(sprite); - setBuildTime(300); - setPrice(400); gunSound = new Sound("gunSound", "data/sounds/tankweapon.wav"); moveSound = new Sound[2]; diff --git a/src/ei/game/scene/units/Unit.java b/src/ei/game/scene/units/Unit.java index 30c774d..7bc8a7d 100644 --- a/src/ei/game/scene/units/Unit.java +++ b/src/ei/game/scene/units/Unit.java @@ -54,6 +54,7 @@ public abstract class Unit extends GameEntity{ setPos(pos.getX(), pos.getY()); autoAttack = true; init(); + initGraphics(); } /** @@ -66,6 +67,7 @@ public abstract class Unit extends GameEntity{ unitNode = new Node("UnitNode"); autoAttack = true; init(); + initGraphics(); } public void setSelected(Player p,boolean b,boolean playSound) { @@ -209,6 +211,7 @@ public abstract class Unit extends GameEntity{ this.target = target; attack = InGameState.getMap().getPos(target.getX(),target.getY()); } + public void autoAttack(boolean auto) { autoAttack = auto; } @@ -227,7 +230,6 @@ public abstract class Unit extends GameEntity{ public abstract void init(); - public void remove(){ unitNode.remove(getSprite()); getPlayer().removeUnit(this); diff --git a/src/ei/game/scene/weapons/BomberWeapon.java b/src/ei/game/scene/weapons/BomberWeapon.java index faa3ce6..3fdceb9 100644 --- a/src/ei/game/scene/weapons/BomberWeapon.java +++ b/src/ei/game/scene/weapons/BomberWeapon.java @@ -4,6 +4,7 @@ import ei.engine.effects.Particles; import ei.engine.math.Vector2f; import ei.engine.math.Vector2i; import ei.game.gamestate.InGameState; +import ei.game.network.entities.NetworkWepon; import ei.game.scene.Map; /** @@ -11,7 +12,7 @@ import ei.game.scene.Map; * @author Jesper Lundin * */ -public class BomberWeapon extends Weapon{ +public class BomberWeapon extends NetworkWepon{ private Particles part; private boolean hit; private Vector2i position; diff --git a/src/ei/game/scene/weapons/CannonBall.java b/src/ei/game/scene/weapons/CannonBall.java index ba03691..1d80f93 100644 --- a/src/ei/game/scene/weapons/CannonBall.java +++ b/src/ei/game/scene/weapons/CannonBall.java @@ -2,12 +2,13 @@ package ei.game.scene.weapons; import ei.engine.effects.Particles; import ei.engine.math.Vector2f; +import ei.game.network.entities.NetworkWepon; /** * @author Jesper Lundin * */ -public class CannonBall extends Weapon{ +public class CannonBall extends NetworkWepon{ public CannonBall(Vector2f startPos) { super(startPos); diff --git a/src/ei/game/scene/weapons/Explotion.java b/src/ei/game/scene/weapons/Explotion.java index 42c6018..b2aed1c 100644 --- a/src/ei/game/scene/weapons/Explotion.java +++ b/src/ei/game/scene/weapons/Explotion.java @@ -2,13 +2,14 @@ package ei.game.scene.weapons; import ei.engine.effects.Particles; import ei.engine.math.Vector2f; +import ei.game.network.entities.NetworkWepon; /** * * @author Ziver * */ -public class Explotion extends Weapon{ +public class Explotion extends NetworkWepon{ private Particles part; public Explotion(Vector2f startPos) { diff --git a/src/ei/game/scene/weapons/MachineGun.java b/src/ei/game/scene/weapons/MachineGun.java index 33af6dc..292e666 100644 --- a/src/ei/game/scene/weapons/MachineGun.java +++ b/src/ei/game/scene/weapons/MachineGun.java @@ -2,13 +2,14 @@ package ei.game.scene.weapons; import ei.engine.effects.Particles; import ei.engine.math.Vector2f; +import ei.game.network.entities.NetworkWepon; /** * * @author Jesper Lundin * */ -public class MachineGun extends Weapon{ +public class MachineGun extends NetworkWepon{ public MachineGun(Vector2f startPos) { super(startPos);