summaryrefslogtreecommitdiff
path: root/Thronefall_1_0/GameCode/TutorialManager.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2024-05-19 16:46:27 +0800
committerchai <215380520@qq.com>2024-05-19 16:46:27 +0800
commit8b1fc7063b387542803c6bc214ccf8acb32870bd (patch)
treed310eb99872c8215f1c1f67731ec21f0915cd778 /Thronefall_1_0/GameCode/TutorialManager.cs
parent8e13e7e2874adc8982e16d1d2ed2e28d7480b45f (diff)
* rename
Diffstat (limited to 'Thronefall_1_0/GameCode/TutorialManager.cs')
-rw-r--r--Thronefall_1_0/GameCode/TutorialManager.cs662
1 files changed, 0 insertions, 662 deletions
diff --git a/Thronefall_1_0/GameCode/TutorialManager.cs b/Thronefall_1_0/GameCode/TutorialManager.cs
deleted file mode 100644
index 681344f..0000000
--- a/Thronefall_1_0/GameCode/TutorialManager.cs
+++ /dev/null
@@ -1,662 +0,0 @@
-using System.Collections.Generic;
-using I2.Loc;
-using Pathfinding.RVO;
-using UnityEngine;
-
-public class TutorialManager : MonoBehaviour
-{
- public static TutorialManager instance;
-
- private PlayerInteraction playerInteraction;
-
- private DayNightCycle dayNightCycle;
-
- private TooltipManager tooltipManager;
-
- private TagManager tagManager;
-
- private EnemySpawner enemySpawner;
-
- private bool allowStartingTheNight = true;
-
- private static readonly string LOCIDENTIFIER = "Tutorial/";
-
- [SerializeField]
- private Transform arrowMarkerTransform;
-
- [SerializeField]
- private ScreenMarker arrowMarker;
-
- [SerializeField]
- private Transform player;
-
- [Header("When you're dead")]
- [SerializeField]
- private Hp playerHp;
-
- [Header("Movement Tutorial")]
- [SerializeField]
- private RVOController playerRvo;
-
- [SerializeField]
- private float requiredMoveDist;
-
- private bool playerHasLearnedHowToMove;
-
- private bool destroyedPracticeTargets;
-
- private bool playerDidSprint;
-
- [Header("Build Castle Center")]
- [SerializeField]
- private BuildingInteractor caslteBuildInteractor;
-
- private bool castleCenterBuilt;
-
- private bool mayShowEnemySpawn;
-
- [Header("Start The Night")]
- private bool firstNightStarted;
-
- [Header("First Night")]
- [SerializeField]
- private StabMA activeStabAttack;
-
- [Header("Build Houses")]
- [SerializeField]
- private List<BuildSlot> houses;
-
- private bool housesBuilt;
-
- [Header("Start The 2nd Night")]
- private bool secondNightStarted;
-
- [Header("2nd Night")]
- [Header("Collect Taxes")]
- [SerializeField]
- private List<BuildSlot> towers;
-
- private bool towersBuilt;
-
- [Header("Start The 3d Night")]
- private bool thirdNightStarted;
-
- [Header("Upgrade Castle Center")]
- [SerializeField]
- private BuildSlot caslteBuilSlot;
-
- [SerializeField]
- private GameObject royalTraining;
-
- [SerializeField]
- private GameObject buildersGuild;
-
- private bool castleCenterUpgraded;
-
- private bool fourthNightStarted;
-
- [Header("It's up to you!")]
- [SerializeField]
- private BuildSlot barracks;
-
- [SerializeField]
- private CommandUnits command;
-
- private bool commandingUnits;
-
- private bool commandedUnits;
-
- private bool triedHoldPosition;
-
- [TextArea(1, 10)]
- public string whileDead;
-
- [TextArea(1, 10)]
- public string howToMove;
-
- [TextArea(1, 10)]
- public string howToSprint;
-
- [TextArea(1, 10)]
- public string howToBuild;
-
- [TextArea(1, 10)]
- public string startTheNight;
-
- [TextArea(1, 10)]
- public string howToStartTheNight;
-
- [TextArea(1, 10)]
- public string tooExpensiveToBuild;
-
- [TextArea(1, 10)]
- public string tooExpensiveToUpgrade;
-
- [TextArea(1, 10)]
- public string tooExpensiveToUpgradeCastleCenter;
-
- [TextArea(1, 10)]
- public string firstNight;
-
- [TextArea(1, 10)]
- public string firstNightDone;
-
- [TextArea(1, 10)]
- public string buildHouses;
-
- [TextArea(1, 10)]
- public string startThe2ndNight;
-
- [TextArea(1, 10)]
- public string secondNight;
-
- [TextArea(1, 10)]
- public string buildTowers;
-
- [TextArea(1, 10)]
- public string startThe3ndNight;
-
- [TextArea(1, 10)]
- public string upgradeCastleCenter;
-
- [TextArea(1, 10)]
- public string howToUpgrade;
-
- [TextArea(1, 10)]
- public string chooseAnUpgrade;
-
- [TextArea(1, 10)]
- public string goodChoiceGeneric;
-
- [TextArea(1, 10)]
- public string goodChoiceRoyalTraining;
-
- [TextArea(1, 10)]
- public string goodChoiceBuildersGuild;
-
- [TextArea(1, 10)]
- public string itsUpToYou;
-
- [TextArea(1, 10)]
- public string maybeBuildBarracksSomeTime;
-
- [TextArea(1, 10)]
- public string tryToCommandYourUnits;
-
- [TextArea(1, 10)]
- public string makeThemHoldPosition;
-
- [TextArea(1, 10)]
- public string howToHeal;
-
- [TextArea(1, 10)]
- public string lastDay;
-
- [TextArea(1, 10)]
- public string lastNight;
-
- private List<TaggedObject> findTaggedObjects = new List<TaggedObject>();
-
- private List<TagManager.ETag> mustHaveTag = new List<TagManager.ETag>();
-
- private List<TagManager.ETag> mayNotHaveTag = new List<TagManager.ETag>();
-
- public static bool AllowStartingTheNight
- {
- get
- {
- if (!instance)
- {
- return true;
- }
- return instance.allowStartingTheNight;
- }
- }
-
- public bool MayShowEnemySpawn => mayShowEnemySpawn;
-
- private void SetArrowMarker(bool _enabled, Vector3 _pos, bool _offScreenOnly = false)
- {
- arrowMarkerTransform.gameObject.SetActive(_enabled);
- arrowMarkerTransform.position = _pos + Vector3.up * 10f;
- arrowMarker.showWhenOnScreen = !_offScreenOnly;
- }
-
- private void MarkNearestObjectWithTag(TagManager.ETag _tag, bool _offScreenOnly = false)
- {
- findTaggedObjects.Clear();
- mustHaveTag.Clear();
- mayNotHaveTag.Clear();
- mustHaveTag.Add(_tag);
- TagManager.instance.FindAllTaggedObjectsWithTags(findTaggedObjects, mustHaveTag, mayNotHaveTag);
- if (findTaggedObjects.Count <= 0)
- {
- return;
- }
- TaggedObject taggedObject = null;
- float num = float.MaxValue;
- for (int i = 0; i < findTaggedObjects.Count; i++)
- {
- float magnitude = (player.transform.position - findTaggedObjects[i].transform.position).magnitude;
- if (magnitude < num)
- {
- num = magnitude;
- taggedObject = findTaggedObjects[i];
- }
- }
- SetArrowMarker(_enabled: true, taggedObject.transform.position, _offScreenOnly);
- }
-
- private void MarkNearestUnbuiltBuilding(List<BuildSlot> _buildSlots)
- {
- List<BuildSlot> list = new List<BuildSlot>(_buildSlots);
- for (int num = list.Count - 1; num >= 0; num--)
- {
- if (list[num].State == BuildSlot.BuildingState.Built)
- {
- list.RemoveAt(num);
- }
- else if (!list[num].gameObject.activeInHierarchy)
- {
- list.RemoveAt(num);
- }
- }
- if (list.Count <= 0)
- {
- return;
- }
- BuildSlot buildSlot = null;
- float num2 = float.MaxValue;
- for (int i = 0; i < list.Count; i++)
- {
- float magnitude = (player.transform.position - list[i].transform.position).magnitude;
- if (magnitude < num2)
- {
- num2 = magnitude;
- buildSlot = list[i];
- }
- }
- SetArrowMarker(_enabled: true, buildSlot.transform.position);
- }
-
- private void MarkNearestGoldCoin()
- {
- List<Coin> freeCoins = TagManager.instance.freeCoins;
- if (freeCoins.Count <= 0)
- {
- return;
- }
- Coin coin = null;
- float num = float.MaxValue;
- for (int i = 0; i < freeCoins.Count; i++)
- {
- float magnitude = (player.transform.position - freeCoins[i].transform.position).magnitude;
- if (magnitude < num)
- {
- num = magnitude;
- coin = freeCoins[i];
- }
- }
- SetArrowMarker(_enabled: true, coin.transform.position);
- }
-
- private void Awake()
- {
- instance = this;
- }
-
- private void OnEnable()
- {
- LocalizationManager.OnLocalizeEvent += FetchLocalizedTexts;
- }
-
- private void OnDisable()
- {
- LocalizationManager.OnLocalizeEvent -= FetchLocalizedTexts;
- }
-
- private void Start()
- {
- dayNightCycle = DayNightCycle.Instance;
- tooltipManager = TooltipManager.instance;
- tagManager = TagManager.instance;
- playerInteraction = PlayerInteraction.instance;
- enemySpawner = EnemySpawner.instance;
- FetchLocalizedTexts();
- }
-
- private void Update()
- {
- if (SceneTransitionManager.instance.SceneTransitionIsRunning)
- {
- return;
- }
- SetArrowMarker(_enabled: false, Vector3.zero);
- tooltipManager.SetTutorialOverride("");
- tooltipManager.SetTutorialOverride("", _priorityText: false);
- if (playerHp.KnockedOut)
- {
- tooltipManager.SetTutorialOverride(whileDead);
- return;
- }
- if (!playerHasLearnedHowToMove)
- {
- MarkNearestObjectWithTag(TagManager.ETag.PracticeTargets);
- tooltipManager.SetTutorialOverride(howToMove);
- requiredMoveDist -= playerRvo.velocity.magnitude * Time.deltaTime;
- if (requiredMoveDist < 0f)
- {
- playerHasLearnedHowToMove = true;
- }
- return;
- }
- if (!destroyedPracticeTargets)
- {
- MarkNearestObjectWithTag(TagManager.ETag.PracticeTargets);
- if (tagManager.CountAllTaggedObjectsWithTag(TagManager.ETag.PracticeTargets) <= 0)
- {
- destroyedPracticeTargets = true;
- }
- return;
- }
- if (tagManager.freeCoins.Count > 0 && dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Day && enemySpawner.Wavenumber == -1 && enemySpawner.Wavenumber <= 3)
- {
- MarkNearestGoldCoin();
- return;
- }
- if (!castleCenterBuilt)
- {
- if (PlayerManager.Instance.RegisteredPlayers[0].Sprinting)
- {
- playerDidSprint = true;
- }
- if (playerInteraction.FocussedInteractor == caslteBuildInteractor)
- {
- tooltipManager.SetTutorialOverride(howToBuild);
- }
- else
- {
- tooltipManager.SetTutorialOverride(howToSprint);
- if (playerDidSprint)
- {
- SetArrowMarker(_enabled: true, caslteBuildInteractor.transform.position);
- }
- }
- if (tagManager.CountAllTaggedObjectsWithTag(TagManager.ETag.Building) > 0)
- {
- castleCenterBuilt = true;
- mayShowEnemySpawn = true;
- enemySpawner.EnemySpawnersHornUnFocussed();
- }
- return;
- }
- if (playerInteraction.FocussedInteractor != null && playerInteraction.FocussedInteractor.GetType() == typeof(BuildingInteractor))
- {
- BuildingInteractor buildingInteractor = (BuildingInteractor)playerInteraction.FocussedInteractor;
- if (buildingInteractor.targetBuilding.CanBeUpgraded && playerInteraction.Balance + CostDisplay.currentlyFilledCoinsFromLastActiveDisplay < buildingInteractor.targetBuilding.NextUpgradeOrBuildCost && !buildingInteractor.UpgradeCueVisible)
- {
- if (buildingInteractor.targetBuilding.State == BuildSlot.BuildingState.Blueprint)
- {
- tooltipManager.SetTutorialOverride(tooExpensiveToBuild);
- }
- else if (buildingInteractor.targetBuilding.GetComponentInChildren<TaggedObject>().Tags.Contains(TagManager.ETag.CastleCenter))
- {
- tooltipManager.SetTutorialOverride(tooExpensiveToUpgradeCastleCenter);
- }
- else
- {
- tooltipManager.SetTutorialOverride(tooExpensiveToUpgrade);
- }
- return;
- }
- }
- if (!firstNightStarted)
- {
- tooltipManager.SetTutorialOverride(startTheNight);
- if (dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Night)
- {
- firstNightStarted = true;
- }
- return;
- }
- if (enemySpawner.Wavenumber == 0 && dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Night)
- {
- EnemySpawner.instance.InfinitelySpawning = activeStabAttack.TargetsStabeed < 3;
- MarkNearestObjectWithTag(TagManager.ETag.EnemyOwned, _offScreenOnly: true);
- allowStartingTheNight = false;
- if (activeStabAttack.TargetsStabeed < 3)
- {
- tooltipManager.SetTutorialOverride(firstNight + " (" + activeStabAttack.TargetsStabeed + "/3)");
- }
- else
- {
- tooltipManager.SetTutorialOverride(firstNightDone);
- }
- return;
- }
- if (!housesBuilt && dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Day)
- {
- MarkNearestUnbuiltBuilding(houses);
- int num = tagManager.CountAllTaggedObjectsWithTag(TagManager.ETag.Building);
- int num2 = num - 1;
- tooltipManager.SetTutorialOverride(buildHouses + " (" + num2 + "/3)");
- if (playerInteraction.FocussedInteractor != null && playerInteraction.FocussedInteractor.GetType() == typeof(BuildingInteractor))
- {
- SetArrowMarker(_enabled: false, Vector3.zero);
- if (num2 == 0)
- {
- tooltipManager.SetTutorialOverride(howToBuild);
- }
- }
- if (num >= 4)
- {
- housesBuilt = true;
- }
- return;
- }
- if (!secondNightStarted && housesBuilt)
- {
- allowStartingTheNight = true;
- tooltipManager.SetTutorialOverride(startThe2ndNight);
- if (dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Night)
- {
- secondNightStarted = true;
- }
- return;
- }
- if (enemySpawner.Wavenumber == 1 && dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Night)
- {
- MarkNearestObjectWithTag(TagManager.ETag.EnemyOwned, _offScreenOnly: true);
- allowStartingTheNight = false;
- tooltipManager.SetTutorialOverride(secondNight);
- return;
- }
- if (!towersBuilt && dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Day)
- {
- if (dayNightCycle.AfterSunrise)
- {
- MarkNearestUnbuiltBuilding(towers);
- if (playerInteraction.FocussedInteractor != null && playerInteraction.FocussedInteractor.GetType() == typeof(BuildingInteractor))
- {
- SetArrowMarker(_enabled: false, Vector3.zero);
- }
- int num3 = tagManager.CountAllTaggedObjectsWithTag(TagManager.ETag.Building) - 4;
- tooltipManager.SetTutorialOverride(buildTowers + " (" + num3 + "/2)");
- if (num3 >= 2)
- {
- towersBuilt = true;
- }
- }
- return;
- }
- if (!thirdNightStarted && towersBuilt)
- {
- allowStartingTheNight = true;
- tooltipManager.SetTutorialOverride(startThe3ndNight);
- if (dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Night)
- {
- thirdNightStarted = true;
- }
- return;
- }
- if (ChoiceManager.instance.ChoiceCoroutineRunning)
- {
- tooltipManager.SetTutorialOverride(chooseAnUpgrade);
- return;
- }
- if (thirdNightStarted && !castleCenterUpgraded && dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Day)
- {
- allowStartingTheNight = false;
- if (!dayNightCycle.AfterSunrise)
- {
- return;
- }
- if (playerInteraction.FocussedInteractor == caslteBuildInteractor)
- {
- tooltipManager.SetTutorialOverride(howToUpgrade);
- return;
- }
- SetArrowMarker(_enabled: true, caslteBuildInteractor.transform.position);
- tooltipManager.SetTutorialOverride(upgradeCastleCenter);
- if (caslteBuilSlot.Level == 2)
- {
- castleCenterUpgraded = true;
- allowStartingTheNight = true;
- }
- return;
- }
- if (!fourthNightStarted && castleCenterUpgraded)
- {
- allowStartingTheNight = true;
- if (royalTraining.activeInHierarchy)
- {
- tooltipManager.SetTutorialOverride(goodChoiceRoyalTraining);
- }
- else if (buildersGuild.activeInHierarchy)
- {
- tooltipManager.SetTutorialOverride(goodChoiceBuildersGuild);
- }
- else
- {
- tooltipManager.SetTutorialOverride(goodChoiceGeneric);
- }
- if (dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Night)
- {
- fourthNightStarted = true;
- }
- return;
- }
- if (enemySpawner.Wavenumber == 3 && dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Night)
- {
- allowStartingTheNight = false;
- return;
- }
- if (barracks.State == BuildSlot.BuildingState.Built && dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Day)
- {
- if (!dayNightCycle.AfterSunrise)
- {
- return;
- }
- if (!commandedUnits)
- {
- if (command.commanding)
- {
- commandingUnits = true;
- }
- if (commandingUnits && !command.commanding)
- {
- commandedUnits = true;
- }
- tooltipManager.SetTutorialOverride(tryToCommandYourUnits);
- return;
- }
- if (!triedHoldPosition)
- {
- foreach (TaggedObject playerUnit in TagManager.instance.PlayerUnits)
- {
- if (playerUnit.GetComponent<PathfindMovementPlayerunit>().HoldPosition)
- {
- triedHoldPosition = true;
- }
- }
- tooltipManager.SetTutorialOverride(makeThemHoldPosition);
- }
- }
- if (enemySpawner.Wavenumber == 3 && dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Day)
- {
- if (dayNightCycle.AfterSunrise)
- {
- tooltipManager.SetTutorialOverride(itsUpToYou, _priorityText: false);
- allowStartingTheNight = true;
- }
- }
- else if (enemySpawner.Wavenumber == 4 && dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Night)
- {
- tooltipManager.SetTutorialOverride(howToHeal);
- }
- else if (enemySpawner.Wavenumber >= 4 && dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Day && barracks.State != BuildSlot.BuildingState.Built && playerInteraction.Balance + CostDisplay.currentlyFilledCoinsFromLastActiveDisplay >= 4)
- {
- if (dayNightCycle.AfterSunrise)
- {
- tooltipManager.SetTutorialOverride(maybeBuildBarracksSomeTime, _priorityText: false);
- if (playerInteraction.FocussedInteractor == null)
- {
- SetArrowMarker(_enabled: true, barracks.transform.position + Vector3.up * 3f);
- }
- }
- }
- else if (enemySpawner.Wavenumber == 5 && dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Night)
- {
- tooltipManager.SetTutorialOverride(howToHeal);
- }
- else if (enemySpawner.Wavenumber == 5 && dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Day)
- {
- _ = dayNightCycle.AfterSunrise;
- }
- else if (enemySpawner.Wavenumber == 6 && dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Night)
- {
- tooltipManager.SetTutorialOverride(howToHeal);
- }
- else if (enemySpawner.Wavenumber == 6 && dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Day)
- {
- tooltipManager.SetTutorialOverride(lastDay, _priorityText: false);
- }
- else if (enemySpawner.Wavenumber == 7 && dayNightCycle.CurrentTimestate == DayNightCycle.Timestate.Night)
- {
- tooltipManager.SetTutorialOverride(lastNight);
- }
- }
-
- private void FetchLocalizedTexts()
- {
- whileDead = LocalizationManager.GetTranslation(LOCIDENTIFIER + "whileDead");
- howToMove = LocalizationManager.GetTranslation(LOCIDENTIFIER + "howToMove");
- howToSprint = LocalizationManager.GetTranslation(LOCIDENTIFIER + "howToSprint");
- howToBuild = LocalizationManager.GetTranslation(LOCIDENTIFIER + "howToBuild");
- startTheNight = LocalizationManager.GetTranslation(LOCIDENTIFIER + "startTheNight");
- howToStartTheNight = LocalizationManager.GetTranslation(LOCIDENTIFIER + "howToStartTheNight");
- tooExpensiveToBuild = LocalizationManager.GetTranslation(LOCIDENTIFIER + "tooExpensiveToBuild");
- tooExpensiveToUpgrade = LocalizationManager.GetTranslation(LOCIDENTIFIER + "tooExpensiveToUpgrade");
- tooExpensiveToUpgradeCastleCenter = LocalizationManager.GetTranslation(LOCIDENTIFIER + "tooExpensiveToUpgradeCastleCenter");
- firstNight = LocalizationManager.GetTranslation(LOCIDENTIFIER + "firstNight");
- firstNightDone = LocalizationManager.GetTranslation(LOCIDENTIFIER + "firstNightDone");
- buildHouses = LocalizationManager.GetTranslation(LOCIDENTIFIER + "buildHouses");
- startThe2ndNight = LocalizationManager.GetTranslation(LOCIDENTIFIER + "startThe2ndNight");
- secondNight = LocalizationManager.GetTranslation(LOCIDENTIFIER + "secondNight");
- buildTowers = LocalizationManager.GetTranslation(LOCIDENTIFIER + "buildTowers");
- startThe3ndNight = LocalizationManager.GetTranslation(LOCIDENTIFIER + "startThe3ndNight");
- upgradeCastleCenter = LocalizationManager.GetTranslation(LOCIDENTIFIER + "upgradeCastleCenter");
- howToUpgrade = LocalizationManager.GetTranslation(LOCIDENTIFIER + "howToUpgrade");
- chooseAnUpgrade = LocalizationManager.GetTranslation(LOCIDENTIFIER + "chooseAnUpgrade");
- goodChoiceGeneric = LocalizationManager.GetTranslation(LOCIDENTIFIER + "goodChoiceGeneric");
- goodChoiceRoyalTraining = LocalizationManager.GetTranslation(LOCIDENTIFIER + "goodChoiceRoyalTraining");
- goodChoiceBuildersGuild = LocalizationManager.GetTranslation(LOCIDENTIFIER + "goodChoiceBuildersGuild");
- itsUpToYou = LocalizationManager.GetTranslation(LOCIDENTIFIER + "itsUpToYou");
- maybeBuildBarracksSomeTime = LocalizationManager.GetTranslation(LOCIDENTIFIER + "maybeBuildBarracksSomeTime");
- tryToCommandYourUnits = LocalizationManager.GetTranslation(LOCIDENTIFIER + "tryToCommandYourUnits");
- makeThemHoldPosition = LocalizationManager.GetTranslation(LOCIDENTIFIER + "makeThemHoldPosition");
- howToHeal = LocalizationManager.GetTranslation(LOCIDENTIFIER + "howToHeal");
- lastDay = LocalizationManager.GetTranslation(LOCIDENTIFIER + "lastDay");
- lastNight = LocalizationManager.GetTranslation(LOCIDENTIFIER + "lastNight");
- }
-}