using System; using UnityEngine; using System.Collections; using System.Runtime.InteropServices; using UnityEngine.SceneManagement; public enum EControls { TilePressed, TileReleased, TileFlagPressed, TileFlagReleased, TileSquarePressed, TileSquareReleased, GameEscape } /// /// Defines a couple of default variables. Should be a singleton /// public class PersistentInfoScript : MonoBehaviour { #region Fields /// /// Default width of the field /// [Header("Default values")] public int DefaultFieldSizeX; /// /// Default height of the field /// public int DefaultFieldSizeY; /// /// Default number of mines on the field /// public int DefaultMines; /// /// If audio is enabled or not (unused) /// [Header("Options")] public bool AudioEnabled; /// /// Controls of the game /// public ActionMap Controls = new ActionMap(); #endregion #region Methods void Awake() { SetDefaultControls(); DontDestroyOnLoad(this); } /// /// Reload default controls scheme /// public void SetDefaultControls() { Controls = new ActionMap(); SetControl(EControls.TilePressed, KeyCode.Mouse0); SetControl(EControls.TileFlagPressed, KeyCode.Mouse1); SetControl(EControls.TileSquarePressed, KeyCode.Mouse2); SetControl(EControls.GameEscape, KeyCode.Escape); } /// /// Set separate controls /// /// /// public void SetControl(EControls control, KeyCode key) { switch (control) { case EControls.TilePressed: case EControls.TileReleased: Controls[EControls.TilePressed] = new Action(key, Action.EActionType.PressOnce); Controls[EControls.TileReleased] = new Action(key, Action.EActionType.ReleaseOnce); break; case EControls.TileFlagPressed: case EControls.TileFlagReleased: Controls[EControls.TileFlagPressed] = new Action(key, Action.EActionType.PressOnce); Controls[EControls.TileFlagReleased] = new Action(key, Action.EActionType.ReleaseOnce); break; case EControls.TileSquarePressed: case EControls.TileSquareReleased: Controls[EControls.TileSquarePressed] = new Action(key, Action.EActionType.PressOnce); Controls[EControls.TileSquareReleased] = new Action(key, Action.EActionType.ReleaseOnce); break; case EControls.GameEscape: Controls[EControls.GameEscape] = new Action(key, Action.EActionType.ReleaseOnce); break; default: throw new ArgumentOutOfRangeException("control"); } } #endregion }