mirror of
https://github.com/Phantop/LADXHD.git
synced 2024-11-01 04:14:22 +00:00
60 lines
2 KiB
C#
60 lines
2 KiB
C#
|
using Microsoft.Xna.Framework;
|
|||
|
using ProjectZ.InGame.GameObjects.Base;
|
|||
|
using ProjectZ.InGame.GameObjects.Base.CObjects;
|
|||
|
using ProjectZ.InGame.GameObjects.Base.Components;
|
|||
|
using ProjectZ.InGame.Map;
|
|||
|
|
|||
|
namespace ProjectZ.InGame.GameObjects.Enemies
|
|||
|
{
|
|||
|
class EnemyTorchTrap : GameObject
|
|||
|
{
|
|||
|
private readonly Rectangle _fieldRectangle;
|
|||
|
private readonly string _key;
|
|||
|
|
|||
|
private float _fireballCounter;
|
|||
|
private const int FireballTime = 3000;
|
|||
|
private bool _isActive;
|
|||
|
|
|||
|
public EnemyTorchTrap() : base("torch trap") { }
|
|||
|
|
|||
|
public EnemyTorchTrap(Map.Map map, int posX, int posY, string key) : base(map)
|
|||
|
{
|
|||
|
EntityPosition = new CPosition(posX + 8, posY + 8, 0);
|
|||
|
EntitySize = new Rectangle(-8, -8, 16, 16);
|
|||
|
|
|||
|
_fieldRectangle = map.GetField(posX, posY, 16);
|
|||
|
|
|||
|
_key = key;
|
|||
|
|
|||
|
if (!string.IsNullOrEmpty(_key))
|
|||
|
AddComponent(KeyChangeListenerComponent.Index, new KeyChangeListenerComponent(OnKeyChanged));
|
|||
|
else
|
|||
|
_isActive = true;
|
|||
|
|
|||
|
AddComponent(UpdateComponent.Index, new UpdateComponent(Update));
|
|||
|
}
|
|||
|
|
|||
|
private void OnKeyChanged()
|
|||
|
{
|
|||
|
_isActive = Game1.GameManager.SaveManager.GetString(_key) != "1";
|
|||
|
}
|
|||
|
|
|||
|
private void Update()
|
|||
|
{
|
|||
|
if (!_isActive || !_fieldRectangle.Contains(MapManager.ObjLink.EntityPosition.Position))
|
|||
|
return;
|
|||
|
|
|||
|
_fireballCounter += Game1.DeltaTime;
|
|||
|
if (_fireballCounter < FireballTime)
|
|||
|
return;
|
|||
|
|
|||
|
_fireballCounter -= FireballTime;
|
|||
|
|
|||
|
// spawn a fireball?
|
|||
|
var distance = EntityPosition.Position - MapManager.ObjLink.EntityPosition.Position;
|
|||
|
if (distance.Length() < 106)
|
|||
|
Map.Objects.SpawnObject(new EnemyFireball(Map, (int)EntityPosition.X, (int)EntityPosition.Y, 1.25f));
|
|||
|
}
|
|||
|
}
|
|||
|
}
|