示例#1
0
        // Initialize
        void Start()
        {
            // Assign different tag for the local player
            if (photonView.isMine)
            {
                gameObject.tag = "LocalPlayer";
            }

            rb = GetComponent <Rigidbody2D>();
            ReplayManager.registerGameObject(this.gameObject);
        }
        // Initialize
        void Start()
        {
            EventManager.registerListener("playagain", SpawnLocalPlayer);

            if (playerPrefab == null)
            {
                Debug.LogError("<Color=Red><a>Missing</a></Color> playerPrefab Reference. Please set it up in GameObject 'Game Manager'", this);
            }
            else
            {
                SpawnLocalPlayer();
            }

            replayManager = FindObjectOfType <ReplayManager>();
            Debug.Assert(replayManager);

            EventManager.registerListener("disconnect", LeaveRoom);
            EventManager.registerListener("replayStart", DisableSending);
            EventManager.registerListener("playagain", DoReconnect);
        }
示例#3
0
        /*Draw GUI*/
        void OnGUI()
        {
            /*Set GUI colors*/
            GUI.color           = Color.white;
            GUI.backgroundColor = Color.white;
            GUI.contentColor    = Color.white;

            switch (state)
            {
            /*In-Game*/
            case GUIState.InGame:
                /*Voice chat button and events*/
                float btnWidth  = Screen.width * GUI_BUTTON_WIDTHFACTOR;
                float btnHeight = Screen.width * GUI_BUTTON_HEIGHTFACTOR;

                Texture2D voiceIcon = voiceLast ? voiceiconenabled : voiceicondisabled;

                if (voiceOn && GUI.RepeatButton(new Rect(0.0f, 2.0f, btnWidth, btnHeight), voiceIcon, GUIStyle.none))
                {
                    voiceToggleTime = Time.time;

                    if (!voiceLast)
                    {
                        voiceLast = true;
                        EventManager.triggerEvent("voiceEnable");
                    }
                }
                else if (voiceLast && Time.time - voiceToggleTime > VOICE_TOGGLE_DELAY)
                {
                    voiceLast = false;
                    EventManager.triggerEvent("voiceDisable");
                }

                // HIDDEN BECAUSE INCOMPLETE
                /*In-Game menu open button*/

                /*
                 * if (GUI.Button(new Rect(Screen.width - btnWidth, 0.0f, btnWidth, btnHeight), "Menu")) {
                 *  Debug.Log("In-Game menu open button pressed");
                 *  state = GUIState.InGameMenu;
                 *  onElementSelected();
                 * }*/

                /*Draw replay timer if we are playing a replay*/
                if (ReplayManager.isPlaying())
                {
                    float  timerTime = ReplayManager.getPlaybackTime();
                    string timerStr  = string.Format("Replay: {0}", timerTime);
                    GUI.color = replayTimerColor;
                    GUI.Label(new Rect(replayTimerOffset.x, replayTimerOffset.y, 128.0f, 32.0f), timerStr);
                }

                break;

            /*In-Game Menu*/
            case GUIState.InGameMenu:
                float width  = Screen.width * INGAMEMENU_WIDTH_FACTOR;
                float height = Screen.height * INGAMEMENU_HEIGHT_FACTOR;
                float xOff   = (Screen.width - width) / 2.0f;
                float yOff   = (Screen.height - height) / 2.0f;
                GUI.Box(new Rect(xOff, yOff, width, height), "In-Game Menu");

                float menuItemHeight  = height * INGAMEMENU_MENUITEM_HEIGHT_FACTOR;
                float menuItemWidth   = width * INGAMEMENU_MENUITEM_WIDTH_FACTOR;
                float menuItemOffsetX = (width - menuItemWidth) / 2.0f;

                /*Close Button, top right. Sets state to 'in-game' when pressed.*/
                if (GUI.Button(new Rect(xOff + width - width * INGAMEMENU_CLOSEBTN_WIDTH_FACTOR, yOff,
                                        width * INGAMEMENU_CLOSEBTN_WIDTH_FACTOR, height * INGAMEMENU_MENUITEM_HEIGHT_FACTOR), "X"))
                {
                    state = GUIState.InGame;
                    onElementSelected();
                }

                /*Option 1*/
                yOff   += height * (INGAMEMENU_MENUITEM_HEIGHT_FACTOR + INGAMEMENU_MENUITEM_SPACE_FACTOR);
                voiceOn = GUI.Toggle(new Rect(xOff + menuItemOffsetX, yOff, menuItemWidth, menuItemHeight), voiceOn, "Voice Chat Enabled");

                if (voiceOn != voiceOnLast && Time.time - voiceToggleTime > VOICE_TOGGLE_DELAY)
                {
                    voiceOnLast     = voiceOn;
                    voiceToggleTime = Time.time;

                    if (voiceOn)
                    {
                        EventManager.triggerEvent("voiceOn");
                    }
                    else
                    {
                        EventManager.triggerEvent("voiceOff");
                    }

                    onElementSelected();
                }

                break;

            /*Draw game over splash screen*/
            case GUIState.GameOver:
                if (ReplayManager.isPlaying())
                {
                    break;
                }

                /*Game over text*/
                float gameoverWidth  = GAMEOVER_WIDTH_FACTOR * Screen.width;
                float gameoverHeight = GAMEOVER_HEIGHT_FACTOR * Screen.height;
                float gameoverXOff   = (Screen.height - gameoverWidth);  ///2.0f;
                float gameoverYOff   = GAMEOVER_Y_OFFSETFACTOR * Screen.height;
                GUI.DrawTexture(new Rect(gameoverXOff, gameoverYOff, gameoverWidth, gameoverHeight), gameoverText);

                /*Disconnect button*/
                if (GUI.Button(new Rect(gameoverXOff + GAMEOVER_PLAYAGAIN_WIDTH_FACTOR * Screen.width + 4, gameoverYOff + gameoverHeight,
                                        GAMEOVER_PLAYAGAIN_WIDTH_FACTOR * Screen.width, GAMEOVER_PLAYAGAIN_HEIGHT_FACTOR * Screen.height), "Disconnect"))
                {
                    EventManager.triggerEvent("disconnect");
                    onElementSelected();
                }

                break;

            default:
                Debug.LogWarning("GUIManager::OnGUI(): Unrecognised state!");
                state = GUIState.InGame;
                break;
            }
        }
示例#4
0
 /*Call the replay manager's update function. Here as there is no other place that this fits - GameManager
  * does not have an Update() method.*/
 void Update()
 {
     ReplayManager.doUpdate();
 }
 /*Initalise the replay manager.*/
 void Start()
 {
     ReplayManager.init();
 }