public Enemy(Objectmanager objectmanager, ContentManager contentManager, Mathe mathe, Enemydatabase enemydatabase, Enemytype typ, Vector2 position, Richtung blickrichtung, float skalierung) { Gravitation = 0.40f; MaxSpeed = new Vector2(6, 15); this.Objectmanager = objectmanager; this.Mathe = mathe; this.State = Enemystate.Idle; this.Blickrichtung = blickrichtung; this.Skalierung = skalierung; this.PositionCurrent = position; this.Typ = typ; Enemy Tempenemy = enemydatabase.Read(typ); Texturmaße = new Vector2(Tempenemy.Texturmaße.X, Tempenemy.Texturmaße.Y); AniGeschwindigkeit = Tempenemy.AniGeschwindigkeit; Spalten = Tempenemy.Spalten; Texturname = Tempenemy.Texturname; Wiederholen = Tempenemy.Wiederholen; Textur = Tempenemy.Textur; Kollision = new Rectangle((int)(Texturmaße.X / 2) - 5, (int)Texturmaße.Y - 20, 10, 10); for (int i = 0; i < Textur.Count(); i++) { if (Texturname[i] == "Idle") { Animation = new Animation(Textur[i], true, Spalten[i], new Rectangle(0, 0, (int)Texturmaße.X, (int)Texturmaße.Y), skalierung, AniGeschwindigkeit[i]); break; } } }
public Enemy Read(Enemytype typ) { for (int i = 0; i < Enemys.Count(); i++) { if (Enemys[i].Typ == typ) return Enemys[i]; } return null; }
public void AddEnemy(Enemytype typ, Vector2 position, Richtung blickrichtung, float skalierung) { Enemys.Add(new Enemy(Objectmanager, ContentManager, Mathe, Enemydatabase, typ, position, blickrichtung, skalierung)); }
//Auswahl eines unbestimmten Gegners (Eventaktion) public Enemy PickEnemy(Enemytype typ, Vector2 position) { foreach (Enemy enemy in Enemys) { if ((enemy.Typ == typ) && (Mathe.Distanzberechnung(new Vector2(enemy.PositionCurrent.X + (enemy.Texturmaße.X / 2), enemy.PositionCurrent.Y + (enemy.Texturmaße.Y / 2)), position) < 100)) { return enemy; } } return null; }