Projekt přejmenován. Neko nastaven na výchozí pozici
This commit is contained in:
parent
1a27dd6fab
commit
ceac37920b
104 changed files with 873 additions and 208 deletions
106
ONDClient/ClientEnemyManager.cs
Normal file
106
ONDClient/ClientEnemyManager.cs
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using GlobalClassLib;
|
||||
using Microsoft.Xna.Framework;
|
||||
using MonoGameLibrary.Graphics;
|
||||
using ONDClient.GUI;
|
||||
using ONDClient.Map;
|
||||
|
||||
namespace ONDClient;
|
||||
|
||||
public static class ClientEnemyManager {
|
||||
private static Dictionary<int, ClientEnemy> enemies = new();
|
||||
private static Point cameraCorner = new(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 EnemyUIElement(UIManager.EnemyAtlas["lurk-lit"], UIManager.EnemyAtlas["lurk-unlit"], cameraCorner),
|
||||
difficulty,
|
||||
location,
|
||||
new JumpscareUIElement(UIManager.EnemyAtlas["lurk-lit"], new(0, 0), 3, 2, 2, 0.1f, afterStop:defaultAfterJumpscare)
|
||||
));
|
||||
break;
|
||||
case EnemyType.NEKO:
|
||||
AddEnemy(new ClientEnemy(
|
||||
(int)type,
|
||||
"Neko",
|
||||
id,
|
||||
new EnemyUIElement(UIManager.EnemyAtlas["neko-lit"], UIManager.EnemyAtlas["neko-unlit"], cameraCorner, 1),
|
||||
difficulty,
|
||||
location,
|
||||
new JumpscareUIElement(UIManager.EnemyAtlas["neko-lit"], new(0, -30), 3, 2, 2, 0.1f, afterStop:defaultAfterJumpscare)
|
||||
));
|
||||
break;
|
||||
case EnemyType.SPOT:
|
||||
EnemyUIElement element =
|
||||
new EnemyUIElement([UIManager.EnemyAtlas["spot-awake-lit"], UIManager.EnemyAtlas["spot-asleep-lit"]],[UIManager.EnemyAtlas["spot-awake-unlit"], UIManager.EnemyAtlas["spot-asleep-unlit"]], cameraCorner, 2);
|
||||
element.SetTexture(true, 1);
|
||||
AddEnemy(new ClientEnemy(
|
||||
(int)type,
|
||||
"Spot",
|
||||
id,
|
||||
element,
|
||||
difficulty,
|
||||
location,
|
||||
new JumpscareUIElement(UIManager.EnemyAtlas["spot-awake-lit"], new(0, 0), 3, 2, 2, 0.1f, afterStop:defaultAfterJumpscare)
|
||||
));
|
||||
break;
|
||||
case EnemyType.DASH:
|
||||
AddEnemy(new ClientEnemy(
|
||||
(int)type,
|
||||
"Dash",
|
||||
id,
|
||||
new EnemyUIElement(UIManager.EnemyAtlas["dash-lit"], UIManager.EnemyAtlas["dash-unlit"], cameraCorner, 3),
|
||||
difficulty,
|
||||
location,
|
||||
new JumpscareUIElement(UIManager.EnemyAtlas["dash-lit"], new(0, 0), 3, 2, 2, 0.1f, afterStop:defaultAfterJumpscare)
|
||||
));
|
||||
break;
|
||||
case EnemyType.MARE:
|
||||
AddEnemy(new ClientEnemy(
|
||||
(int)type,
|
||||
"Mare",
|
||||
id,
|
||||
new EnemyUIElement(UIManager.EnemyAtlas["mare-lit"], UIManager.EnemyAtlas["mare-unlit"], cameraCorner),
|
||||
difficulty,
|
||||
location,
|
||||
new JumpscareUIElement(UIManager.EnemyAtlas["mare-lit"], 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<ClientEnemy> output = new();
|
||||
foreach (var e in enemies.Values){
|
||||
if (e.Location == tile){
|
||||
output.Add(e);
|
||||
}
|
||||
}
|
||||
|
||||
return output.ToArray();
|
||||
}
|
||||
|
||||
public static void ClearEnemies() {
|
||||
enemies.Clear();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue