// 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); }
/*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; } }
/*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(); }