From 379ff26c4ffa082e3701a49ff43988b99c0baba9 Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Sat, 2 Jan 2021 20:11:34 +0100 Subject: [PATCH] FightScreen taking n-Enemies --- core/src/com/trs/main/Hostile.java | 46 +++++++++++++++++++++++++ core/src/com/trs/main/MapContainer.java | 30 ++++++++++++---- 2 files changed, 69 insertions(+), 7 deletions(-) create mode 100644 core/src/com/trs/main/Hostile.java diff --git a/core/src/com/trs/main/Hostile.java b/core/src/com/trs/main/Hostile.java new file mode 100644 index 0000000..897fdb3 --- /dev/null +++ b/core/src/com/trs/main/Hostile.java @@ -0,0 +1,46 @@ +package com.trs.main; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.Batch; +import com.badlogic.gdx.math.Rectangle; +import com.badlogic.gdx.scenes.scene2d.Actor; + +public class Hostile extends Actor { + + int id; + Stats stats; + AnimatedSprite sprite; + Rectangle collisionRect; + + public Hostile(float xPos, float yPos, int id, Stats stats, String texture) { + + this.id = id; + this.stats = stats; + + Texture tx = new Texture(Gdx.files.internal("textureData/sprites/" + texture)); + sprite = new AnimatedSprite(tx, 64, 64, true); + + collisionRect = new Rectangle(xPos + 16, yPos, 32, 16); + + setX(xPos); + setY(yPos); + } + + @Override + public void act(float deltatime) { + sprite.updateAnimation(deltatime); + } + + @Override + public void draw(Batch batch, float deltatime) { + sprite.draw(batch); + } + + @Override + protected void positionChanged() { + sprite.setSpritePosition((int)getX(), (int)getY()); + collisionRect = new Rectangle(getX() + 16, getY(), 32, 16); + super.positionChanged(); //To change body of generated methods, choose Tools | Templates. + } +} diff --git a/core/src/com/trs/main/MapContainer.java b/core/src/com/trs/main/MapContainer.java index c6d82af..331ff83 100644 --- a/core/src/com/trs/main/MapContainer.java +++ b/core/src/com/trs/main/MapContainer.java @@ -155,6 +155,9 @@ public class MapContainer { p.movementY = 0; stage.addActor(p); + + stage.addActor(new Hostile(200, 200, 0, new Stats(), "sprite.png")); + stage.addActor(new Hostile(265, 200, 0, new Stats(), "sprite.png")); } public void render(float f){ @@ -176,7 +179,20 @@ public class MapContainer { // CREATING FightObject Array // Temporarily only Player - FightObject[] fightObjects = {new FightPlayer(getPlayer().getX(),getPlayer().getY(),getPlayer().playerSprite, getPlayer().stats, 0)}; + ArrayList tempObjects = new ArrayList<>(); + tempObjects.add(new FightPlayer(getPlayer().getX(),getPlayer().getY(),getPlayer().playerSprite, getPlayer().stats, 0)); + + for(Actor a : stage.getActors()) { + if(a instanceof Hostile) { + Enemy e = new Enemy(a.getX(), a.getY(), ((Hostile) a).sprite, ((Hostile) a).stats, ((Hostile) a).id); + tempObjects.add(e); + } + } + + FightObject[] fightObjects = new FightObject[tempObjects.size()]; + for(int i = 0; i< tempObjects.size(); i++){ + fightObjects[i] = tempObjects.get(i); + } fs = new FightScreen(stage.getBatch(), fightObjects, rects, getPlayer().getX()+32, getPlayer().getY()+32); } @@ -224,21 +240,21 @@ public class MapContainer { } else{ - /* + for(int i = stage.getActors().size-1; i >= 0; i--){ - if(stage.getActors().get(i) instanceof EnemyNpc){ - if(((EnemyNpc)stage.getActors().get(i)).id == object.id){ + if(stage.getActors().get(i) instanceof Hostile){ + if(((Hostile)stage.getActors().get(i)).id == object.id){ if(object.stats.getHp() <= 0){ stage.getActors().removeIndex(i); } else{ stage.getActors().get(i).setPosition(object.x, object.y); - ((EnemyNpc)stage.getActors().get(i)).stats = object.stats; + ((Hostile)stage.getActors().get(i)).stats = object.stats; } } } } - */ + } } @@ -297,7 +313,7 @@ public class MapContainer { public Player getPlayer(){ for(Actor a : stage.getActors()){ - if(a.getName().equals("player")){ + if(a instanceof Player){ return (Player)a; } }