//---------------------------------------------------------------------------------------------------------------------------------------------------
// <copyright file="Enums_Engine.cs" company="DarkWynter Studios">
//     Copyright (C)2007 DarkWynter Studios.  All rights reserved.
// </copyright>
//---------------------------------------------------------------------------------------------------------------------------------------------------
// {License Information: Creative Commons}
//---------------------------------------------------------------------------------------------------------------------------------------------------


namespace DWGame.Globals
{
    /// <summary>
    /// Class containing all Engine-based Enums_Engine.
    /// Enums are int32 by default.
    /// We override enum "name" : byte for memory optimization
    /// </summary>
    public static class Enums_Engine
    {

        /// <summary>
        /// Major Mode of Execution
        /// </summary>
        public enum EngineState : byte
        {
            /// <summary>
            /// None
            /// </summary>
            NONE_SELECTED,
            /// <summary>
            /// Linear play
            /// </summary>
            MENU_MODE,
            /// <summary>
            /// Free Play mode
            /// </summary>
            GAME_MODE
        };
        //=== Major Mode of Execution
        /// <summary>
        /// Major Mode of Execution
        /// </summary>
        public enum MenuState : byte
        {
            /// <summary>
            /// Loser! (Set by ELeMentalGame)
            /// </summary>
            GAME_OVER,
            // The rest of these should be modified only by the GameScreen
            /// <summary>
            /// G2L enum to handle the post and survey, then exit
            /// </summary>
            FINALIZE_G2LSTUFF,
            // The rest of these should be modified only by the GameScreen
            /// <summary>
            /// Bye bye
            /// </summary>
            EXIT,
            /// <summary>
            /// Wat up world :->
            /// </summary>
            CREDITS,
            /// <summary>
            /// WulfsPack + DarkWynter
            /// </summary>
            CREDIT_SCREEN,
            /// <summary>
            /// Title
            /// </summary>
            TITLE_SCREEN,
            ///// <summary>
            ///// Game Setup
            ///// </summary>
            GAME_SETUP,
            /// <summary>
            /// Loading... Please Wait
            /// </summary>
            LOAD_LEVEL,
            /// <summary>
            /// First Instruction Screen
            /// </summary>
          //  INSTRUCT_2,
            /// <summary>
            /// Instruction Screen
            /// </summary>
            INSTRUCTION_SCREEN_LEVEL1,
            /// <summary>
            /// Second Instruction Screen
            /// </summary>
            INSTRUCTION_SCREEN_LEVEL2,
            /// <summary>
            /// final game screen
            /// </summary>
            FINALGAMESCREEN,

            /// <summary>
            /// Pause
            /// </summary>
            GAME_PAUSE
        };

        /// <summary>
        /// Major Mode of Execution
        /// </summary>
        public enum ViewMode : byte
        {
            /// <summary>
            /// Game tuns in a single screen - up to 4 players
            /// </summary>
            SINGLE_SCREEN,
            /// <summary>
            /// Game is split screened - up to 4 players
            /// </summary>
            SPLIT_SCREEN,
            /// <summary>
            /// None selected
            /// </summary>
            NONE
        };

        /// <summary>
        /// Minor Mode of Execution within EngineState.GAME_MODE
        /// </summary>
        public enum GameType : byte
        {
            /// <summary>
            /// None
            /// </summary>
            NONE_SELECTED,
            /// <summary>
            /// Linear play
            /// </summary>
            STORY_MODE,
            /// <summary>
            /// Free Play mode
            /// </summary>
            FREE_PLAY
         };




        /// <summary>
        /// Tells Menu System which direction was pressed.
        /// </summary>
        public enum MenuDirection : byte
        {
            /// <summary>
            /// Up key was pressed
            /// </summary>
            UP,
            /// <summary>
            /// Down key was pressed
            /// </summary>
            DOWN,
            /// <summary>
            /// Left key was pressed
            /// </summary>
            LEFT,
            /// <summary>
            /// Right key was pressed
            /// </summary>
            RIGHT,
            /// <summary>
            /// Start key was pressed
            /// </summary>
            START,
            /// <summary>
            /// Back key was pressed
            /// </summary>
            BACK
        }

        /// <summary>
        /// Menu System Elements
        /// </summary>
        public enum MenuElementType : byte
        {
            /// <summary>
            /// Button
            /// </summary>
            BUTTON,
            /// <summary>
            /// Options
            /// </summary>
            OPTION,
            /// <summary>
            /// Values
            /// </summary>
            VALUE,
            /// <summary>
            /// Label
            /// </summary>
            LABEL,
            /// <summary>
            /// Image scroll
            /// </summary>
            IMAGE_SCROLL,
            /// <summary>
            /// Image
            /// </summary>
            IMAGE_DISPLAY,
            /// <summary>
            /// None
            /// </summary>
            NONE
        };

        /// <summary>
        /// Type of Displays
        /// </summary>
        public enum DisplayType : byte
        {
            /// <summary>
            /// Text
            /// </summary>
            TEXT,
            /// <summary>
            /// Value
            /// </summary>
            VALUE,
            /// <summary>
            /// Image
            /// </summary>
            IMAGE,
            /// <summary>
            /// Base
            /// </summary>
            BASE
        };

  
        /// <summary>
        /// Different mouse control types
        /// </summary>
        public enum ControlType : byte
        {
            /// <summary>
            /// Motion Type
            /// </summary>
            Motion,
            /// <summary>
            /// Right Button Type
            /// </summary>
            RightButton,
            /// <summary>
            /// Left Button Type
            /// </summary>
            LeftButton,
            /// <summary>
            /// Middle Button Type
            /// </summary>
            MiddleButton,
            /// <summary>
            /// Scroll Wheel Type
            /// </summary>
            ScrollWheel
        };

        public enum PlayerState : byte
        {
            ALIVE,
            DEAD
        };

    }
}