mirror of
https://github.com/Phantop/LADXHD.git
synced 2024-11-01 04:14:22 +00:00
58 lines
1.7 KiB
C#
58 lines
1.7 KiB
C#
using Microsoft.Xna.Framework;
|
|
using ProjectZ.InGame.GameObjects.Base;
|
|
using ProjectZ.InGame.GameObjects.Base.Components;
|
|
|
|
namespace ProjectZ.InGame.GameObjects.Things
|
|
{
|
|
internal class ObjKeyConditionSetter : GameObject
|
|
{
|
|
private readonly SaveLoad.ConditionNode _condition;
|
|
private readonly string _strKey;
|
|
|
|
private bool _init;
|
|
private bool _state;
|
|
// key will be set and reset or just set
|
|
private bool _reset;
|
|
|
|
public ObjKeyConditionSetter() : base("editor key condition setter")
|
|
{
|
|
EditorColor = Color.Green;
|
|
}
|
|
|
|
public ObjKeyConditionSetter(Map.Map map, int posX, int posY, string strKey, string strCondition, bool reset) : base(map)
|
|
{
|
|
// set the key and delete the object
|
|
if (string.IsNullOrEmpty(strKey) || string.IsNullOrEmpty(strCondition))
|
|
{
|
|
IsDead = true;
|
|
return;
|
|
}
|
|
|
|
_strKey = strKey;
|
|
_condition = SaveLoad.SaveCondition.GetConditionNode(strCondition);
|
|
_reset = reset;
|
|
|
|
AddComponent(KeyChangeListenerComponent.Index, new KeyChangeListenerComponent(KeyChanged));
|
|
}
|
|
|
|
public void KeyChanged()
|
|
{
|
|
var active = _condition.Check();
|
|
|
|
if (_init && active == _state)
|
|
return;
|
|
|
|
_init = true;
|
|
|
|
if (active || _reset)
|
|
{
|
|
// update the state
|
|
_state = active;
|
|
|
|
Game1.GameManager.SaveManager.SetString(_strKey, active ? "1" : "0");
|
|
// trigger event on the right map
|
|
Map.Objects.TriggerKeyChange();
|
|
}
|
|
}
|
|
}
|
|
} |