//--------------------------------------------------------------------------------------------------------------------------------------------------- // // Copyright (C)2007 DarkWynter Studios. All rights reserved. // //--------------------------------------------------------------------------------------------------------------------------------------------------- // {Contact : darkwynter.com for licensing information //--------------------------------------------------------------------------------------------------------------------------------------------------- namespace DarkWynter.EventSystem { using System; using System.Collections.Generic; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Content; using System.Diagnostics; using System.Xml; /// /// Handles each GameEvent's Conditions, the SBE (currentGameConditions) /// Is the abstract of each GameEvent /// public class GameEvent { protected int eventLimitMilli; protected String eventSpeaker = ""; protected String eventMessage = ""; protected String eventTexturePath; protected Color eventBoxColor = Color.CornflowerBlue; // Enables visualization of GameEvents in 3D World #region GameEvent State Variables protected bool Finished = true; public bool isFinished { get { return Finished; } set { Finished = value; } } protected bool Triggered = false; public bool isTriggered { get { return Triggered; } set { Triggered = value; Finished = false; } } protected bool Retriggerable = false; public bool isRetriggerable { get { return Retriggerable; } set { Retriggerable = value; } } #endregion #region Static Board Evaluator (SBE) State Machine /// /// Type, used for parsing into the List /// public string typeID { get { return _typeID; } set { _typeID = value; } } public string _typeID; /// /// Sanity level that triggers the event /// public int _trigger_ID; public int trigger_ID { get { return _trigger_ID; } set { _trigger_ID = value; GameEventHandler.UpdateEvents(); } } /// /// ID Number of the Last Node Visited /// public int _lastNodeVisited; /// /// ID Number of the Last Node Visited /// Use the _underscore varient of this variable to avoid calling UpdateConditions. /// public int lastNodeVisited { get { return _lastNodeVisited; } set { _lastNodeVisited = value; GameEventHandler.UpdateEvents(); } } /// /// Number of coins that triggers the event /// public int _triggerCoins; /// /// Number of coins that triggers the event /// Use the _underscore varient of this variable to avoid calling UpdateConditions. /// public int triggerCoins { get { return _triggerCoins; } set { _triggerCoins = value; GameEventHandler.UpdateEvents(); } } /// /// Sanity level that triggers the event /// public int _triggerSanity; /// /// Sanity level that triggers the event /// Setting this variable also calls UpdatedEvents, causing Event System to trigger event if conditions match. /// Use the _underscore varient of this variable to avoid calling UpdateConditions. /// public int triggerSanity { get { return _triggerSanity; } set { _triggerSanity = value; GameEventHandler.UpdateEvents(); } } /// /// Tells the LevelEditor to draw the event /// public bool drawable { get { return _drawable; } set { _drawable = value; } } private bool _drawable; #endregion /// /// CurrentGameConditions Constructor /// public GameEvent() { _trigger_ID = -1; // _lastNodeVisited = 0; _triggerCoins = -1; _triggerSanity = -1; } /// /// Constructor for each Game Event /// /// XML Node public GameEvent(XmlNode node) { // Make object drawable on board if (node.Attributes["drawable"] != null) { this.drawable = bool.Parse(node.Attributes["drawable"].Value); } else { this.drawable = false; } this._typeID = node.Attributes["typeID"].Value; this._lastNodeVisited = int.Parse(node.Attributes["node"].Value); this._triggerCoins = int.Parse(node.Attributes["coins"].Value); this._triggerSanity = int.Parse(node.Attributes["sanity"].Value); this.isTriggered = true; } public virtual void FireEvent() { } ///// ///// Create XML for Events ///// ///// string //public virtual string ToXml() //{ // string xml = // "typeID=" + this._trigger_ID + // "node=" + this._lastNodeVisited + // "coins=" + this._triggerCoins + // "sanity=" + this._triggerSanity; // return xml; //} ///// ///// Overrides the ToString method for each GameEvent Condition ///// and CurrentGameConditions ///// ///// string //public override string ToString() //{ // string text = // "ID: " + _trigger_ID + "\n" + // "LastNode: " + _lastNodeVisited + "\n" + // "Coins: " + _triggerCoins + "\n" + // "Sanity: " + _triggerSanity + "\n"; // return text; //} public virtual void DrawEvent() { } } }