This commit is contained in:
Jesper Lundin 2007-04-18 10:04:08 +00:00
parent 99a30c2e8d
commit 90d685195d
5 changed files with 160 additions and 4 deletions

View file

@ -1,5 +1,7 @@
package ei.game.scene;
import ei.engine.math.Vector2f;
import ei.engine.math.Vector2i;
import ei.engine.scene.Entity;
public abstract class GameEntity{
@ -75,4 +77,7 @@ public abstract class GameEntity{
public abstract void update();
public abstract Entity getNode();
public abstract void attack(Vector2i target);
}

View file

@ -3,6 +3,7 @@ package ei.game.scene;
import ei.engine.math.Vector2f;
import ei.engine.math.Vector2i;
import ei.engine.math.Vector3f;
import ei.engine.scene.Box;
import ei.engine.scene.Node;
import ei.engine.scene.Sprite;

View file

@ -13,6 +13,7 @@ import ei.game.gamestate.InGameState;
import ei.game.scene.GameEntity;
import ei.game.scene.Map;
import ei.game.scene.weapons.Weapon;
import ei.game.scene.weapons.WeaponHandler;
/**
* The Unit class, handles the units in the game.
@ -92,6 +93,14 @@ public abstract class Unit extends GameEntity{
setPos(temp.getX(), temp.getY());
}
}
/**
* Lets a unit attack another unit or object in the world;
*/
public void attack(Vector2i target) {
Weapon wep = new Weapon(10, new Vector2f(unitNode.getLocation().getX(), unitNode.getLocation().getY()));
wep.launch(target);
WeaponHandler.getInstance().addWeapon(wep);
}
/**
* Updating the unit
@ -100,13 +109,12 @@ public abstract class Unit extends GameEntity{
if(moveTo != null) {
Vector2i moveVect = new Vector2i((int)moveTo.getX(),(int)moveTo.getY());
//Vector2i currentVect = new Vector2i((int)unitNode.getLocation().getX(), (int)unitNode.getLocation().getY());
int moveXminus = moveVect.getX()-oldVect.getX();
int moveYminus = moveVect.getY()-oldVect.getY();
float divideY = (moveVect.getY()+1)/(oldVect.getY()+1);
float divideX = (moveVect.getX()+1)/(oldVect.getX()+1);
float divideY = (moveVect.getY()+2)/(oldVect.getY()+2);
float divideX = (moveVect.getX()+2)/(oldVect.getX()+2);
//The rotation animation is done here.
if(moveVect.getX() < oldVect.getX() && divideY==1) {

View file

@ -1,5 +1,63 @@
package ei.game.scene.weapons;
public abstract class Weapon {
import ei.engine.effects.Particles;
import ei.engine.math.Vector2f;
import ei.engine.math.Vector2i;
import ei.engine.scene.Entity;
import ei.game.scene.Map;
public class Weapon {
private int range;
private Vector2i target;
private int velocity;
private Particles part;
private Vector2f startPos;
public Weapon(int range, Vector2f startPos) {
this.range = range;
this.startPos = startPos;
part = new Particles("weapon");
part.setLocation(startPos);
part.MaxSpeedX=500;
part.MaxSpeedY=400;
part.MaxSpeedZ=600;
part.size=5;
}
public void launch(Vector2i target) {
this.target = target;
}
public void update() {
System.out.println("target getx :"+target.getX());
System.out.println("startpos getx :"+startPos.getX());
System.out.println("target getx :"+target.getY());
System.out.println("startpos gety :"+startPos.getY());
System.out.println("part getLoc: "+part.getLocation().getX());
Vector2f vect = Map.getPixelByPos(target.getX(), target.getY());
float percentage = (vect.getX()-startPos.getX()) / (vect.getY()-startPos.getY());
System.out.println("Percentage; "+percentage);
if(target.getX() > part.getLocation().getX()) {
part.getLocation().add(4f*percentage, 0f, 0f);
}
if(target.getX() < part.getLocation().getX()) {
part.getLocation().add(-4.0f*percentage, 0f, 0f);
}
if(target.getY() > part.getLocation().getY()) {
part.getLocation().add(0f, 4.0f, 0f);
}
if(target.getY() < part.getLocation().getY()) {
part.getLocation().add(0f, -4.0f, 0f);
}
}
public Entity getNode() {
return part;
}
}

View file

@ -0,0 +1,84 @@
package ei.game.scene.weapons;
import java.util.ArrayList;
import ei.engine.scene.Entity;
import ei.engine.scene.Node;
import ei.game.player.Player;
import ei.game.player.PlayerHandler;
/**
* The WeaponHandler class handles weapons.
* @author Jesper Lundin
*
*/
public class WeaponHandler {
private Node weaponNode;
private ArrayList<Weapon> weapons;
private static WeaponHandler instance;
/**
* Created a weaponhandler.
*
*/
public WeaponHandler() {
weapons = new ArrayList<Weapon>();
weaponNode = new Node("weapon");
}
public boolean addWeapon(Weapon w){
if(!weapons.contains(w)){
weapons.add(w);
weaponNode.add(w.getNode());
return true;
}
return false;
}
/**
* Removes a player from the handler
* @param p The player to remove
* @return true if succesful else false
*/
public boolean removeWeapon(Weapon w){
if(weapons.contains(w)){
weapons.remove(w);
weaponNode.remove(w.getNode());
return true;
}
return false;
}
/**
* Updates all the weapons.
*
*/
public void update(){
for(int i=0; i<weapons.size() ;i++){
weapons.get(i).update();
}
}
/**
* return the current weaponNode.
* @return
*/
public Entity getNode() {
return weaponNode;
}
/**
* Returns the instance of this class
*
* @return The instance
*/
public static WeaponHandler getInstance(){
if(instance == null){
instance = new WeaponHandler();
}
return instance;
}
}