From ce54b05bcbc2047ea810f689bd9a2f7ef974598e Mon Sep 17 00:00:00 2001 From: GammelJan Date: Wed, 27 May 2020 16:10:09 +0200 Subject: [PATCH] EHREA --- .../model/DungeonGenerator.java | 5 +- .../model/entities/Naturewizard.java | 106 ++++++++++++++++++ .../com/dungeoncrawler/view/GameScreen.java | 8 ++ 3 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 core/src/com/dungeoncrawler/model/entities/Naturewizard.java diff --git a/core/src/com/dungeoncrawler/model/DungeonGenerator.java b/core/src/com/dungeoncrawler/model/DungeonGenerator.java index 16ad2a8..56ac363 100644 --- a/core/src/com/dungeoncrawler/model/DungeonGenerator.java +++ b/core/src/com/dungeoncrawler/model/DungeonGenerator.java @@ -313,7 +313,7 @@ public class DungeonGenerator { Entity temp; - int id = (int) (Math.random() * 12); + int id = (int) (Math.random() * 13); switch(id){ case 0: temp = new Archer(xPos, yPos, lvl); @@ -357,6 +357,9 @@ public class DungeonGenerator { */ temp = null; break; + case 12: + temp = new Naturewizard(xPos, yPos, lvl); + break; default: temp = null; } diff --git a/core/src/com/dungeoncrawler/model/entities/Naturewizard.java b/core/src/com/dungeoncrawler/model/entities/Naturewizard.java new file mode 100644 index 0000000..31c2344 --- /dev/null +++ b/core/src/com/dungeoncrawler/model/entities/Naturewizard.java @@ -0,0 +1,106 @@ +/* + * 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 Naturewizard extends Entity{ + + int counter; + final int minRange; + final int maxRange; + final int attackSpeed; + + public Naturewizard(float xPos, float yPos, int lvl) { + super(xPos, yPos, lvl); + + this.maxhp = 75*lvl; + this.hp = this.maxhp; + this.direction = 1; + this.dmg = 8*lvl; + this.id = 22; + this.type = 1; + minRange = 60; + maxRange = 150; + attackSpeed = 80; + 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 + 32, yPosPlayer + 32); + int distance = (int) StaticMath.calculateDistance((int) this.xPos, (int) this.yPos, xPosPlayer, yPosPlayer, alpha); + + if(distance >= minRange && distance <= maxRange && counter % attackSpeed == 0){ + return true; + } + else{ + movementX = (int) (3 * Math.cos(alpha)); + movementY = (int) (3 * Math.sin(alpha)); + + if(distance < minRange){ + movementX *= -1; + movementY *= -1; + } + else if(distance >= minRange && distance <= maxRange){ + 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){ + Spell a = null; + + if(!isToDelete()){ + double alpha = StaticMath.calculateAngle((int) this.xPos, (int) this.yPos, xPosPlayer, yPosPlayer); + + a = new Spell(this.xPos + 32, this.yPos + 32, this.lvl,(int) this.dmg, 23, true); + int tempX = (int) (5 * Math.cos(alpha)); + int tempY = (int) (5 * 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 dd575bd..f7d0210 100644 --- a/core/src/com/dungeoncrawler/view/GameScreen.java +++ b/core/src/com/dungeoncrawler/view/GameScreen.java @@ -388,6 +388,14 @@ public class GameScreen { tx[0] = new Texture("sprites/spell/healspell.png"); entitySprites[i] = new EntitySprite(tx, 16, 16); break; + case 22: + tx[0] = new Texture("sprites/wizard/naturewizard_"+gender+".png"); + entitySprites[i] = new EntitySprite(tx, 64, 64); + break; + case 23: + tx[0] = new Texture("sprites/spell/naturespell.png"); + entitySprites[i] = new EntitySprite(tx, 16, 16); + break; } entitySprites[i].update((int) e.getxPos() + 32, (int) e.getyPos() + 32);