public void SetupDateTurn() { // unused //DialogueStoryTab.SetActive (false); //DateProgressBarBkg.SetActive (true); // todo: migrate over to the right DateProressBar.SetActive(true); DateActionTab.transform.localPosition = new Vector3(0, 0, 0); DateProgressSkipBtn.GetComponentInChildren <Text> ().text = "Skip"; ResultTxt.gameObject.SetActive(false); DateProressBar.gameObject.transform.localScale = new Vector3(0, 1, 1); DateActionTab.SetActive(true); DateActCount = 0; //NextText.text = "(Date Acting)"; CurrState = ActState.DateAction; phaseName = "Date's Turn"; phaseHandler.UpdateActiveUser(phaseName); //Added Excited date audio. //TODO //int dateConnection = MapHandler.GetComponent<MapHandler>().LeadPlayerScript.Connection; if (phaseHandler.thisHour > 7) { GameObject source = Instantiate(soundSource, mainCamera.transform.position, Quaternion.identity); source.transform.SetParent(mainCamera.transform); source.GetComponent <AudioSource> ().clip = excitedSound; source.GetComponent <AudioSource> ().Play(); } }
private void AdvanceNPCMoveCounter(float amt) { NPCMoveCount += amt; // TODO: Update NPC movement // Trigger? if (NPCMoveCount >= NPCMoveCountMaxNow) { // What were we in the middle of? if (CurrState == ActState.FansAction) { // Move a fan randomly, if one is next if (MapHandler.GetComponent <MapHandler> ().MoveNextNPC()) { if (CurrState != ActState.GameOverFadein) { NPCMoveCount = 0; } } else { // Is the state done, or are we doing it again? if (firstTurnMoveNPC) { MakeMaxCount('F'); NPCMoveCount = 0; MapHandler.GetComponent <MapHandler> ().ResetNPCMoves(); firstTurnMoveNPC = false; } else { // Ok, we're actualy done CurrState = ActState.WaitingFanAckFromPlayer; NextStamp.GetComponent <StampHandler> ().HideStamp(); NextText.text = "Time Marches On..."; } } // Update HP int totalDmg = preFanHP - MapHandler.GetComponent <MapHandler>().LeadPlayerScript.SelfEsteem; if (totalDmg > 0) { StoryTxt.text = "Fans have done a total of " + totalDmg + " damage to your self esteem."; } else if (CurrState == ActState.WaitingFanAckFromPlayer) { StoryTxt.text = "You have weathered the onslaught of your fans with your self esteem intact (for now)."; } } else { ThrowException("Bad NPC current state: " + CurrState); } } }
private void ShowFinalScreen() { Lead player = MapHandler.GetComponent <MapHandler> ().LeadPlayerScript; int score = player.Connection * 1000 + player.SelfEsteem * 100 + player.FanCount; FinalScreenObj.SetActive(true); FinalScreenTxt.GetComponent <Text> ().text = "Final Score: " + score; CurrState = ActState.FinalScreenOnscreen; }
// Start is called before the first frame update public virtual void Start() { facingRight = true; MyAnimator = GetComponent <Animator>(); myAudio = FindObjectOfType <AudioManager>(); stat.Initialize(); dirQ = new Queue <bool>(); actState = ActState.StandBy; moveState = MoveState.Idle; }
private void StartFansActionState() { CurrState = ActState.FansAction; phaseName = "Fans' Turns"; phaseHandler.UpdateActiveUser(phaseName); MapHandler.GetComponent <MapHandler> ().ResetNPCMoves(); NPCMoveCountMaxNow = MakeMaxCount('S'); NPCMoveCount = 0; firstTurnMoveNPC = true; }
private void AdvanceCounter(float amt) { DateActCount += amt; // Always update the progress bar float perc = DateActCount / DateActCountMax; if (perc > 1.0f) { perc = 1.0f; } DateProressBar.gameObject.transform.localScale = new Vector3(perc, 1, 1); // Trigger? if (DateActCount >= DateActCountMax) { // What were we in the middle of? if (CurrState == ActState.DateAction) { MakeDateDecision(); } else if (CurrState == ActState.DateActSocialMedia || CurrState == ActState.DateActTalkToYou) { // Show "rewards" DateActionTab.SetActive(false); //DateProressBar.SetActive (false); //DateProgressSkipBtn.transform.localPosition = new Vector3 (165, 120, 0); //DateProgressSkipBtn.GetComponentInChildren <Text> ().text = "Ok"; //ResultTxt.gameObject.SetActive (true); if (CurrState == ActState.DateActSocialMedia) { StoryTxt.text += "\n" + RandomlyModifyStatsFromTweet(); } else { StoryTxt.text += "\n" + RandomlyModifyStatsFromPersonal(); } if (CurrState != ActState.GameOverFadein) { // Set up next button again NextStamp.GetComponent <StampHandler>().HideStamp(); NextText.text = "Fan Phase"; CurrState = ActState.DateActShowReward; } } else { ThrowException("Bad current state: " + CurrState); } } }
public Player() { texInfo = new TextureInfo("/Application/textures/spacebro2.png"); sprite = new SpriteUV(texInfo); sprite.Quad.S = texInfo.TextureSizef; sprite.Position = new Vector2(0, 0); dirState = DirState.Still; actState = ActState.Ground; walkSpeed = 2.0f; }
public void SetupInteractWithDate() { StoryTxt.text = "How will you interact with your date?"; ShowBoxes( "Talk to Them", "Impress Them", "Encourage Them" ); DialogueStoryTab.SetActive(true); CurrState = ActState.ChooseInteractWithDate; }
public void GameoverTracker(int selfEsteem) { if (selfEsteem <= 0) { CurrState = ActState.GameOverFadein; //Flip Leads MapHandler.GetComponent <MapHandler>().LeadPlayer.GetComponent <TokenHandler>().RemoveToken(); MapHandler.GetComponent <MapHandler>().LeadDate.GetComponent <TokenHandler>().RemoveToken(); // Reset practically everything DateActCount = DateActCountMax; NPCMoveCount = 9999; } }
private void Start() { renderComponent = GetComponent <SpriteRenderer>(); trailComponent = GetComponent <TrailRenderer>(); anim = GetComponent <Animator>(); menuIdle = new MenuIdle(this); intoScene = new IntoScene(this); gameIdle = new GameIdle(this); sliceState = new SliceState(this, 10, 0.5f); passState = new PassState(this, 1f); failState = new FailState(this, 0.5f); actState = new ActState(this); TranslateState(null, menuIdle); }
protected virtual void SetState(ActState state) { CurrentActState = state; switch (state) { case ActState.Move: { TargetPosition = PreferredPosition; } break; } Attacker.CanAttack = false; _onStateChanged.Invoke(CurrentActState); }
void Start() { personCtrl = this.GetComponent <HeroCtrl>(); heroStateActVer = new IdleStateActVer(this.gameObject); heroStateMoveVer = new IdleStateMoveVer(this.gameObject); inputArgs = new InputEventArgs("", "", ""); hero_act_state[0] = new IdleStateActVer(this.gameObject); hero_act_state[1] = new ActState(this.gameObject); hero_act_state[2] = new DefenseState(this.gameObject); hero_move_state[0] = new IdleStateMoveVer(this.gameObject); hero_move_state[1] = new MoveState(this.gameObject); hero_move_state[2] = new JumpState(this.gameObject); InputTran += new InputEventHandler(heroStateActVer.handleInput); InputTran += new InputEventHandler(heroStateMoveVer.handleInput); }
// What action will our date take? public void MakeDateDecision() { // TODO : More structured randomness, incorporate Pablo's actors if (rng.Next(100) < 50) { CurrState = ActState.DateActSocialMedia; string txt = dateDialogues.DateToFansInteractions [rng.Next(dateDialogues.DateToFansInteractions.Count)]; StoryTxt.text += "\n" + txt; } else { CurrState = ActState.DateActTalkToYou; string txt = dateDialogues.DateToYouInteractions [rng.Next(dateDialogues.DateToYouInteractions.Count)]; StoryTxt.text += "\n" + txt; } DateActionTab.transform.localPosition = new Vector3(0, -100, 0); DateProressBar.gameObject.transform.localScale = new Vector3(0, 1, 1); DateActionTab.SetActive(true); DateActCount = 0; }
/// <summary> /// Der Input wird, wenn im aktuellen Zustand möglich, verarbeitet. /// Der Folgezustand wird zum aktuellen Zustand /// </summary> /// <param name="input">Eingangssignal</param> /// <returns>true, wenn die Verarbeitung möglich war</returns> public bool HandleInput(Enum input) { if (!IsRunning) { return(false); // Input ignorieren } //_actInput = input; Transition transition = ActState.GetTransitionByInput(input); if (transition == null) { Log.Error($"Fsm;HandleInput;{Name}; {input} im Zustand {ActState}"); return(false); } ActState.Leave(); // aktuellen Zustand verlassen transition.Select(); // Etwaige Beobachter des Zustandsübergangs verständigen ActState = transition.ToState; ActState.Enter(); // Folgezustand aktivieren return(true); }
public virtual void ActManager() { // ActState curentState; CurrentState = FSM(); if (CurrentState == ActState._IDLE) { Idle(); } else if (CurrentState == ActState._Detect) { Detect(); } else if (CurrentState == ActState._ATTACK) { Attack(); } else if (CurrentState == ActState._DEATH) { Death(); } }
// TEST /*public void TestFunction(uint val) { * Debug.Log ("TEST: " + val); * }*/ public void SetupChoosePlayerAction() { StoryTxtHeader.text = "Date Action"; StoryTxt.text = "What will you do this turn?"; string changeStr = phaseHandler.thisHour < 9 ? "Change Date Location" : "End Date"; if (TooLateMustMove()) { ShowBoxes( null, null, changeStr ); } else { ShowBoxes( "Talk to Date", "Tweet @Fans", changeStr ); } //DialogueStoryTab.SetActive (true); CurrState = ActState.PlayerActionSelect; // Set Next button text SkipText.text = "Main Action"; NextText.text = "(In Story)"; // Reset button stamp statuses (but not for the bottom item). // TODO // Update Phase name phaseName = "Your Turn"; phaseHandler.UpdateActiveUser(phaseName); }
public void ReactToStamp(int stampId) // 1, 2, 3 for stamp ID // Beginning of game: show the timer, show the dialogue box { if (CurrState == ActState.Nothing) { //TEMP:DEBUG:TESTING //StartFansActionState();return; //END:TEMP:DEBUG:TESTING PlayButtonSound(); // Start Invisible StoryTxtHeader.text = "Date Action"; StoryTxt.text = ""; ShowBoxes(null, null, null); // First interpolation interpEndPos = PhasePanel.transform.position; interpStartPos = PhasePanel.transform.position + new Vector3(1.3f, 0, 0); interpEndSz = new Vector3(1, 1, 1); interpStartSz = new Vector3(0.1f, 0.1f, 0.1f); interpTarget = PhasePanel.transform; PhasePanel.SetActive(true); // Second interpolation interpEndPos2 = DialoguePanel.transform.position; interpStartPos2 = DialoguePanel.transform.position + new Vector3(0, 0, -0.5f); interpEndSz2 = new Vector3(1, 1, 1); interpStartSz2 = new Vector3(0.1f, 0.1f, 0.1f); interpTarget2 = DialoguePanel.transform; DialoguePanel.SetActive(true); // Third interpolation interpEndPos3 = AttributesPanel.transform.position; interpStartPos3 = AttributesPanel.transform.position + new Vector3(0, 0, 1f); interpEndSz3 = new Vector3(1, 1, 1); interpStartSz3 = new Vector3(0.1f, 0.1f, 0.1f); interpTarget3 = AttributesPanel.transform; AttributesPanel.SetActive(true); // Set up the interpolation interpStartTime = Time.time; interpTotalLength = Vector3.Distance(interpStartPos, interpEndPos); // Update all updateInterpolation(); // Temp phaseHandler.UpdateColoring(); CurrState = ActState.DoingInterp; return; } // Phase 1C: Try to move to new location if (CurrState == ActState.MoveToNewLocation) { // Go back if (TooSoonToMove()) { // Fade text to player's turn CurrState = ActState.FadingTextOut; AfterFadeState = ActState.PlayerActionSelect; } else { if (phaseHandler.thisHour == 10) { // TODO: End date code here. ShowFinalScreen(); } else { // Fade back to start CurrState = ActState.FadingTextOut; AfterFadeState = ActState.PlayerActionSelect; } } PlayButtonSound(); return; } // Phase 1: Select talk, tweet, or move if (CurrState == ActState.PlayerActionSelect) { PlayButtonSound(); if (stampId == 1) { // Talk to date // Fade out text, fade in new text CurrState = ActState.FadingTextOut; AfterFadeState = ActState.ChooseInteractTalk; } else if (stampId == 2) { // Tweet @ fans StoryTxt.text += "\n\nUse the mouse to aim; click to fire off a tweet."; tweetHandler.StartTweeting(); } else if (stampId == 3) { // Move date location CurrState = ActState.FadingTextOut; AfterFadeState = ActState.MoveToNewLocation; } return; } // Phase 1.A - Date reacts to dialogue choice if (CurrState == ActState.ChooseInteractTalk) { CurrState = ActState.FadingTextOut; AfterFadeState = ActState.TalkDateViewResponse; ChoiceParticles.GetComponent <ParticleOrientor>().OrientParticles(); ChoiceParticles.Clear(); ChoiceParticles.gameObject.SetActive(true); // Particles LastDateResponse = new char[] { 'G', 'B', 'N' }[rng.Next(3)]; if (LastDateResponse == 'G') { ChoiceParticles.GetComponent <Renderer> ().material = GoodOptionTexture; MapHandler.GetComponent <MapHandler> ().LeadPlayerScript.SelfEsteem += GetAtmoMod(2); } else if (LastDateResponse == 'N') { ChoiceParticles.GetComponent <Renderer> ().material = NeutralOptionTexture; MapHandler.GetComponent <MapHandler> ().LeadPlayerScript.SelfEsteem += GetAtmoMod(1); //MapHandler.GetComponent<MapHandler> ().CreateHeart (tileX, tileY); } else { ChoiceParticles.GetComponent <Renderer> ().material = BadOptionTexture; MapHandler.GetComponent <MapHandler> ().LeadPlayerScript.SelfEsteem -= 1; } // TODO:TEMP:DEBUG //MapHandler.GetComponent<MapHandler> ().LeadPlayerScript.SelfEsteem -= 99; PlayButtonSound(); ChoiceParticles.Play(); return; } // Phase 1.B - Saw date react, move to next phase if (CurrState == ActState.TalkDateViewResponse) { CurrState = ActState.FadingTextOut; AfterFadeState = ActState.DateAction; PlayButtonSound(); return; } // Phase 2 - Ready to switch to fan phase? if (CurrState == ActState.DateActShowReward) { CurrState = ActState.FadingTextOut; AfterFadeState = ActState.FansAction; PlayButtonSound(); return; } // Phase 3 - Ready to switch back to player phase? if (CurrState == ActState.WaitingFanAckFromPlayer) { //Update Phase Clock phaseHandler.UpdateMinute(); phaseHandler.UpdateTime(); // Add some new fans MapHandler.GetComponent <MapHandler>().SpawnFans(3); // Fade text to player's turn CurrState = ActState.FadingTextOut; AfterFadeState = ActState.PlayerActionSelect; PlayButtonSound(); return; } }
void Start() { personCtrl = this.GetComponent<HeroCtrl>(); heroStateActVer = new IdleStateActVer(this.gameObject); heroStateMoveVer = new IdleStateMoveVer(this.gameObject); inputArgs = new InputEventArgs("", "", ""); hero_act_state[0] = new IdleStateActVer(this.gameObject); hero_act_state[1] = new ActState(this.gameObject); hero_act_state[2] = new DefenseState(this.gameObject); hero_move_state[0] = new IdleStateMoveVer(this.gameObject); hero_move_state[1] = new MoveState(this.gameObject); hero_move_state[2] = new JumpState(this.gameObject); InputTran += new InputEventHandler(heroStateActVer.handleInput); InputTran += new InputEventHandler(heroStateMoveVer.handleInput); }
public void SetActState(ActState _state) { actState = _state; }
public void SetReady() { actState = ActState.StandBy; }
// Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Escape)) { Exit(); } // Gameover fading takes priority if (CurrState == ActState.GameOverFadein) { if (GameOverFirstTime) { // Init Color clr = GameOverObj.GetComponent <Image> ().color; GameOverObj.GetComponent <Image> ().color = new Color(clr.r, clr.g, clr.b, 0); GameOverObj.SetActive(true); PlayEvilLaugh(); GameOverFirstTime = false; } else { // Music fade out float newVol = bgmSource.volume - 0.02f; if (newVol < 0) { newVol = 0; } bgmSource.volume = newVol; // Fade in Color clr = GameOverObj.GetComponent <Image> ().color; float newAlpha = clr.a += 0.01f; bool overflow = false; if (newAlpha >= 0.98f) { newAlpha = 1; overflow = true; } GameOverObj.GetComponent <Image> ().color = new Color(clr.r, clr.g, clr.b, newAlpha); if (overflow) { // Show text GameOverTxt.SetActive(true); // Done CurrState = ActState.GameOverOnscreen; } } return; } if (CurrState == ActState.GameOverOnscreen) { return; } // Hack to avoid double-clicking if (Input.GetMouseButtonDown(0)) { if (EventSystem.current.IsPointerOverGameObject()) { SkipPhase = CurrState; } } if (Input.GetMouseButtonUp(0)) { if (SkipPhase == CurrState && DateActCount < DateActCountMax) { if (EventSystem.current.IsPointerOverGameObject()) { AdvanceCounter(9999); } } SkipPhase = ActState.Nothing; } /*if (Input.GetKey (KeyCode.W)) { * if (CurrState == GameState.ActState.Nothing) { * SetupChoosePlayerAction(); * return; * } * }*/ // Deal with interpolation? if (CurrState == ActState.DoingInterp) { if (updateInterpolation()) { // What to do next? SetupChoosePlayerAction(); } } // Deal with text fading? if (CurrState == ActState.FadingTextOut) { bool overflow = false; float newAlpha = StoryTxt.color.a - 1.2f * Time.deltaTime; if (newAlpha <= 0) { newAlpha = 0; overflow = true; } Color newAlphaColor = new Color(StoryTxt.color.r, StoryTxt.color.g, StoryTxt.color.b, newAlpha); StoryTxt.color = newAlphaColor; StoryTxtHeader.color = newAlphaColor; Response1.GetComponentInChildren <Text> ().color = newAlphaColor; Response2.GetComponentInChildren <Text> ().color = newAlphaColor; Response3.GetComponentInChildren <Text> ().color = newAlphaColor; if (overflow) { // Set Story text or response text if (AfterFadeState == ActState.TalkDateViewResponse) { List <DateDialogue> resp = dateDialogues.DialogueBadResponses; if (LastDateResponse == 'G') { resp = dateDialogues.DialogueGoodResponses; } else if (LastDateResponse == 'N') { resp = dateDialogues.DialogueNeutralResponses; } DateDialogue dd = resp [rng.Next(resp.Count)]; StoryTxtHeader.text = "Date Dialogue"; StoryTxt.text = dd.storyText; if (LastDateResponse == 'G') { StoryTxt.text += "\n\n +" + (GetAtmoMod(2)) + " Self Esteem"; } else if (LastDateResponse == 'N') { StoryTxt.text += "\n\n +" + (GetAtmoMod(1)) + " Self Esteem"; } else { StoryTxt.text += "\n\n -1 Self Esteem"; } // Add connection int conn = GetAtmoMod(MapHandler.GetComponent <MapHandler>().LeadPlayerScript.SelfEsteem); MapHandler.GetComponent <MapHandler>().LeadPlayerScript.Connection += conn; StoryTxt.text += "\n + " + conn + " Connection"; // Set response text ShowBoxes( dd.option1, dd.option2, dd.option3 ); } else if (AfterFadeState == ActState.DateAction) { StoryTxtHeader.text = "Date Dialogue"; StoryTxt.text = "Your date is deciding what to do..."; NextText.text = "(Date Acting)"; // No responses here ShowBoxes(null, null, null); } else if (AfterFadeState == ActState.FansAction) { StoryTxtHeader.text = "Fan Reactions"; StoryTxt.text = ""; NextText.text = "(Fan Phase)"; // No responses here ShowBoxes(null, null, null); preFanHP = MapHandler.GetComponent <MapHandler> ().LeadPlayerScript.SelfEsteem; } else if (AfterFadeState == ActState.PlayerActionSelect) { StoryTxtHeader.text = "Date Action"; StoryTxt.text = ""; SkipText.text = "Main Action"; NextText.text = "(In Story)"; // No responses here ShowBoxes(null, null, null); } else if (AfterFadeState == ActState.MoveToNewLocation) { StoryTxtHeader.text = "Date Action"; SkipText.text = "Main Action"; NextText.text = "(Moving Locations)"; if (TooSoonToMove()) { StoryTxt.text = "You can't move to a new date location yet; you basically just arrived here!"; ShowBoxes(null, "Ok", null); } else { TokenHandler leadPlayer = MapHandler.GetComponent <MapHandler> ().LeadPlayer.GetComponent <TokenHandler> (); TokenHandler leadDate = MapHandler.GetComponent <MapHandler> ().LeadDate.GetComponent <TokenHandler> (); if (phaseHandler.thisHour == 7) { StoryTxt.text = "You leave the romantic highway overlook behind, and move to your backyard, dodging fans along the way."; StoryTxt.text += "\n\n +25 Atmosphere"; MapHandler.GetComponent <MapHandler> ().LeadPlayerScript.Atmosphere = "B"; ShowBoxes(null, "Resume Date", null); // Actually move leadPlayer.MoveToTile(9, 5); leadDate.MoveToTile(9, 4); } else if (phaseHandler.thisHour == 8) { StoryTxt.text = "Your friend with the fancy house invites you both to hang out by the pool."; StoryTxt.text += "\n\n +50 Atmosphere"; MapHandler.GetComponent <MapHandler> ().LeadPlayerScript.Atmosphere = "A+"; ShowBoxes(null, "Resume Date", null); // Actually move leadPlayer.MoveToTile(4, 9); leadDate.MoveToTile(5, 9); } else if (phaseHandler.thisHour == 9) { StoryTxt.text = "You both had a great time! You part and go your separate ways."; ShowBoxes(null, "Date Complete!", null); // Actually move ("home") leadPlayer.MoveToTile(3, 4); leadDate.MoveToTile(8, 8); } // Kill all fans MapHandler.GetComponent <MapHandler>().DestroyAllFans(); if (phaseHandler.thisHour == 7) { MapHandler.GetComponent <MapHandler> ().SpawnFans(4); } else if (phaseHandler.thisHour == 8) { MapHandler.GetComponent <MapHandler> ().SpawnFans(5); } // No fans when going home // Actually do our update phaseHandler.UpdateHour(); phaseHandler.UpdateTime(); } } else { // Standard date text DateDialogue dd = dateDialogues.DialogueOptions [rng.Next(dateDialogues.DialogueOptions.Count)]; StoryTxtHeader.text = "Date Dialogue"; StoryTxt.text = dd.storyText; // Set response text ShowBoxes( dd.option1, dd.option2, dd.option3 ); } // Hide stamps; change to fade-in RespStamp1.GetComponent <StampHandler>().HideStamp(); RespStamp2.GetComponent <StampHandler>().HideStamp(); RespStamp3.GetComponent <StampHandler>().HideStamp(); CurrState = ActState.FadingTextIn; } } // Deal with text fading? if (CurrState == ActState.FadingTextIn) { bool overflow = false; float newAlpha = StoryTxt.color.a + 1.2f * Time.deltaTime; if (newAlpha >= 0.85) { newAlpha = 1; overflow = true; } Color newAlphaColor = new Color(StoryTxt.color.r, StoryTxt.color.g, StoryTxt.color.b, newAlpha); StoryTxt.color = newAlphaColor; StoryTxtHeader.color = newAlphaColor; Response1.GetComponentInChildren <Text> ().color = newAlphaColor; Response2.GetComponentInChildren <Text> ().color = newAlphaColor; Response3.GetComponentInChildren <Text> ().color = newAlphaColor; if (overflow) { if (AfterFadeState == ActState.DateAction) { SetupDateTurn(); } else if (AfterFadeState == ActState.FansAction) { StartFansActionState(); } else if (AfterFadeState == ActState.PlayerActionSelect) { SetupChoosePlayerAction(); } else { CurrState = AfterFadeState; } } } // Test-driven development for heart animation... >3> if (Input.GetKey(KeyCode.F)) { MapHandler.GetComponent <MapHandler> ().CreateHeart(5, 5); return; } // Deal with counter if (DateActCount < DateActCountMax) { // Any key will advance the counter 100% if (Input.anyKeyDown && SkipPhase == ActState.Nothing) { AdvanceCounter(9999); } else { AdvanceCounter(Time.deltaTime); } } // Deal with NPCs if (NPCMoveCount < NPCMoveCountMaxNow) { AdvanceNPCMoveCounter(Time.deltaTime); } }