mirror of
https://github.com/Phantop/LADXHD.git
synced 2024-11-01 04:14:22 +00:00
84 lines
2.7 KiB
C#
84 lines
2.7 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.Things;
|
|||
|
|
|||
|
namespace ProjectZ.InGame.GameObjects.Dungeon
|
|||
|
{
|
|||
|
class ObjGraveTrigger : GameObject
|
|||
|
{
|
|||
|
private readonly int[] _correctDirection = { 3, 0, 1, 2, 1 };
|
|||
|
private readonly string _triggerKey;
|
|||
|
|
|||
|
private int _currentState;
|
|||
|
|
|||
|
// object to set a key if the gravestones get moved in the right order in the right direction
|
|||
|
public ObjGraveTrigger() : base("editor grave trigger") { }
|
|||
|
|
|||
|
public ObjGraveTrigger(Map.Map map, int posX, int posY, string triggerKey) : base(map)
|
|||
|
{
|
|||
|
Tags = Values.GameObjectTag.None;
|
|||
|
|
|||
|
EntityPosition = new CPosition(posX, posY, 0);
|
|||
|
EntitySize = new Rectangle(0, 0, 16, 16);
|
|||
|
|
|||
|
_triggerKey = triggerKey;
|
|||
|
|
|||
|
if (string.IsNullOrEmpty(_triggerKey))
|
|||
|
{
|
|||
|
IsDead = true;
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
Game1.GameManager.SaveManager.SetString(_triggerKey, "0");
|
|||
|
|
|||
|
AddComponent(KeyChangeListenerComponent.Index, new KeyChangeListenerComponent(OnKeyChange));
|
|||
|
}
|
|||
|
|
|||
|
private void OnKeyChange()
|
|||
|
{
|
|||
|
var reset = true;
|
|||
|
|
|||
|
for (var i = 0; i < 5; i++)
|
|||
|
{
|
|||
|
var strKey = Game1.GameManager.SaveManager.GetString("ow_grave_" + i + "_dir");
|
|||
|
|
|||
|
// key is set?
|
|||
|
if (!string.IsNullOrEmpty(strKey) && strKey != "-1")
|
|||
|
{
|
|||
|
reset = false;
|
|||
|
var correctDirection = _correctDirection[i].ToString() == strKey;
|
|||
|
|
|||
|
// player moved the next gravestone in the correct direction
|
|||
|
if (correctDirection)
|
|||
|
{
|
|||
|
if (_currentState == i)
|
|||
|
{
|
|||
|
_currentState++;
|
|||
|
if (_currentState == 5)
|
|||
|
{
|
|||
|
Game1.GameManager.SaveManager.SetString(_triggerKey, "1");
|
|||
|
|
|||
|
// remove the object
|
|||
|
Map.Objects.DeleteObjects.Add(this);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// not the correct gravestone moved or in the wrong direction
|
|||
|
_currentState = 5;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// was reset?
|
|||
|
if (reset)
|
|||
|
{
|
|||
|
_currentState = 0;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|