using System; using System.Collections.Generic; using System.Data; using System.Linq; using FNAF_Clone.GUI; using FNAF_Clone.Map; using GlobalClassLib; using Microsoft.Xna.Framework; namespace FNAF_Clone; public static class ClientEnemyManager { private static Dictionary enemies = new(); private static Point cameraCorner = new Point(64, 64); private static Action defaultAfterJumpscare = UIManager.ShowDeathScreen; public static void AddEnemy(ClientEnemy enemy) { enemies.Add(enemy.Id, enemy); UIManager.AddEnemySprite(enemy.Id, enemy.Sprite, enemy.JumpscareSprite); } public static void AddEnemyByTemplate(EnemyType type, int id, int difficulty, MapTileProjection location) { switch (type){ case EnemyType.LURK: AddEnemy(new ClientEnemy( (int)type, "Lurk", id, new UIElement(UIManager.EnemyAtlas[0], cameraCorner), difficulty, location, new JumpscareUIElement(UIManager.EnemyAtlas[0], new(0, 0), 3, 2, 2, 0.1f, afterStop:defaultAfterJumpscare))); break; case EnemyType.NEKO: AddEnemy(new ClientEnemy( (int)type, "Neko", id, new UIElement(UIManager.EnemyAtlas[1], cameraCorner), difficulty, location, new JumpscareUIElement(UIManager.EnemyAtlas[1], new(0, -30), 3, 2, 2, 0.1f, afterStop:defaultAfterJumpscare))); break; case EnemyType.SPOT: UIElement element = new UIElement([UIManager.EnemyAtlas[2], UIManager.EnemyAtlas[3], UIManager.EnemyAtlas[4], UIManager.EnemyAtlas[5]], cameraCorner); element.SetTexture(2); AddEnemy(new ClientEnemy( (int)type, "Spot", id, element, difficulty, location, new JumpscareUIElement(UIManager.EnemyAtlas[2], new(0, 0), 3, 2, 2, 0.1f, afterStop:defaultAfterJumpscare))); break; } } public static void Move(int id, MapTileProjection tile) { enemies[id].Location = tile; } public static ClientEnemy Get(int id) => enemies[id]; public static ClientEnemy[] GetByLocation(MapTileProjection tile) { List output = new(); foreach (var e in enemies.Values){ if (e.Location == tile){ output.Add(e); } } return output.ToArray(); } }