From 4e7722fedb3b7ac5bb7609963c90881563ae42e4 Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Thu, 29 Mar 2007 23:21:00 +0000 Subject: [PATCH] This is a big commit. Added mouse cursors and a load bar. Started whit the game. and many many other things --- src/data/cursor.png | Bin 0 -> 16482 bytes src/data/enemy.png | Bin 0 -> 17179 bytes src/data/loadbar.png | Bin 0 -> 1547 bytes src/data/loadbar_back.png | Bin 0 -> 257 bytes src/data/loadbar_front.png | Bin 0 -> 446 bytes src/data/map/sand.jpg | Bin 0 -> 77590 bytes src/ei/engine/LWJGLGameWindow.java | 17 +-- src/ei/engine/effects/Particles.java | 15 +++ src/ei/engine/input/Input.java | 1 - src/ei/engine/input/MouseInput.java | 51 ++++++-- src/ei/engine/scene/AnimatedSprite.java | 25 ++-- src/ei/engine/scene/Entity.java | 32 ++--- src/ei/engine/scene/Sprite.java | 31 +++-- src/ei/engine/sound/Sound.java | 17 ++- src/ei/engine/sound/SoundManager.java | 1 - src/ei/engine/state/GameState.java | 31 +++++ src/ei/engine/state/GameStateManager.java | 4 +- src/ei/engine/test/GameStateTest.java | 19 +++ src/ei/engine/test/GameStateTestState.java | 49 ++++++++ ...sitionTest.java => SoundPositionTest.java} | 10 +- src/ei/engine/texture/MultiTexture.java | 12 ++ src/ei/engine/texture/Texture.java | 8 +- src/ei/engine/texture/TextureLoader.java | 2 +- src/ei/game/EI.java | 4 +- src/ei/game/gamestate/InGameState.java | 32 ++--- src/ei/game/gamestate/LoadingState.java | 115 ++++++++++++++++++ src/ei/game/input/InGameKeyboardInput.java | 5 + src/ei/game/input/InGameMouseInput.java | 54 ++++++++ src/ei/game/player/Human.java | 5 + src/ei/game/scene/GameEntity.java | 26 ++++ src/ei/game/scene/Map.java | 92 ++++++++++++++ src/ei/game/scene/buildings/Building.java | 17 +++ src/ei/game/scene/units/Unit.java | 12 ++ src/ei/game/scene/weapons/Weapon.java | 5 + 34 files changed, 597 insertions(+), 95 deletions(-) create mode 100644 src/data/cursor.png create mode 100644 src/data/enemy.png create mode 100644 src/data/loadbar.png create mode 100644 src/data/loadbar_back.png create mode 100644 src/data/loadbar_front.png create mode 100644 src/data/map/sand.jpg create mode 100644 src/ei/engine/test/GameStateTest.java create mode 100644 src/ei/engine/test/GameStateTestState.java rename src/ei/engine/test/ex/{PositionTest.java => SoundPositionTest.java} (95%) create mode 100644 src/ei/engine/texture/MultiTexture.java create mode 100644 src/ei/game/gamestate/LoadingState.java create mode 100644 src/ei/game/input/InGameKeyboardInput.java create mode 100644 src/ei/game/input/InGameMouseInput.java create mode 100644 src/ei/game/player/Human.java create mode 100644 src/ei/game/scene/GameEntity.java create mode 100644 src/ei/game/scene/Map.java create mode 100644 src/ei/game/scene/buildings/Building.java create mode 100644 src/ei/game/scene/units/Unit.java create mode 100644 src/ei/game/scene/weapons/Weapon.java diff --git a/src/data/cursor.png b/src/data/cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..e528dea51f6c69fdb649d0842809ff47361ff2b8 GIT binary patch literal 16482 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 XmPz#++57+gHvvdRQB$E#&NBReXipz{ literal 0 HcmV?d00001 diff --git a/src/data/enemy.png b/src/data/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..b08e1f7fe0405bf1d9d7085bcee727329b7b3aaf GIT binary patch literal 17179 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 mY1OrCLK-@AznxlryBL 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 xSev`v literal 0 HcmV?d00001 diff --git a/src/data/loadbar_back.png b/src/data/loadbar_back.png new file mode 100644 index 0000000000000000000000000000000000000000..46728103a248b5e631d0f47d99b67120d2db43be GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0y~yV9W%vl{nad`Ki5R#Fq;O^-g z@IFN~52&!*)5S5Q;?~u3D?KRIJhB+oe3^Pm^)OZsvA<+$< o%wRr*R^vsY!HR)=LYm}tId`%+JnOYm06Kxe)78&qol`;+0B7Guc>n+a literal 0 HcmV?d00001 diff --git a/src/data/loadbar_front.png b/src/data/loadbar_front.png new file mode 100644 index 0000000000000000000000000000000000000000..9a3f809e834ef86967dcfffc5be66473208456c1 GIT binary patch literal 446 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 N1pL4uH}=18{{zBmrOE&R literal 0 HcmV?d00001 diff --git a/src/ei/engine/LWJGLGameWindow.java b/src/ei/engine/LWJGLGameWindow.java index d2c846a..d308c3e 100644 --- a/src/ei/engine/LWJGLGameWindow.java +++ b/src/ei/engine/LWJGLGameWindow.java @@ -86,13 +86,18 @@ public class LWJGLGameWindow { // Create the display window Display.create(); - + // enable textures since we're going to use these for our sprites GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glShadeModel(GL11.GL_SMOOTH); + // disable the OpenGL depth test since we're rendering 2D graphics + GL11.glDisable(GL11.GL_DEPTH_TEST); + // disable lights (we do not nead them) + GL11.glDisable(GL11.GL_LIGHTING); // Enable Smooth Shading GL11.glShadeModel(GL11.GL_SMOOTH); // Black Background - GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.5f); + GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // Depth Buffer Setup GL11.glClearDepth(1.0f); @@ -105,18 +110,16 @@ public class LWJGLGameWindow { // Select The Modelview Matrix (controls model orientation) GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glLoadIdentity(); - // disable the OpenGL depth test since we're rendering 2D graphics - GL11.glDisable(GL11.GL_DEPTH_TEST); + //Enable Blending GL11.glEnable(GL11.GL_BLEND); - //Type Of Blending To Perform - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); // Enable vsync if we can (due to how OpenGL works, it cannot be guarenteed to always work) Display.setVSyncEnabled(true); + // The last steps timer = new FpsTimer(); diff --git a/src/ei/engine/effects/Particles.java b/src/ei/engine/effects/Particles.java index c8bfe00..316e7f2 100644 --- a/src/ei/engine/effects/Particles.java +++ b/src/ei/engine/effects/Particles.java @@ -8,6 +8,8 @@ package ei.engine.effects; * Visit Our Sites At www.tiptup.com and nehe.gamedev.net */ +import java.awt.Rectangle; + import org.lwjgl.opengl.GL11; import ei.engine.scene.Entity; @@ -155,6 +157,8 @@ public class Particles extends Entity{ texture.bindGL(); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + for(int i=0;i LWJGLGameWindow.getHeight()) { cursorY = LWJGLGameWindow.getHeight(); } - mouseMove(cursorX,cursorY); } + mouseUpdate(cursorX,cursorY,mouseDW); while ( Mouse.next() ) { - if(Mouse.getEventButton() == 0 && Mouse.getEventButtonState() == true) { - mouseDown(cursorX, cursorY); + if(Mouse.getEventButton() >= 0 && Mouse.getEventButtonState() == true) { + mouseDown(Mouse.getEventButton(),cursorX, cursorY); } - if(Mouse.getEventButton() == 0 && Mouse.getEventButtonState() == false) { - mouseUp(cursorX, cursorY); + if(Mouse.getEventButton() >= 0 && Mouse.getEventButtonState() == false) { + mouseUp(Mouse.getEventButton(),cursorX, cursorY); } } if(cursor != null){ - cursor.setLocation(new Vector2f(cursorX, cursorY)); + cursor.setLocation(new Vector2f(cursorX, + LWJGLGameWindow.getHeight()-cursorY)); } } /** * Called by update() when mouse moves */ - public abstract void mouseMove(int x, int y); + public abstract void mouseUpdate(int x, int y, int w); /** * Called by update() when mouse button is pressed */ - public abstract void mouseDown(int x, int y); + public abstract void mouseDown(int event,int x, int y); /** * Called by update() when mouse button is released */ - public abstract void mouseUp(int x, int y); + public abstract void mouseUp(int event,int x, int y); } diff --git a/src/ei/engine/scene/AnimatedSprite.java b/src/ei/engine/scene/AnimatedSprite.java index 050ce78..f61291e 100644 --- a/src/ei/engine/scene/AnimatedSprite.java +++ b/src/ei/engine/scene/AnimatedSprite.java @@ -1,5 +1,6 @@ package ei.engine.scene; +import java.awt.Rectangle; import java.util.HashMap; import org.lwjgl.opengl.GL11; @@ -113,17 +114,14 @@ public class AnimatedSprite extends Entity { // store the current model matrix GL11.glPushMatrix(); - //Sets the scale of the sprite - super.setScaleGL(); //Sets the location super.setTranslationGL(); //the rotation - super.setRotationGL(); - //and sets back the rotation so that the rotation pivot is the center of the sprite - super.setTranslationGL( - -textures.get(currentAnimation)[textureId].getImageWidth()/2, - -textures.get(currentAnimation)[textureId].getImageHeight()/2, - 0); + super.setRotationGL( + textures.get(currentAnimation)[textureId].getImageWidth()/2, + textures.get(currentAnimation)[textureId].getImageHeight()/2); + //Sets the scale of the sprite + super.setScaleGL(); // bind to the appropriate texture for this sprite textures.get(currentAnimation)[textureId].bindGL(); @@ -160,4 +158,15 @@ public class AnimatedSprite extends Entity { } } } + + /** + * Returns the bound of this class + */ + public Rectangle getBound() { + return new Rectangle( + (int)getLocation().getX(), + (int)getLocation().getY(), + textures.get(currentAnimation)[textureId].getImageWidth(), + textures.get(currentAnimation)[textureId].getImageHeight()); + } } \ No newline at end of file diff --git a/src/ei/engine/scene/Entity.java b/src/ei/engine/scene/Entity.java index bf6b680..d49a7c4 100644 --- a/src/ei/engine/scene/Entity.java +++ b/src/ei/engine/scene/Entity.java @@ -3,6 +3,8 @@ */ package ei.engine.scene; +import java.awt.Rectangle; + import org.lwjgl.opengl.GL11; import ei.engine.math.Vector2f; @@ -118,18 +120,6 @@ public abstract class Entity { GL11.glTranslatef(location.getX(), location.getY(), location.getZ()); } - /** - * Sets the location of the entity in opengl - * - * @param x The value to add x - * @param y The value to add y - * @param z The value to add z - */ - protected void setTranslationGL(float x, float y, float z){ - // translate to the right location and prepare to draw - GL11.glTranslatef(x,y, z); - } - protected void setScaleGL(){ // translate to the right location and prepare to draw GL11.glScalef(size.getX(), size.getY(), size.getZ()); @@ -138,21 +128,33 @@ public abstract class Entity { /** * Sets the rotation of the entity in opengl * before rendering. + * + * @param rx The x coordinate of the center of rotation + * @param ry The y coordinate of the center of rotation */ - protected void setRotationGL(){ + protected void setRotationGL(float rx, float ry){ + //GL11.glTranslatef(rx,ry, location.getZ()); // rotating the entity GL11.glRotatef(rotation.getX(), 1.0f, 0.0f, 0.0f); // Rotate On The X Axis GL11.glRotatef(rotation.getY(), 0.0f, 1.0f, 0.0f); // Rotate On The Y Axis GL11.glRotatef(rotation.getZ(), 0.0f, 0.0f, 1.0f); // Rotate On The Z Axis + GL11.glTranslatef(-rx,-ry, location.getZ()); + } + + + public boolean intersects(Entity e){ + return getBound().intersects(e.getBound()); } /** - * the render method should be implemented for every entity + * the render method can be implemented for every entity */ - public abstract void render(); + public void render(){} /** * the update method can be implemented for every entity */ public void update(){} + + public abstract Rectangle getBound(); } diff --git a/src/ei/engine/scene/Sprite.java b/src/ei/engine/scene/Sprite.java index fb6287f..665213a 100644 --- a/src/ei/engine/scene/Sprite.java +++ b/src/ei/engine/scene/Sprite.java @@ -1,5 +1,7 @@ package ei.engine.scene; +import java.awt.Rectangle; + import org.lwjgl.opengl.GL11; import ei.engine.texture.Texture; @@ -74,10 +76,14 @@ public class Sprite extends Entity { return texture.getImageHeight(); } - protected void bindTexture(){ - + /** + * Returns the texture + * @return The texture + */ + public Texture getTexture(){ + return texture; } - + /** * Draw the sprite */ @@ -85,14 +91,12 @@ public class Sprite extends Entity { // store the current model matrix GL11.glPushMatrix(); - //Sets the scale of the sprite - super.setScaleGL(); //Sets the location super.setTranslationGL(); //the rotation - super.setRotationGL(); - //and sets back the rotation so that the rotation pivot is the center of the sprite - super.setTranslationGL(-texture.getImageWidth()/2,-texture.getImageHeight()/2,0); + super.setRotationGL(texture.getImageWidth()/2,texture.getImageHeight()/2); + //Sets the scale of the sprite + super.setScaleGL(); // bind to the appropriate texture for this sprite texture.bindGL(); @@ -120,4 +124,15 @@ public class Sprite extends Entity { GL11.glPopMatrix(); } + /** + * Returns the bound of this class + */ + public Rectangle getBound() { + return new Rectangle( + (int)getLocation().getX(), + (int)getLocation().getY(), + texture.getImageWidth(), + texture.getImageHeight()); + } + } \ No newline at end of file diff --git a/src/ei/engine/sound/Sound.java b/src/ei/engine/sound/Sound.java index 46e8103..a77a7b1 100644 --- a/src/ei/engine/sound/Sound.java +++ b/src/ei/engine/sound/Sound.java @@ -1,12 +1,14 @@ package ei.engine.sound; +import java.awt.Rectangle; + import ei.engine.math.Vector3f; import ei.engine.scene.Entity; /** * A sound that can be played through OpenAL * - * @author Kevin Glass + * @author Ziver Koc */ public class Sound extends Entity{ private static int soundId = 1; @@ -91,9 +93,14 @@ public class Sound extends Entity{ return velocity; } - /** - * unimplamented method - * + /** + * Returns the bound of this class */ - public void render() {} + public Rectangle getBound() { + return new Rectangle( + (int)getLocation().getX(), + (int)getLocation().getY(), + 10, 10); + } + } diff --git a/src/ei/engine/sound/SoundManager.java b/src/ei/engine/sound/SoundManager.java index f2661c6..d6f8a18 100644 --- a/src/ei/engine/sound/SoundManager.java +++ b/src/ei/engine/sound/SoundManager.java @@ -14,7 +14,6 @@ import ei.engine.util.MultiPrintStream; /** * Responsible for holding and playing the sounds used in the game. * - * @author Kevin Glass * @author Ziver Koc */ public class SoundManager { diff --git a/src/ei/engine/state/GameState.java b/src/ei/engine/state/GameState.java index 4068f5c..8fd75e6 100644 --- a/src/ei/engine/state/GameState.java +++ b/src/ei/engine/state/GameState.java @@ -1,11 +1,24 @@ package ei.engine.state; +import ei.engine.input.InputHandler; + public abstract class GameState { private String name; + private InputHandler input; private boolean enabled = false; public GameState(String name){ this.name = name; + input = new InputHandler(); + } + + /** + * Returns the input handler of this state + * + * @return The input handler + */ + public InputHandler getInput(){ + return input; } /** @@ -30,6 +43,24 @@ public abstract class GameState { return name; } + /** + * Updates the State + * + */ + public void stateUpdate(){ + input.update(); + update(); + } + + /** + * Renders the state + * + */ + public void stateRender(){ + render(); + input.render(); + } + public abstract void update(); public abstract void render(); diff --git a/src/ei/engine/state/GameStateManager.java b/src/ei/engine/state/GameStateManager.java index 9cbc1fb..47d4f45 100644 --- a/src/ei/engine/state/GameStateManager.java +++ b/src/ei/engine/state/GameStateManager.java @@ -111,7 +111,7 @@ public class GameStateManager { public void update(){ for(int i=0; i loadTextures; + private Queue loadSounds; + // The name of the next state to activate after loading + private String nextState; + + // Temp things for the loadingbar + private int status; + private Sprite bar; + private Sprite loadBar; + private Sprite background; + + /** + * Creates a loadingstate + * @param name The name of the state + */ + public LoadingState(String name,String nextState) { + super(name); + this.nextState = nextState; + status = 0; + loadTextures = new LinkedList(); + loadSounds = new LinkedList(); + bar = new Sprite("Bar","data/loadbar_front.png"); + bar.setLocation(new Vector3f( + (LWJGLGameWindow.getWidth()/2), + (LWJGLGameWindow.getHeight()/2),0.0f)); + loadBar = new Sprite("LoadingBar","data/loadbar.png"); + loadBar.setLocation(new Vector3f( + (LWJGLGameWindow.getWidth()/2)-loadBar.getWidth(), + (LWJGLGameWindow.getHeight()/2)+3,0.0f)); + background = new Sprite("Bar","data/loadbar_back.png"); + background.setLocation(new Vector3f( + (LWJGLGameWindow.getWidth()/2), + (LWJGLGameWindow.getHeight()/2),0.0f)); + } + + /** + * Add a texture to be loaded + * @param url + */ + public void addTexture(String url){ + loadTextures.add(url); + } + + /** + * Add a sound to be loaded + * @param url + */ + public void addSound(String url){ + loadSounds.add(url); + } + + /** + * Loads the things + */ + public void update() { + if(!loadTextures.isEmpty()){ + TextureLoader.getTextureLoaderInstance().getTexture(loadTextures.poll()); + status++; + } + else if(!loadSounds.isEmpty()){ + SoundLoader.getInstnace().loadSound(loadSounds.poll()); + status++; + } + else{ + status++; + if(status >= 100){ + //deactivate this state and activate the next one + GameStateManager.getInstance().removeState(this); + GameStateManager.getInstance().setActive(nextState); + } + + } + background.update(); + loadBar.update(); + bar.update(); + } + + /** + * Render the load bar + */ + public void render() { + // Calculate the procentage + float procent = (float)status/100;//(loadTextures.size()+loadSounds.size()); + System.out.println("lol: "+procent); + loadBar.setLocation(new Vector3f( + (LWJGLGameWindow.getWidth()/2)-loadBar.getWidth()+(loadBar.getWidth()*procent), + (LWJGLGameWindow.getHeight()/2)+6,0.0f)); + //render the bar + background.render(); + loadBar.render(); + bar.render(); + } + +} diff --git a/src/ei/game/input/InGameKeyboardInput.java b/src/ei/game/input/InGameKeyboardInput.java new file mode 100644 index 0000000..b38f881 --- /dev/null +++ b/src/ei/game/input/InGameKeyboardInput.java @@ -0,0 +1,5 @@ +package ei.game.input; + +public class InGameKeyboardInput { + +} diff --git a/src/ei/game/input/InGameMouseInput.java b/src/ei/game/input/InGameMouseInput.java new file mode 100644 index 0000000..d887ba3 --- /dev/null +++ b/src/ei/game/input/InGameMouseInput.java @@ -0,0 +1,54 @@ +package ei.game.input; + +import ei.engine.LWJGLGameWindow; +import ei.engine.input.MouseInput; +import ei.engine.scene.Sprite; + +public class InGameMouseInput extends MouseInput{ + private static final int CAMERA_MOVE_BORDER = 40; + private static final float CAMERA_MOVE_SPEED = 6.0f; + + public InGameMouseInput() { + super("InGameMouseInput","data/cursor.png"); + Sprite s = getSprite(); + s.getTexture().setTextureWidth(50); + s.getTexture().setTextureHeight(50); + s.getTexture().setWidth(50); + s.getTexture().setHeight(50); + + } + + @Override + public void mouseUpdate(int x, int y, int w) { + // mov cam to the left + if(x < CAMERA_MOVE_BORDER){ + LWJGLGameWindow.getCamera().getLocation().add(-CAMERA_MOVE_SPEED,0,0); + } + // mov cam to the right + if(x > LWJGLGameWindow.getWidth()-CAMERA_MOVE_BORDER){ + LWJGLGameWindow.getCamera().getLocation().add(CAMERA_MOVE_SPEED,0,0); + } + // mov cam upp + if(y < CAMERA_MOVE_BORDER){ + LWJGLGameWindow.getCamera().getLocation().add(0,CAMERA_MOVE_SPEED,0); + } + // mov cam down + if(y > LWJGLGameWindow.getHeight()-CAMERA_MOVE_BORDER){ + LWJGLGameWindow.getCamera().getLocation().add(0,-CAMERA_MOVE_SPEED,0); + } + //System.out.println(x+"-"+y); + } + + @Override + public void mouseDown(int event,int x, int y) { + System.out.println("DOWN("+event+"): "+x+"-"+y); + + } + + @Override + public void mouseUp(int event,int x, int y) { + System.out.println("UP("+event+"): "+x+"-"+y); + + } + +} diff --git a/src/ei/game/player/Human.java b/src/ei/game/player/Human.java new file mode 100644 index 0000000..ae9040b --- /dev/null +++ b/src/ei/game/player/Human.java @@ -0,0 +1,5 @@ +package ei.game.player; + +public class Human { + +} diff --git a/src/ei/game/scene/GameEntity.java b/src/ei/game/scene/GameEntity.java new file mode 100644 index 0000000..3db5670 --- /dev/null +++ b/src/ei/game/scene/GameEntity.java @@ -0,0 +1,26 @@ +package ei.game.scene; + +public abstract class GameEntity{ + private int life; + + public GameEntity(int l){ + life = l; + } + + /** + * Returns the life + * + * @return The life + */ + public int getLife(){ + return life; + } + + /** + * Set the life + * @param l The life to set to + */ + public void setLife(int l){ + life = l; + } +} diff --git a/src/ei/game/scene/Map.java b/src/ei/game/scene/Map.java new file mode 100644 index 0000000..3ec4ca0 --- /dev/null +++ b/src/ei/game/scene/Map.java @@ -0,0 +1,92 @@ +package ei.game.scene; + +import ei.engine.math.Vector3f; +import ei.engine.scene.Node; +import ei.engine.scene.Sprite; + +public class Map { + private static final int POS_SIZE = 50; + private int width; + private int hight; + private GameEntity[][] map; + private Node mapNode; + + public Map(int w, int h){ + this.width = w; + this.hight = h; + init(); + } + + private void init(){ + map = new GameEntity[width][hight]; + + // init textures + mapNode = new Node("MapNode"); + for(int i=0; i availableUnits; + private ArrayList buildQueue; + + public Building(int l) { + super(l); + // TODO Auto-generated constructor stub + } + +} diff --git a/src/ei/game/scene/units/Unit.java b/src/ei/game/scene/units/Unit.java new file mode 100644 index 0000000..9cab81f --- /dev/null +++ b/src/ei/game/scene/units/Unit.java @@ -0,0 +1,12 @@ +package ei.game.scene.units; + +import ei.game.scene.GameEntity; + +public abstract class Unit extends GameEntity{ + + public Unit(int l) { + super(l); + // TODO Auto-generated constructor stub + } + +} diff --git a/src/ei/game/scene/weapons/Weapon.java b/src/ei/game/scene/weapons/Weapon.java new file mode 100644 index 0000000..e33ca27 --- /dev/null +++ b/src/ei/game/scene/weapons/Weapon.java @@ -0,0 +1,5 @@ +package ei.game.scene.weapons; + +public abstract class Weapon { + +}