diff --git a/core/assets/sprites/firespell.png b/core/assets/sprites/firespell.png new file mode 100644 index 0000000..e03a40d Binary files /dev/null and b/core/assets/sprites/firespell.png differ diff --git a/core/assets/sprites/firewizard.png b/core/assets/sprites/firewizard.png index b908b57..0e50bfa 100644 Binary files a/core/assets/sprites/firewizard.png and b/core/assets/sprites/firewizard.png differ diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index 2216c08..55d5fd9 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -391,7 +391,6 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ roomPosY += 1; d.getPlayer().setxPos((roomX / 2)* 48); d.getPlayer().setyPos(48); - d.getPlayer().updateStats(level); gs.startLoadingScreen(); } @@ -430,6 +429,8 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ d.getPlayer().deleteKey(); + d.getPlayer().updateStats(level + 1); + gs.startLoadingScreen(); level++; @@ -512,10 +513,18 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(e[i].getHp() - p.getDmg() <= 0){ e[i].setHp(0); e[i].setToDelete(true); + System.out.println("TOTTOTTOT"); } else{ + + System.out.println(e[i].getHp()); + System.out.println("-"); + System.out.println(p.getDmg()); + System.out.println("="); + System.out.println(e[i].getHp() - p.getDmg()); + e[i].setHp(e[i].getHp() - p.getDmg()); - System.out.println("HIT"); + } } } diff --git a/core/src/com/dungeoncrawler/model/DungeonGenerator.java b/core/src/com/dungeoncrawler/model/DungeonGenerator.java index 84b2bb6..a33f343 100644 --- a/core/src/com/dungeoncrawler/model/DungeonGenerator.java +++ b/core/src/com/dungeoncrawler/model/DungeonGenerator.java @@ -308,7 +308,7 @@ public class DungeonGenerator { Entity temp; - int id = (int) (Math.random() * 3); + int id = (int) (Math.random() * 4); switch(id){ case 0: temp = new Archer(xPos, yPos, lvl); @@ -322,6 +322,10 @@ public class DungeonGenerator { temp = new Wizard(xPos, yPos, lvl); break; + case 3: + temp = new Firewizard(xPos, yPos, lvl); + break; + default: temp = null; } diff --git a/core/src/com/dungeoncrawler/model/Entity.java b/core/src/com/dungeoncrawler/model/Entity.java index 54c1d1a..3c473d8 100644 --- a/core/src/com/dungeoncrawler/model/Entity.java +++ b/core/src/com/dungeoncrawler/model/Entity.java @@ -37,6 +37,7 @@ public abstract class Entity { return true; } else{ + e.setHp(e.getHp() - this.dmg); return false; } diff --git a/core/src/com/dungeoncrawler/model/entities/Firewizard.java b/core/src/com/dungeoncrawler/model/entities/Firewizard.java new file mode 100644 index 0000000..eb5441b --- /dev/null +++ b/core/src/com/dungeoncrawler/model/entities/Firewizard.java @@ -0,0 +1,100 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.dungeoncrawler.model.entities; + +import com.dungeoncrawler.StaticMath; +import com.dungeoncrawler.model.Entity; + +/** + * + * @author jonathan + */ +public class Firewizard extends Entity{ + + int counter; + + public Firewizard(float xPos, float yPos, int lvl) { + super(xPos, yPos, lvl); + + this.maxhp = 80*lvl; + this.hp = this.maxhp; + this.direction = 1; + this.dmg = 25*lvl; + this.id = 6; + this.type = 1; + counter = 0; + // TODO: Sinnvolle Werte finden + + direction = 1; + } + + @Override + public boolean move(int xPosPlayer, int yPosPlayer) { + if(!isToDelete()){ + + double alpha = StaticMath.calculateAngle((int) this.xPos, (int) this.yPos, xPosPlayer, yPosPlayer); + int distance = (int) StaticMath.calculateDistance((int) this.xPos, (int) this.yPos, xPosPlayer, yPosPlayer, alpha); + + if(distance >= 104 && distance <= 184 && counter % 40 == 0){ + return true; + } + else{ + movementX = (int) (3 * Math.cos(alpha)); + movementY = (int) (3 * Math.sin(alpha)); + + if(distance < 124){ + movementX *= -1; + movementY *= -1; + } + else if(distance >= 124 && distance <= 164){ + movementX = 0; + movementY = 0; + } + + + xPos += movementX; + yPos += movementY; + } + + if(alpha >= Math.PI / -2 && alpha <= Math.PI / 2){ + setDirection(1); + } + else{ + setDirection(0); + } + + counter++; + } + + return false; + } + + @Override + public Entity shoot(int xPosPlayer, int yPosPlayer){ + Projectile a = null; + + if(!isToDelete()){ + double alpha = StaticMath.calculateAngle((int) this.xPos, (int) this.yPos, xPosPlayer, yPosPlayer); + + a = new Projectile(this.xPos + 32, this.yPos + 32, this.lvl,(int) this.dmg, 7, true); + int tempX = (int) (6 * Math.cos(alpha)); + int tempY = (int) (6 * Math.sin(alpha)); + + a.setMovementX(tempX); + a.setMovementY(tempY); + a.setAngle(alpha); + + if((alpha >= 0 && alpha <= Math.PI / 2) || (alpha <= 2 * Math.PI && alpha >= 2 * Math.PI - Math.PI / 2)){ + setDirection(1); + } + else{ + setDirection(0); + } + } + + return a; + } +} diff --git a/core/src/com/dungeoncrawler/view/GameScreen.java b/core/src/com/dungeoncrawler/view/GameScreen.java index 144b78a..8a3fd61 100644 --- a/core/src/com/dungeoncrawler/view/GameScreen.java +++ b/core/src/com/dungeoncrawler/view/GameScreen.java @@ -288,6 +288,15 @@ public class GameScreen { tx[0] = new Texture("sprites/laser.png"); entitySprites[i] = new EntitySprite(tx, 36, 15); break; + + case 6: + tx[0] = new Texture("sprites/firewizard.png"); + entitySprites[i] = new EntitySprite(tx, 64, 64); + break; + + case 7: + tx[0] = new Texture("sprites/firespell.png"); + entitySprites[i] = new EntitySprite(tx, 16, 16); } entitySprites[i].update((int) e.getxPos() + 32, (int) e.getyPos() + 32);