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
}