/// <summary> /// Event Handler /// </summary> /// <param name="eventType"></param> /// <param name="Sender"></param> /// <param name="Param"></param> public void OnEvent(EventType eventType, Component Sender, object Param = null) { //select event type switch (eventType) { case EventType.ReviewOpenUI: ReviewInputData details = Param as ReviewInputData; SetReviewUI(details); break; case EventType.ReviewStart: isFlashReviewButton = false; StartReview(); break; case EventType.ReviewCloseUI: CloseReviewUI(); break; default: Debug.LogError(string.Format("Invalid eventType {0}{1}", eventType, "\n")); break; } }
/// <summary> /// Open Review UI /// </summary> private void SetReviewUI(ReviewInputData details) { bool errorFlag = false; isOutcome = false; //reset timer (may have changed previously if player skipped review) reviewWaitTime = reviewWaitTimerDefault; Debug.LogFormat("[UI] ModalReviewUI.cs -> OpenReviewUI{0}", "\n"); //set modal status GameManager.i.guiScript.SetIsBlocked(true); //activate main panel panelObject.SetActive(true); reviewObject.SetActive(true); headerObject.SetActive(true); GlobalSide playerSide = GameManager.i.sideScript.PlayerSide; //buttons buttonReview.gameObject.SetActive(true); buttonExit.gameObject.SetActive(false); buttonHelpOpen.gameObject.SetActive(true); buttonHelpClose.gameObject.SetActive(false); //outcome symbols outcomeLeft.gameObject.SetActive(false); outcomeRight.gameObject.SetActive(false); //tooltips InitialiseHelp(); //set up modal panel & buttons to be side appropriate switch (playerSide.level) { case 1: panelBackground.sprite = GameManager.i.sideScript.inventory_background_Authority; panelHeader.sprite = GameManager.i.sideScript.header_background_Authority; //set button sprites buttonReview.GetComponent <Image>().sprite = GameManager.i.sideScript.button_Authority; buttonExit.GetComponent <Image>().sprite = GameManager.i.sideScript.button_Authority; //set sprite transitions SpriteState spriteStateAuthority = new SpriteState(); spriteStateAuthority.highlightedSprite = GameManager.i.sideScript.button_highlight_Authority; spriteStateAuthority.pressedSprite = GameManager.i.sideScript.button_Click; buttonReview.spriteState = spriteStateAuthority; buttonExit.spriteState = spriteStateAuthority; break; case 2: panelBackground.sprite = GameManager.i.sideScript.inventory_background_Resistance; panelHeader.sprite = GameManager.i.sideScript.header_background_Resistance; //set button sprites buttonReview.GetComponent <Image>().sprite = GameManager.i.sideScript.button_Resistance; buttonExit.GetComponent <Image>().sprite = GameManager.i.sideScript.button_Resistance; //set sprite transitions SpriteState spriteStateRebel = new SpriteState(); spriteStateRebel.highlightedSprite = GameManager.i.sideScript.button_highlight_Resistance; spriteStateRebel.pressedSprite = GameManager.i.sideScript.button_Click; buttonReview.spriteState = spriteStateRebel; buttonExit.spriteState = spriteStateRebel; break; default: Debug.LogError(string.Format("Invalid side \"{0}\"", playerSide.name)); break; } //set texts textHeader.text = "Peer Review"; textTop.text = "You are about to be assessed by your Peers"; textBottom.text = "Press SPACE, or the COMMENCE REVIEW button"; if (details != null) { //loop array and set options for (int i = 0; i < arrayOfOptions.Length; i++) { //valid option? if (arrayOfOptions[i] != null) { if (arrayOfInteractions[i] != null) { if (arrayOfOptions[i] != null) { //activate option arrayOfOptions[i].SetActive(true); //populate option data arrayOfInteractions[i].optionImage.sprite = details.arrayOfOptions[i].sprite; arrayOfInteractions[i].textUpper.text = details.arrayOfOptions[i].textUpper; arrayOfInteractions[i].optionData = details.arrayOfOptions[i].optionID; //result arrayOfInteractions[i].textResult.gameObject.SetActive(false); arrayOfInteractions[i].textResult.text = details.arrayOfOptions[i].textLower; //tooltip data -> sprites & titles (identical) if (arrayOfTooltipsSprites[i] != null) { if (details.arrayOfTooltipsSprite[i] != null) { //sprites arrayOfTooltipsSprites[i].tooltipHeader = details.arrayOfTooltipsSprite[i].textHeader; arrayOfTooltipsSprites[i].tooltipMain = details.arrayOfTooltipsSprite[i].textMain; arrayOfTooltipsSprites[i].tooltipDetails = details.arrayOfTooltipsSprite[i].textDetails; arrayOfTooltipsSprites[i].x_offset = 55; arrayOfTooltipsSprites[i].y_offset = -10; //titles arrayOfTooltipsTitles[i].tooltipHeader = details.arrayOfTooltipsSprite[i].textHeader; arrayOfTooltipsTitles[i].tooltipMain = details.arrayOfTooltipsSprite[i].textMain; arrayOfTooltipsTitles[i].tooltipDetails = details.arrayOfTooltipsSprite[i].textDetails; arrayOfTooltipsTitles[i].x_offset = 55; arrayOfTooltipsTitles[i].y_offset = 50; } else { Debug.LogWarningFormat("Invalid tooltipDetailsSprite (Null) for arrayOfOptions[{0}]", i); } } else { Debug.LogError(string.Format("Invalid GenericTooltipUI (Null) in arrayOfTooltips[{0}]", i)); } //tooltip data -> results if (arrayOfTooltipsResults[i] != null) { if (details.arrayOfTooltipsResult[i] != null) { arrayOfTooltipsResults[i].tooltipHeader = details.arrayOfTooltipsResult[i].textHeader; arrayOfTooltipsResults[i].tooltipMain = details.arrayOfTooltipsResult[i].textMain; arrayOfTooltipsResults[i].tooltipDetails = details.arrayOfTooltipsResult[i].textDetails; arrayOfTooltipsResults[i].x_offset = 55; arrayOfTooltipsResults[i].y_offset = 15; } else { Debug.LogWarningFormat("Invalid tooltipResults (Null) in arrayOfTooltipResults[{0}]", i); } } else { Debug.LogWarningFormat("Invalid arrayOfTooltipsResults[{0}] (Null)", i); } } else { //invalid option, switch off arrayOfOptions[i].SetActive(false); } } else { //error -> Null Interaction data Debug.LogErrorFormat("Invalid arrayOfInventoryOptions[\"{0}\"] optionInteraction (Null)", i); errorFlag = true; break; } } else { //error -> Null array Debug.LogErrorFormat("Invalid arrayOfInventoryOptions[{0}] (Null)", i); errorFlag = true; break; } } } else { Debug.LogError("Invalid ReviewInputData (Null)"); errorFlag = true; } //error outcome message if there is a problem if (errorFlag == true) { reviewObject.SetActive(false); //create an outcome window to notify player ModalOutcomeDetails outcomeDetails = new ModalOutcomeDetails(); outcomeDetails.textTop = "There has been a hiccup and the information isn't available"; outcomeDetails.textBottom = "We've called the WolfMan. He's on his way"; outcomeDetails.side = playerSide; EventManager.i.PostNotification(EventType.OutcomeOpen, this, outcomeDetails, "ModalInventoryUI.cs -> SetInventoryUI"); } else { //all good, review window displayed GameManager.i.inputScript.ModalReviewState = ModalReviewSubState.Open; votesFor = details.votesFor; votesAgainst = details.votesAgainst; votesAbstained = details.votesAbstained; ModalStateData package = new ModalStateData() { mainState = ModalSubState.Review }; GameManager.i.inputScript.SetModalState(package); Debug.LogFormat("[UI] ModalInventoryUI.cs -> SetInventoryUI{0}", "\n"); //flash review button isFlashReviewButton = true; StartCoroutine("ReviewButton"); } }