- Game Target: Kill Auto Hero - Auto Hero - Automatically runs to next enemy and bashes away - Stats increase with every lost battle - Mana - Player has limited mana available - Used to spawn enemies - Used to upgrade enemies - Gain mana by dealing Damage to Auto Hero or defeating him - Can be spent on permanent upgrades - Persists after battle rounds - Enemies - Multiple Types - Close combat, weak - Tank - Far Archer / Mage - Drag-n-drop enemies into game - Enemies stay at their spawned position - Upgrades - HP - Deal more damage - Take less damage - Reduced Mana Costs - One-time use extreme buffs to put on a specific enemy ---------------------------------------------- - Weitere Sprites für bestimmte Klassen suchen - Oberklasse Enemy mit HP, Stats etc - Enemies haben (permanente) Upgrades - Unterklassen für spezifische Behaviors, z.B. für movement, attacks etc - Enemies bleiben tot sobald tot - AntiPlayer -> StatsManager singleton mit dontDestroyOnLoad - hat Methoden, um spezifische Upgrades zu exposen - speichert Mana und wie viele Upgrades wovon man schon hat - Mana wird immer generiert, sobald man etwas damage dealt - Mana bleibt immer erhalten und wird nie resetted - Upgrades kann man erst kaufen, sobald mindestens ein Enemy auf dem Feld ist - public EnemyStats GetEnemyStats() - AntiPlayer stats bleiben auch im StatsManager, stats sind aber fixed pro Szene - public AntiPlayerStats GetAntiPlayerStats(int stage) - Enemy Stats bleiben über Szenen erhalten -> Enemy Basisklasse - zieht sich Upgrades aus StatsManager - macht jeden Frame StatsManager.GetEnemyStats() oder so - ruft darauf basierend abstrakte Methoden in Unterklasse auf - abstract void Attack(), called on Timer - managed selber HP - TakeDamage(int dmg) - aufgerufen vom AntiPlayer - Dessen Schwert hat OnTriggerEnter2D() und berechnet dann seinen Damage und damaged den Enemy - anders herum, wenn Enemy den AntiPlayer damaged: - Enemy hat OnTriggerEnter2D(), berechnet eigenes Damage, damaged Player - Oder ein Projektil macht das -> Enemy-spezifische Unterklassen - Implementeren abstrakte Methoden wie Attack() - Schießen Pfeile, Schwertattacke etc