// September 2015 // Levee Patroller / Dijk Patrouille // This source file is (c) by Deltares. This source file is open source but only available to select users. Do not redistribute without written permission of Stichting Deltares, Delft, The Netherlands. // This header has been automatically generated. //============================================================================= // Extension of class for training level // ------------------------------------------------------------ // Created by Rui Guimaraes // © 2006, Geodelft // // Date Id Modification // 2006-09-21 Gui Created class // 2006-09-29 Bas Added functionality // 2006-10-05 Bas Fixed language problems action center // 2006-10-06 Gui Quit in last step makes you leave the game // 2007-08-27 Wsl removed all occurrences of bStableSet (not used) //============================================================================= class MenuTrainingActionCenter extends MenuActionCenter; //============================================================================= // Date Id Modification // 2006-11-27 zmr function created //============================================================================= function InitComponent(GUIController MyController, GUIComponent MyOwner) { //log("MenuTrainingActionCenter before super GeoPlayerControllerTraining(PlayerOwner()).bMakeCall= "$GeoPlayerControllerTraining(PlayerOwner()).bMakeCall); Super.InitComponent(MyController, MyOwner); //log("MenuTrainingActionCenter fill first text"); if(GeoPlayerControllerTraining(PlayerOwner()).bMakeCall) { if(GeoPC.dutch) { GUIScrollTextBox(Controls[NOSTB]).SetContent("Je wordt gebeld door het Actiecentrum"); } else { GUIScrollTextBox(Controls[NOSTB]).SetContent("You are called by the Action Center"); } } else { if(GeoPC.dutch) { GUIScrollTextBox(Controls[NOSTB]).SetContent("Je belt het Actiecentrum"); }else { GUIScrollTextBox(Controls[NOSTB]).SetContent("You are calling the Action Center"); } } //log("MenuTrainingActionCenter GeoPlayerControllerTraining(PlayerOwner()).bMakeCall= "$GeoPlayerControllerTraining(PlayerOwner()).bMakeCall); GeoPlayerControllerTraining(PlayerOwner()).bMakeCall = false; } //============================================================================= //This function takes care of getting all the information needed to run the menu properly // // Date Id Modification // 2006-10-07 The Fixed compiler error in GetInformation // 2006-12-05 Bas Fixed multiple 'nullpointers' (Accessed None) // 2007-06-05 Wsl Moved from MenuActionCenter to here and removed unnecessary info //============================================================================= function GetInformation() { local int i; // get player name ConvState[ConvState.Length-1].PlayerName = GeoPC.PlayerReplicationInfo.GetHumanReadableName(); // execute this when the player is nearby a marker (so when calling from a red marker); // get all signals, get mechanism, failure state, location name if(GeoPC.NearByMarker != none) { Signals = GeoPC.NearByMarker.Signals; } // check for missing answers for(i = 0; i < Signals.Length; i++) { if(!bMissingAnswers && missingAnswers(Signals[i]) > 0) { bMissingAnswers = true; } } } //============================================================================= // Date Id Modification // 2006-09-29 bas function created //============================================================================= function CalcNewLines() { local array TempString; local int i,tmp; if(ConvState[ConvState.Length-1].ConversationFinished) { // next line button invisible, hang up button appears // Strange BUG, for some reason C8 becomes unclickable when C3 // is made invisible; that's why it's disabled instead Controls[3].MenuState = MSAT_Disabled; Controls[8].setVisibility(true); } else if(GeoPlayerControllerTraining(PlayerOwner()).bMakeCall) { //player is called by the trainer //hide blue message done in the end of the initialisation //log("1 2 3 4 5 6 7 8 9 MenuTrainingActionCenter"); //GeoPlayerControllerTraining(PlayerOwner()).bMakeCall = false; TempString.Insert(0,6); TempString[0] = CurrentLanguage.getValue("3.1"); TempString[1] = CurrentLanguage.getValue("4.1"); TempString[2] = CurrentLanguage.getValue("3.2"); TempString[3] = CurrentLanguage.getValue("4.2"); TempString[4] = CurrentLanguage.getValue("3.3"); TempString[5] = CurrentLanguage.getValue("2.2"); ConvState[ConvState.Length-1].ConversationFinished = true; } else if(Signals.Length > 0 && !bMissingAnswers) { //observation is made //log("MT1.1"); if(Controls[7].bVisible) { //question is answered TempString.Insert(0,3); tmp = moComboBox(Controls[7]).GetIndex(); TempString[0] = ConvState[ConvState.Length-1].PlayerName$":"@Answers[tmp]; HideQuestion(); if(tmp == 0) { TempString[1] = CurrentLanguage.getValue("1.1-B1"); } else if(tmp == 1) { TempString[1] = CurrentLanguage.getValue("1.1-B2"); } else if(tmp == 2) { TempString[1] = CurrentLanguage.getValue("1.1-B3"); } //THIS STEP IS DONE - GUI - 2/10/2006 GeoPlayerControllerTraining(PlayerOwner()).TrainSubStep=4; GeoPlayerControllerTraining(PlayerOwner()).TakingAction=true; GeoPlayerControllerTraining(PlayerOwner()).SetTrainStepMsg(); GeoPlayerControllerTraining(PlayerOwner()).IsNextStepAllowed=true; TempString[2] = CurrentLanguage.getValue("2.2"); ConvState[ConvState.Length-1].ConversationFinished = true; } else { //START HERE... TempString.Insert(0,3); TempString[0] = CurrentLanguage.getValue("1"); TempString[1] = CurrentLanguage.getValue("2.1-A"); TempString[2] = CurrentLanguage.getValue("1.1-A"); AskQuestion = true; Answers.Remove(0,Answers.Length); Answers.Insert(0,3); Answers[0] = CurrentLanguage.getValue("2.1-B1"); Answers[1] = CurrentLanguage.getValue("2.1-B2"); Answers[2] = CurrentLanguage.getValue("2.1-B3"); AnswersInBox.Remove(0,Answers.Length); AnswersInBox.Insert(0,3); AnswersInBox[0] = CurrentLanguage.getValue("2.1-B1"); AnswersInBox[1] = CurrentLanguage.getValue("2.1-B2"); AnswersInBox[2] = CurrentLanguage.getValue("2.1-B3"); signals[0].bCalled = true; signals[0].bApproved = true; signals[0].bReported = true; if(signals[0].SignalReports[0] != none) { signals[0].SignalReports[0].bChanged = false; signals[0].SignalReports[0].bReported = true; signals[0].SignalReports[0].bApproved = true; signals[0].SignalReports[0].bCalled = true; } Signals[0].toLog(); } } else if(Signals.Length == 0) { //no observation made, curse //log("MT2.1"); TempString.Insert(0,4); TempString[0] = CurrentLanguage.getValue("1"); TempString[1] = CurrentLanguage.getValue("2.1-A"); TempString[2] = CurrentLanguage.getValue("1.1-C"); TempString[3] = CurrentLanguage.getValue("2.3"); ConvState[ConvState.Length-1].ConversationFinished = true; } else if(bMissingAnswers) { //report is not complete TempString.Insert(0,5); TempString[0] = CurrentLanguage.getValue("1"); TempString[1] = CurrentLanguage.getValue("2.1-A"); TempString[2] = CurrentLanguage.getValue("1.1-D1")$"|"$MissingInSignals()$"||"$CurrentLanguage.getValue("1.1-D2"); TempString[3] = CurrentLanguage.getValue("2.3"); ConvState[ConvState.Length-1].ConversationFinished = true; } tmp = Lines.Length; Lines.Insert(tmp,TempString.Length); for(i=0;i HowMuchFailure,HowMuchSignals,aTemp; local bool bFirst; local int i,j,k; local array MissingStrings; bFirst = true; k = 0; HowMuchFailure.Insert(0,12); HowMuchSignals.Insert(0,12); for(i = 0; i < HowMuchFailure.Length; i++) { HowMuchFailure[i] = -1; HowMuchSignals[i] = -1; } for(i = 0;i < Signals.Length; i++) HowMuchSignals[Signals[i].SignalType]++; for(i = 0;i < Signals.Length; i++) { aTemp = DataObject.GetAllAnswers(Signals[i],Signals[i].SignalReports.Length-1); MissingStrings = DataObject.GetAllQuestionMissingStrings(Signals[i].SignalType, GeoPC.Dutch); HowMuchFailure[Signals[i].SignalType]++; for(j = 0; j < aTemp.Length; j++) { if(aTemp[j] == -1) { //question isn't answered! k++; if(bFirst) { //this is the first question that's not answered if(GeoPC.Dutch) { if(HowMuchSignals[Signals[i].SignalType] == 0) //there's only one signal of this type returner = returner$"||"$DataObject.NL_About@DataObject.NL_Het@DataObject.Lower(Signals[i].NL_DamageName)@DataObject.NL_Signal$":"; else //there are more than one signal of this type returner = returner$"||"$DataObject.NL_About@DataObject.NL_Het@DataObject.NL_TelWoorden[HowMuchFailure[Signals[i].SignalType]]@DataObject.Lower(Signals[i].NL_DamageName)@DataObject.NL_Signal$":"; } else { if(HowMuchSignals[Signals[i].SignalType] == 0) returner = returner$"||"$DataObject.EN_About@DataObject.EN_Het@DataObject.Lower(Signals[i].EN_DamageName)@DataObject.EN_Signal$":"; else returner = returner$"||"$DataObject.EN_About@DataObject.EN_Het@DataObject.EN_TelWoorden[HowMuchFailure[Signals[i].SignalType]]@DataObject.Lower(Signals[i].EN_DamageName)@DataObject.EN_Signal$":"; } bFirst = false; } returner = returner$"| - "@MissingStrings[j]; } } bFirst = true; } if(k == 1) { //there's only one question not answered returner = CurrentLanguage.getValue("3.1-D1")$returner; } else if(k > 1) { //more than one questions answered returner = CurrentLanguage.getValue("3.1-D2")$returner; } return returner; } function FillHashTable() { local String PL_Name; PL_Name = ConvState[ConvState.Length-1].PlayerName$":"; super.FillHashTable(); Dutch.add("1",DataObject.NL_AC$": Hallo, met het Actiecentrum."); Dutch.add("1.1-A",DataObject.NL_AC$": Aha, dus jij bent een nieuweling? Nou, ik denk dat we alles onder controle hebben. Ha ha ha. Hoe dan ook, vind je de training leuk?" ); Dutch.add("1.1-B1",DataObject.NL_AC$": Ik begrijp het. De training is desondanks noodzakelijk. Veel dingen kunnen fout gaan. Ik geloof dat ik je wel weer zal spreken als je de echte dijken aan het inspecteren bent. Dag!"); Dutch.add("1.1-B2",DataObject.NL_AC$": Het is ook saai. De echte dijkwacht overigens niet. Je weet nooit wat je kan verwachten. Dat zul je snel ondervinden. Dag!"); Dutch.add("1.1-B3",DataObject.NL_AC$": Super, we kunnen zo'n leergierig persoon wel gebruiken. Ik ben benieuwd hoe jij je staande houdt in het veld! Dag!"); Dutch.add("1.1-C",DataObject.NL_AC$": Maak eerst een observatie rapport en bel ons dan pas, niet andersom. Dag!"); Dutch.add("1.1-D1",DataObject.NL_AC$": Je hebt het rapport niet volledig ingevuld, dit is wat er ontbreekt:"); Dutch.add("1.1-D2","Bekijk het rapport nog eens en bel dan terug. Dag!"); Dutch.add("2.1-A",PL_Name@"Hallo, Actiecentrum, ik ben op het moment de training voor dijkwachters aan het doen en ik moet tijdens deze training rapporteren over een scheur in de kunstmatige dijk."); Dutch.add("2.1-B1","Niet echt, ik zou erg graag de echte dijken willen inspecteren."); Dutch.add("2.1-B2","Nee, het is verschrikkelijk saai!"); Dutch.add("2.1-B3","Ja, ik leer erg veel."); Dutch.add("2.2",PL_Name@"Dag!"); Dutch.add("2.3",PL_Name@"Dat zal ik doen. Dag!"); Dutch.add("3.1","Trainer: Gefeliciteerd met het voltooien van deze training!"); Dutch.add("3.2","Trainer: Ja, dat ben je! We zijn erg blij dat je ons team komt versterken. Je zal de dijken binnenkort moeten inspecteren. We verwachten namelijk slecht weer."); Dutch.add("3.3","Trainer: Dat kan ik me voorstellen. Dag!"); Dutch.add("4.1",PL_Name@"Bedankt! Ben ik nu een echte dijkwachter van het waterschap Aan de Ka?"); Dutch.add("4.2",PL_Name@"Ik kan niet wachten. Ik ben benieuwd!"); Dutch.add("opgehangen","Je hebt al opgehangen."); English.add("1",DataObject.EN_AC$": Hi, this is the Action Center speaking."); English.add("1.1-A",DataObject.EN_AC$": Aha, so you are a newbie, huh? Well, I think we have everything under control. Ha ha ha. Anyways, do you like the training?"); English.add("1.1-B1",DataObject.EN_AC$": I understand. The training is a necessity though. Otherwise things can go wrong. I guess I talk to you soon when you are inspecting the real levees. Bye!"); English.add("1.1-B2",DataObject.EN_AC$": Yups, it is boring. The real thing is not though. You never know what to expect. You will soon find out! Bye!"); English.add("1.1-B3",DataObject.EN_AC$": Great, we need to have such eager persons. Let's see soon how you are handling the real thing! Bye!"); English.add("1.1-C",DataObject.EN_AC$": First create an observation report and then call us, not the other way around. Bye!"); English.add("1.1-D1",DataObject.EN_AC$": You didn't complete the report, this is missing:"); English.add("1.1-D2","Please check the report and call us. Bye!"); English.add("2.1-A",PL_Name@"Hi, Action Center, I am doing the training for levee patrollers right now and need to report you about a crack in the artificial dike."); English.add("2.1-B1","Not really, I am dying to go out and inspect the real levees."); English.add("2.1-B2","No, it is terribly boring!"); English.add("2.1-B3","Yes, I am learning a lot."); English.add("2.2",PL_Name@"Bye!"); English.add("2.3",PL_Name@"I will. Bye!"); English.add("2.4",DataObject.EN_AC$": Bye!"); English.add("3.1","Trainer: Congratulations with finishing the training!"); English.add("3.2","Trainer: Yes you are! We are happy that you joined our team. You probably need to inspect the levees pretty soon. Bad weather has been forecasted."); English.add("3.3","Trainer: I can imagine. Bye!"); English.add("4.1",PL_Name@"Thank you! Did I become a real levee patroller of the water board Aan de Ka?"); English.add("4.2",PL_Name@"Yeah! I can't wait. I am so excited!"); English.add("opgehangen","You already disconnected."); } function HangupButtonClicked() { if(GeoPlayerControllerTraining(PlayerOwner()).TrainStep==7) { // END OF TRAINING LEVEL //Controller.OpenMenu(Controller.GetMainMenuClass()); //Controller.OpenMenu("GeoInterface.MainMenuOptions"); //IF MENU CLOSED BEFORE THIS HAS TO BE CHANGED //PlayerOwner().ConsoleCommand( "DISCONNECT" ); GeoPC.bIsGameOver = true; Controller.ReplaceMenu("GeoSimulator.MenuScore"); } else { if(GeoPlayerControllerTraining(PlayerOwner()).TrainSubStep==4) Controller.ReplaceMenu("GeoSimulator.MenuTrainingConversation"); else Controller.ReplaceMenu("GeoSimulator.MenuTrainingMarker"); } }