public bool FindRunAwayTarget(PassengerSM ps) { _passengers.RemoveAll(item => item == null); foreach (var passenger in _passengers) { if (passenger != ps) { float dist = ((Vector2)passenger.transform.position - (Vector2)ps.transform.position).sqrMagnitude; if (dist < ps.AttackMaxDistance) { if (ps.TryRunAwayFromMovable(passenger)) { return(true); } } } } ConductorSM hero = MonobehaviorHandler.GetMonobeharior().GetObject <Floor>("Floor").GetHero(); float conductorDist = ((Vector2)hero.transform.position - (Vector2)ps.transform.position).sqrMagnitude; if (conductorDist < ps.AttackMaxDistance) { if (ps.TryRunAwayFromMovable(hero)) { return(true); } } return(false); }
public void CalculateMagnet() { if (_isMagnetActivated) { if (_hasTicket && _isVisibleToHero) { _isMagnetActivated = false; _isMagnetTurnedOn = false; } } ConductorSM hero = MonobehaviorHandler.GetMonobeharior().GetObject <Floor>("Floor").GetHero(); Vector2 heroPosition = hero.transform.position; float heroDist = ((Vector2)transform.position - heroPosition).sqrMagnitude; if (heroDist < _magnetDistance || _isMagnetActivated) { _isMagnetActivated = true; if (heroDist < 0.1f) { return; } if (!GetTarget().Equals(heroPosition)) { SetTarget(hero.transform.position); } } }
protected override void Update() { base.Update(); ConductorSM hero = MonobehaviorHandler.GetMonobeharior().GetObject <Floor>("Floor").GetHero(); if (hero == null) { return; } CalculateIndicator(); if (!hero.IsDragging()) { StopDrag(false); } if (AttackTarget != null) { if (AttackTarget.CanNotInteract()) { AttackTarget = null; } } _attackingDenyPeriod -= Time.deltaTime; if (_attackingDenyPeriod <= 0) { IsAttackingAllowed = true; } if (AttackTarget != null) { float dist = AttackTargetDistance(); if (dist > AttackMaxDistance) { AttackTarget = null; } } }
void OnTriggerStay2D(Collider2D other) { if (!_isCheckPossible && _checkStateEnabled) { return; } _isCheckPossible = false; _timeAfterPassengerCheck = 0; PassengerCollisionDetector passengerCD = other.GetComponent <PassengerCollisionDetector>(); if (passengerCD != null) { PassengerSM passenger = (PassengerSM)passengerCD.Character; TryHaveSetPassenger(passenger); return; } ConductorCollisionDetector conductorCD = other.GetComponentInParent <ConductorCollisionDetector>(); if (conductorCD != null) { ConductorSM conductor = (ConductorSM)conductorCD.Character; if (conductor.IsDragging()) { PassengerSM draggedPassenger = conductor.GetDragTarget(); TryHaveSetPassenger(draggedPassenger); } } }
public override void Deactivate() { base.Deactivate(); GameController.GetInstance().BonusEffectToPassengers(this, false); if (IsConductorAffected) { ConductorSM conductor = MonobehaviorHandler.GetMonobeharior().GetObject <Floor>("Floor").GetHero(); RemoveEffectFromConductor(conductor); } }
protected override void OnStart() { _timeSinceStateChanged = 0; if (_hero == null) { _hero = MonobehaviorHandler.GetMonobeharior().GetObject<Floor>("Floor").GetHero(); } if (_floor == null) { _floor = MonobehaviorHandler.GetMonobeharior().GetObject<Floor>("Floor"); } }
protected override void OnStart() { _timeSinceStateChanged = 0; if (_hero == null) { _hero = MonobehaviorHandler.GetMonobeharior().GetObject <Floor>("Floor").GetHero(); } if (_floor == null) { _floor = MonobehaviorHandler.GetMonobeharior().GetObject <Floor>("Floor"); } }
public override void Activate() { base.Activate(); if (IsPassengersAffected) { GameController.GetInstance().BonusEffectToPassengers(this, true); } if (IsConductorAffected) { ConductorSM conductor = MonobehaviorHandler.GetMonobeharior().GetObject <Floor>("Floor").GetHero(); AddEffectToConductor(conductor); } }
public override void HandleDoubleClick() { ConductorSM hero = MonobehaviorHandler.GetMonobeharior().GetObject <Floor>("Floor").GetHero(); if (hero.CanKick(this)) { if (_isFlyAwayDenied) { return; } hero.Kick(this); return; } hero.StartDrag(this); }
public override void HandleClick() { if (_isTrainingEnabled) { ShowNextTrainingMessage(); _isTrainingEnabled = false; } ConductorSM hero = MonobehaviorHandler.GetMonobeharior().GetObject <Floor>("Floor").GetHero(); if (!_isVisibleToHero) { if (IsStick()) { StartUnstick(hero); } else { _isVisibleToHero = true; GameController.GetInstance().UpdatePassenger(this); if (!_hasTicket) { if (!_isConductorAttackDenied) { AttackTarget = hero; CalculateAttackReaction(); } } else { MonobehaviorHandler.GetMonobeharior().GetObject <AudioPlayer>("AudioPlayer").PlayAudioById("coins"); } } return; } if (IsStick()) { StartUnstick(hero); return; } hero.StartDrag(this); }
public bool TryAttackMovable(MovableCharacterSM movable) { if (_attackDenyedByTraining) { return(false); } float currentAttackProbability = GetAttackProbabilityForClass(movable.GetClassName()); var sm = movable as PassengerSM; if (sm != null) { if (_isPassengerAttackDenied) { return(false); } PassengerSM passenger = sm; if (passenger.IsOnTheBench()) { currentAttackProbability *= ConfigReader.GetConfig().GetField("tram").GetField("SitAggressionIncrement").n; } } if (Randomizer.GetPercentageBasedBoolean((int)currentAttackProbability)) { if (_isConductorAttackDenied) { ConductorSM conductor = movable as ConductorSM; if (conductor != null) { return(false); } } AttackTarget = movable; AttackIfPossible(); return(true); } MakeIdle(); return(false); }
public override void Activate() { _isActive = true; if (IsPassengersAffected) { List <PassengerSM> passengersNear = GameController.GetInstance().AllPassengersInDist(Position, Dist); foreach (var passengerSm in passengersNear) { AddEffectToPassenger(passengerSm); } } if (IsConductorAffected) { ConductorSM hero = MonobehaviorHandler.GetMonobeharior().GetObject <Floor>("Floor").GetHero(); float dist = ((Vector2)hero.transform.position - Position).sqrMagnitude; if (dist <= Dist) { AddEffectToConductor(hero); } } Deactivate(); }
public void StopDrag(bool attack) { if (GetActiveState() != (int)MovableCharacterStates.Dragged) { return; } Floor floor = MonobehaviorHandler.GetMonobeharior().GetObject <Floor>("Floor"); floor.OnMouseUp(); ConductorSM conductor = floor.GetHero(); if (conductor.CanKick(this)) { if (!HasTicket()) { BeginEscape(conductor); } } else { if (attack) { if (_isConductorAttackDenied) { MakeIdle(); return; } AttackTarget = conductor; AttackIfPossible(); } else { MakeIdle(); } } }
private void ShowTrainingStep(int step) { switch (step) { case 0: if (IsTrainingFinished()) { gameObject.SetActive(false); return; } _benches = GameObject.Find("benches"); _benches.SetActive(false); _isBonusDropEnabled = false; _doorsTimer.SetActive(false); _ticketsCounter.SetActive(false); _haresCounter.SetActive(false); _killedCounter.SetActive(false); _lifes.SetActive(false); _bonusSelectWindow.SetActive(false); _isPassengerClickAllowed = false; _centralWayout.SetActive(false); _centralWayoutSprite.SetActive(false); _bonusesUI.SetActive(false); _megabonusUI.SetActive(false); _bonusButton.SetVisible(false); Time.timeScale = 0; _doorsTimerController.SetMoveAndStopDuration(3, 1); _doorsTimerController.SetMovementLocked(true); _fullConductorWindow.DisplayText(StringResources.GetLocalizedString("Training1"), false); break; case 1: _fullConductorWindow.DisplayTextWithImage(StringResources.GetLocalizedString("Training2"), Resources.Load <Sprite>("Sprites/training/training1"), false); break; case 2: _fullConductorWindow.DisplayText(StringResources.GetLocalizedString("Training3"), true); break; case 3: Time.timeScale = 1; SpawnPassengerFromRandomDoor("gnome", Spawner.TicketAdditionMode.WithTicket); StartCoroutine(WaitAndMoveNext(2)); break; case 4: Time.timeScale = 0; _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training4"), true); GameObject gnomeObject = GameObject.Find("gnome(Clone)"); _gnomePassenger = gnomeObject.GetComponent <Gnome>(); _gnomePassenger.SetAttackEnabled(false); _gnomePassenger.SetFlyAwayDenied(true); _gnomePassenger.SetDragDenied(true); DisplayArrowForPassenger(_gnomePassenger); _isPassengerClickAllowed = true; break; case 5: Time.timeScale = 1; _ticketsCounter.SetActive(true); break; case 6: Time.timeScale = 0; Destroy(_activeArrow); _doorsTimer.SetActive(true); _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training5"), true); break; case 7: Time.timeScale = 1; _doorsTimerController.SetMovementLocked(false); StartCoroutine(WaitAndMoveNext(2)); break; case 8: SpawnPassengerFromRandomDoor("bird", Spawner.TicketAdditionMode.WithoutTicket); GameObject bird = GameObject.Find("bird(Clone)"); _birdPassenger = bird.GetComponent <Bird>(); _birdPassenger.SetFlyAwayDenied(true); _birdPassenger.SetAttackEnabled(false); _birdPassenger.SetRunawayDenied(true); DisplayArrowForPassenger(_birdPassenger); _doorsTimerController.SetMovementLocked(true); break; case 9: Time.timeScale = 0; Destroy(_activeArrow); _doorsTimer.SetActive(true); _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training6"), true); break; case 10: _centralWayout.SetActive(true); _centralWayoutSprite.SetActive(true); DisplayArrow(_centralWayout); Time.timeScale = 1; _floor.AddDragCenterListner(_birdPassenger.name); break; case 11: Time.timeScale = 0; Destroy(_activeArrow); _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training7"), true); break; case 12: Time.timeScale = 1; _birdPassenger.SetRunawayDenied(false); _birdPassenger.SetFlyAwayDenied(false); _birdPassenger.ActivateFlyAwayListener(); _haresCounter.SetActive(true); break; case 13: Time.timeScale = 0; _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training8"), true); break; case 14: _doorsTimerController.SetMoveAndStopDuration(3, 5); Time.timeScale = 1; _doorsTimerController.SetMovementLocked(false); _goAwayDoorIndex = Randomizer.GetInRange(0, _doors.Length); _gnomePassenger.SetAlwaysStickForTraining(); _gnomePassenger.StartGoAway(); StartCoroutine(WaitAndMoveNext(2.9f)); break; case 15: _doors[(_goAwayDoorIndex)].Open(false); break; case 16: Time.timeScale = 0; _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training9"), true); break; case 17: Time.timeScale = 1; break; case 18: Time.timeScale = 0; _shortConductorWindow.DisplayText(StringResources.GetLocalizedString(_isGnomeSurvived ? "Training10" : "Training11"), true); break; case 19: Time.timeScale = 1; _doors[(_goAwayDoorIndex)].Close(); _doorsTimerController.Unstick(); StartCoroutine(WaitAndMoveNext(_doorsTimerController.GetCurrentRemainingTime() + 3)); break; case 20: _goAwayDoorIndex = Randomizer.GetInRange(0, _doors.Length); _doorsTimerController.OpenDoors(); int index = Randomizer.GetInRange(0, _doors.Length); _doors[index].OpenAndSpawnByName("granny", Spawner.TicketAdditionMode.WithTicket); index = Randomizer.GetInRange(0, _doors.Length); _doors[index].OpenAndSpawnByName("cat", Spawner.TicketAdditionMode.WithoutTicket); StartCoroutine(WaitAndMoveNext(0.1f)); break; case 21: _doorsTimerController.SetMovementLocked(true); GameObject grannyObject = GameObject.Find("granny(Clone)"); _grannyPassenger = grannyObject.GetComponent <Granny>(); GameObject catObject = GameObject.Find("cat(Clone)"); _catPassenger = catObject.GetComponent <Cat>(); _catPassenger.SetMaximumAttackProbabilityForTraining(); _grannyPassenger.SetMaximumAttackProbabilityForTraining(); _grannyPassenger.SetConductorAttackDenied(true); _catPassenger.SetConductorAttackDenied(true); _catPassenger.SetFlyAwayDenied(true); _grannyPassenger.SetFlyAwayDenied(true); _catPassenger.SetHalfImmortal(true); _grannyPassenger.SetHalfImmortal(true); _hero = GameObject.Find("hero").GetComponent <ConductorSM>(); _hero.SetHalfImmortal(true); break; case 22: _grannyPassenger.DisableAttackListener(); _catPassenger.DisableAttackListener(); if (_attackedPassenger != null) { DisplayArrowForPassenger((PassengerSM)_attackedPassenger); } break; case 23: Time.timeScale = 0; Destroy(_activeArrow); _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training12"), false); break; case 24: _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training13"), false); break; case 25: _grannyPassenger.SetDragListenerEnabled(true); _catPassenger.SetDragListenerEnabled(true); _killedCounter.SetActive(true); _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training14"), true); break; case 26: Time.timeScale = 1; _catPassenger.AttackTarget = _grannyPassenger; break; case 27: _grannyPassenger.SetDragListenerEnabled(false); _grannyPassenger.SetCounterAttackProbability(0); _catPassenger.SetDragListenerEnabled(false); _catPassenger.SetConductorAttackDenied(false); _catPassenger.SetPassengerAttackDenied(true); _hero.SetAttackListenerActivated(); _catPassenger.AttackTarget = _hero; break; case 28: StartCoroutine(WaitAndMoveNext(1)); break; case 29: Time.timeScale = 0; _lifes.SetActive(true); _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training15"), true); _catPassenger.SetFlyAwayDenied(false); _isBonusDropEnabled = true; _catPassenger.IncreaseBonusProbability(); break; case 30: DisplayArrowForPassenger(_catPassenger); Time.timeScale = 1; break; case 31: Destroy(_activeArrow); _bonusTimer.ActivateDropListener(); break; case 32: StartCoroutine(WaitAndMoveNext(1)); break; case 33: Time.timeScale = 0; _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training16"), true); break; case 34: Time.timeScale = 1; _bonusTimer.ActivateDropListener(); break; case 35: Time.timeScale = 0; _bonusesUI.SetActive(true); _megabonusUI.SetActive(true); _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training17"), false); break; case 36: _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training18"), true); break; case 37: Time.timeScale = 1; _doorsTimerController.SetMoveAndStopDuration(3, 7); _doorsTimerController.OpenDoors(); _doorsTimerController.SetMovementLocked(false); _grannyPassenger.SetStickProbability(0); _grannyPassenger.StartGoAway(); _grannyPassenger.IncreaseGoAwayVelocity(); _grannyPassenger.SetDragDenied(true); _goAwayDoorIndex = Randomizer.GetInRange(0, _doors.Length); _doors[(_goAwayDoorIndex)].Open(false); _grannyPassenger.IncrementStationCount(); StartCoroutine(WaitAndMoveNext(_doorsTimerController.GetCurrentRemainingTime() + 3)); break; case 38: _doorsTimerController.OpenDoors(); SpawnPassengerFromRandomDoor("alien", Spawner.TicketAdditionMode.WithTicket); SpawnPassengerFromRandomDoor("alien", Spawner.TicketAdditionMode.WithTicket); StartCoroutine(WaitAndMoveNext(1)); break; case 39: _doorsTimerController.SetMovementLocked(true); Time.timeScale = 0; _benches.SetActive(true); DisplayArrow(_benches); _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training19"), true); break; case 40: Destroy(_activeArrow); Time.timeScale = 1; _benchArray = FindObjectsOfType <Bench>(); foreach (var bench in _benchArray) { bench.SetCheckState(false); } _aliens = FindObjectsOfType <Alien>(); foreach (var alien in _aliens) { alien.SetFlyAwayDenied(true); alien.SetSitListenerActivated(true); } break; case 41: foreach (var alien in _aliens) { alien.SetSitListenerActivated(false); } _hero.SetHalfImmortal(false); Time.timeScale = 0; _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training20"), true); foreach (var bench in _benchArray) { bench.SetCheckState(true); } break; case 42: Time.timeScale = 1; _doorsTimerController.SetStationCountListener(3); _doorsTimerController.SetMovementLocked(false); _doorsTimerController.DisableTrainingMode(); break; case 43: PassengerSM[] passengers = FindObjectsOfType <PassengerSM>(); foreach (var passengerSm in passengers) { passengerSm.StartGoAway(); passengerSm.IncreaseGoAwayVelocity(); } _doorsTimerController.DisableSpawn(); _doorsTimerController.SetStationCountListener(2); break; case 44: _shortConductorWindow.ForceHide(); Time.timeScale = 0; _fullConductorWindow.DisplayTextWithImage(StringResources.GetLocalizedString("Training21"), Resources.Load <Sprite>("Sprites/training/training2"), false, true); break; case 45: PlayerPrefs.SetString(TrainingKey, TrainingKey); SceneManager.LoadSceneAsync("MainMenu"); break; } _isRefreshInProgress = false; }
public void StartUnstick(ConductorSM hero) { TimeSincePreviousClickMade = MaxClickDuration; hero.SetTarget(transform.position); hero.StartSaveStickPassenger(this); }
public override void AddEffectToConductor(ConductorSM conductor) { conductor.AddDamageValue(-conductor.GetInitialLifes()); }
public virtual void AddEffectToConductor(ConductorSM conductor) { }
void Awake() { _conductor = (ConductorSM)Character; }
public virtual void RemoveEffectFromConductor(ConductorSM conductor) { }
public ConductorMoveState(StateMachine parent) : base(parent) { _conductor = (ConductorSM)parent; }
public ConductorMoveState(StateMachine parent) : base(parent) { _conductor = (ConductorSM) parent; }
void Awake() { _conductor = (ConductorSM) Character; }
private void ShowTrainingStep(int step) { switch (step) { case 0: if (IsTrainingFinished()) { gameObject.SetActive(false); return; } _benches = GameObject.Find("benches"); _benches.SetActive(false); _isBonusDropEnabled = false; _doorsTimer.SetActive(false); _ticketsCounter.SetActive(false); _haresCounter.SetActive(false); _killedCounter.SetActive(false); _lifes.SetActive(false); _bonusSelectWindow.SetActive(false); _isPassengerClickAllowed = false; _centralWayout.SetActive(false); _centralWayoutSprite.SetActive(false); _bonusesUI.SetActive(false); _megabonusUI.SetActive(false); _bonusButton.SetVisible(false); Time.timeScale = 0; _doorsTimerController.SetMoveAndStopDuration(3, 1); _doorsTimerController.SetMovementLocked(true); _fullConductorWindow.DisplayText(StringResources.GetLocalizedString("Training1"), false); break; case 1: _fullConductorWindow.DisplayTextWithImage(StringResources.GetLocalizedString("Training2"), Resources.Load<Sprite>("Sprites/training/training1"), false); break; case 2: _fullConductorWindow.DisplayText(StringResources.GetLocalizedString("Training3"), true); break; case 3: Time.timeScale = 1; SpawnPassengerFromRandomDoor("gnome", Spawner.TicketAdditionMode.WithTicket); StartCoroutine(WaitAndMoveNext(2)); break; case 4: Time.timeScale = 0; _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training4"), true); GameObject gnomeObject = GameObject.Find("gnome(Clone)"); _gnomePassenger = gnomeObject.GetComponent<Gnome>(); _gnomePassenger.SetAttackEnabled(false); _gnomePassenger.SetFlyAwayDenied(true); _gnomePassenger.SetDragDenied(true); DisplayArrowForPassenger(_gnomePassenger); _isPassengerClickAllowed = true; break; case 5: Time.timeScale = 1; _ticketsCounter.SetActive(true); break; case 6: Time.timeScale = 0; Destroy(_activeArrow); _doorsTimer.SetActive(true); _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training5"), true); break; case 7: Time.timeScale = 1; _doorsTimerController.SetMovementLocked(false); StartCoroutine(WaitAndMoveNext(2)); break; case 8: SpawnPassengerFromRandomDoor("bird", Spawner.TicketAdditionMode.WithoutTicket); GameObject bird = GameObject.Find("bird(Clone)"); _birdPassenger = bird.GetComponent<Bird>(); _birdPassenger.SetFlyAwayDenied(true); _birdPassenger.SetAttackEnabled(false); _birdPassenger.SetRunawayDenied(true); DisplayArrowForPassenger(_birdPassenger); _doorsTimerController.SetMovementLocked(true); break; case 9: Time.timeScale = 0; Destroy(_activeArrow); _doorsTimer.SetActive(true); _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training6"), true); break; case 10: _centralWayout.SetActive(true); _centralWayoutSprite.SetActive(true); DisplayArrow(_centralWayout); Time.timeScale = 1; _floor.AddDragCenterListner(_birdPassenger.name); break; case 11: Time.timeScale = 0; Destroy(_activeArrow); _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training7"), true); break; case 12: Time.timeScale = 1; _birdPassenger.SetRunawayDenied(false); _birdPassenger.SetFlyAwayDenied(false); _birdPassenger.ActivateFlyAwayListener(); _haresCounter.SetActive(true); break; case 13: Time.timeScale = 0; _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training8"), true); break; case 14: _doorsTimerController.SetMoveAndStopDuration(3, 5); Time.timeScale = 1; _doorsTimerController.SetMovementLocked(false); _goAwayDoorIndex = Randomizer.GetInRange(0, _doors.Length); _gnomePassenger.SetAlwaysStickForTraining(); _gnomePassenger.StartGoAway(); StartCoroutine(WaitAndMoveNext(2.9f)); break; case 15: _doors[(_goAwayDoorIndex)].Open(false); break; case 16: Time.timeScale = 0; _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training9"), true); break; case 17: Time.timeScale = 1; break; case 18: Time.timeScale = 0; _shortConductorWindow.DisplayText(StringResources.GetLocalizedString(_isGnomeSurvived ? "Training10" : "Training11"), true); break; case 19: Time.timeScale = 1; _doors[(_goAwayDoorIndex)].Close(); _doorsTimerController.Unstick(); StartCoroutine(WaitAndMoveNext(_doorsTimerController.GetCurrentRemainingTime() + 3)); break; case 20: _goAwayDoorIndex = Randomizer.GetInRange(0, _doors.Length); _doorsTimerController.OpenDoors(); int index = Randomizer.GetInRange(0, _doors.Length); _doors[index].OpenAndSpawnByName("granny", Spawner.TicketAdditionMode.WithTicket); index = Randomizer.GetInRange(0, _doors.Length); _doors[index].OpenAndSpawnByName("cat", Spawner.TicketAdditionMode.WithoutTicket); StartCoroutine(WaitAndMoveNext(0.1f)); break; case 21: _doorsTimerController.SetMovementLocked(true); GameObject grannyObject = GameObject.Find("granny(Clone)"); _grannyPassenger = grannyObject.GetComponent<Granny>(); GameObject catObject = GameObject.Find("cat(Clone)"); _catPassenger = catObject.GetComponent<Cat>(); _catPassenger.SetMaximumAttackProbabilityForTraining(); _grannyPassenger.SetMaximumAttackProbabilityForTraining(); _grannyPassenger.SetConductorAttackDenied(true); _catPassenger.SetConductorAttackDenied(true); _catPassenger.SetFlyAwayDenied(true); _grannyPassenger.SetFlyAwayDenied(true); _catPassenger.SetHalfImmortal(true); _grannyPassenger.SetHalfImmortal(true); _hero = GameObject.Find("hero").GetComponent<ConductorSM>(); _hero.SetHalfImmortal(true); break; case 22: _grannyPassenger.DisableAttackListener(); _catPassenger.DisableAttackListener(); if (_attackedPassenger != null) { DisplayArrowForPassenger((PassengerSM)_attackedPassenger); } break; case 23: Time.timeScale = 0; Destroy(_activeArrow); _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training12"), false); break; case 24: _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training13"), false); break; case 25: _grannyPassenger.SetDragListenerEnabled(true); _catPassenger.SetDragListenerEnabled(true); _killedCounter.SetActive(true); _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training14"), true); break; case 26: Time.timeScale = 1; _catPassenger.AttackTarget = _grannyPassenger; break; case 27: _grannyPassenger.SetDragListenerEnabled(false); _grannyPassenger.SetCounterAttackProbability(0); _catPassenger.SetDragListenerEnabled(false); _catPassenger.SetConductorAttackDenied(false); _catPassenger.SetPassengerAttackDenied(true); _hero.SetAttackListenerActivated(); _catPassenger.AttackTarget = _hero; break; case 28: StartCoroutine(WaitAndMoveNext(1)); break; case 29: Time.timeScale = 0; _lifes.SetActive(true); _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training15"), true); _catPassenger.SetFlyAwayDenied(false); _isBonusDropEnabled = true; _catPassenger.IncreaseBonusProbability(); break; case 30: DisplayArrowForPassenger(_catPassenger); Time.timeScale = 1; break; case 31: Destroy(_activeArrow); _bonusTimer.ActivateDropListener(); break; case 32: StartCoroutine(WaitAndMoveNext(1)); break; case 33: Time.timeScale = 0; _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training16"), true); break; case 34: Time.timeScale = 1; _bonusTimer.ActivateDropListener(); break; case 35: Time.timeScale = 0; _bonusesUI.SetActive(true); _megabonusUI.SetActive(true); _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training17"), false); break; case 36: _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training18"), true); break; case 37: Time.timeScale = 1; _doorsTimerController.SetMoveAndStopDuration(3, 7); _doorsTimerController.OpenDoors(); _doorsTimerController.SetMovementLocked(false); _grannyPassenger.SetStickProbability(0); _grannyPassenger.StartGoAway(); _grannyPassenger.IncreaseGoAwayVelocity(); _grannyPassenger.SetDragDenied(true); _goAwayDoorIndex = Randomizer.GetInRange(0, _doors.Length); _doors[(_goAwayDoorIndex)].Open(false); _grannyPassenger.IncrementStationCount(); StartCoroutine(WaitAndMoveNext(_doorsTimerController.GetCurrentRemainingTime() + 3)); break; case 38: _doorsTimerController.OpenDoors(); SpawnPassengerFromRandomDoor("alien", Spawner.TicketAdditionMode.WithTicket); SpawnPassengerFromRandomDoor("alien", Spawner.TicketAdditionMode.WithTicket); StartCoroutine(WaitAndMoveNext(1)); break; case 39: _doorsTimerController.SetMovementLocked(true); Time.timeScale = 0; _benches.SetActive(true); DisplayArrow(_benches); _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training19"), true); break; case 40: Destroy(_activeArrow); Time.timeScale = 1; _benchArray = FindObjectsOfType<Bench>(); foreach (var bench in _benchArray) { bench.SetCheckState(false); } _aliens = FindObjectsOfType<Alien>(); foreach (var alien in _aliens) { alien.SetFlyAwayDenied(true); alien.SetSitListenerActivated(true); } break; case 41: foreach (var alien in _aliens) { alien.SetSitListenerActivated(false); } _hero.SetHalfImmortal(false); Time.timeScale = 0; _shortConductorWindow.DisplayText(StringResources.GetLocalizedString("Training20"), true); foreach (var bench in _benchArray) { bench.SetCheckState(true); } break; case 42: Time.timeScale = 1; _doorsTimerController.SetStationCountListener(3); _doorsTimerController.SetMovementLocked(false); _doorsTimerController.DisableTrainingMode(); break; case 43: PassengerSM[] passengers = FindObjectsOfType<PassengerSM>(); foreach (var passengerSm in passengers) { passengerSm.StartGoAway(); passengerSm.IncreaseGoAwayVelocity(); } _doorsTimerController.DisableSpawn(); _doorsTimerController.SetStationCountListener(2); break; case 44: _shortConductorWindow.ForceHide(); Time.timeScale = 0; _fullConductorWindow.DisplayTextWithImage(StringResources.GetLocalizedString("Training21"), Resources.Load<Sprite>("Sprites/training/training2"), false, true); break; case 45: PlayerPrefs.SetString(TrainingKey, TrainingKey); SceneManager.LoadSceneAsync("MainMenu"); break; } _isRefreshInProgress = false; }