void OpenChest(LootCrate crate) { lootCrateInterface = Instantiate(LootInterface, LootInterfaceContainer); LootCrateInterface lci = lootCrateInterface.GetComponent <LootCrateInterface>(); lci.Initialize(crate, null, CompleteLoot, true); }
private void KilledBy(GameObject source) { InventoryNPC myInv = GetComponent <InventoryNPC>(); if (WeaponSlot.transform.childCount > 0) { InvItem weapon = WeaponSlot.transform.GetChild(0).GetComponent <InvItem>(); if (weapon) { myInv.GiveItem(weapon); } } if (ArmorSlot.transform.childCount > 0) { InvItem armor = ArmorSlot.transform.GetChild(0).GetComponent <InvItem>(); if (armor) { myInv.GiveItem(armor); } } LootCrate.SpawnLootcrateOn(transform); Destroy(gameObject); }
// CLEAN ME private void BtnOnClickCrate(Button crateBtn) { if (_status != LootCrateScreenStatus.NORMAL) { return; } SetNavButtonsEnabled(false); _status = LootCrateScreenStatus.OPEN_CRATE; _crateItems = new List <LootCrateItem>(); _currentLootCrate = crateBtn.GetComponentInParent <LootCrateBox>(); Rect parentRect = this.parentRect; Transform btnParent = crateBtn.transform.parent; LootCrate lootCrate = _currentLootCrate.lootCrate; List <Item> items = lootCrate.GenerateItems(); //NOTE-TO-SELF: DO call this API method! (Instead of one-by-one, batch-calls adds all generated items) API.Items.AddMany(items) .Then(res => trace("Added " + items.Count + " items server-side...")) .Catch(err => traceError("Something went wrong while adding newly generated items to server-side: " + err.Message)); dataMan.allItemsList.AddRange(items); }
void OpenChest(string type) { if (lootCrates.Count <= 0) { return; } LootCrate crate = lootCrates.Find(lc => lc.CrateType.Identity == type); if (crate == null) { Debug.LogError("Error: How is the loot crate even null here?"); return; } if (lootCrates.Count <= 1) { forceClose = true; } LootCrateInterface lci = (LootCrateInterface)MenuManager.Instance.Push("Interface_LootCrate"); lootCrates.Remove(crate); lci.Initialize(crate, UpdateChestText, checkToCloseResults); }
public static NodePromise GenerateLootCrate(LootTableData lootTable, float minItemLevel, float Variance, float magicFind, int activeZoneMongoID = -1, CrateTypeData lootCrateType = null, Action <LootCrate> callback = null) { LootCrate lootCrate; if (lootCrateType == null) { CrateTypeData ctd = MathHelper.WeightedRandom(lootTable.crateType).Key; lootCrate = new LootCrate(lootTable.Identity, minItemLevel, Variance, ctd, magicFind); } else { lootCrate = new LootCrate(lootTable.Identity, minItemLevel, Variance, lootCrateType, magicFind); } lootCrate.ExplorationID = activeZoneMongoID; return(API.LootCrates.Add(lootCrate) .Then(res => { //dataMan.allLootCratesList.Add(lootCrate); if (callback != null) { callback(lootCrate); } }) .Catch(err => { traceError("Could not generate a new LootCrate: " + GameAPIManager.GetErrorMessage(err)); })); }
//void STATE_Items() { // if (changedState) { // traceCheats("ITEMS: Add [H]elm, [C]hest, [G]loves, [B]oots, -R-elic, [W]eapon" + _EST_TO_EXIT); // } // ItemData randomItemData = null; // IPromise<NodeResponse> promise = null; // if (Input.GetKeyDown(KeyCode.H)) { // AUDIO.Play(SFX_UI.Click); // randomItemData = DATAMAN.GetRandomItemType(EquipmentType.Helm); // } // if (Input.GetKeyDown(KeyCode.C)) { // AUDIO.Play(SFX_UI.Click); // randomItemData = DATAMAN.GetRandomItemType(EquipmentType.Chest); // } // if (Input.GetKeyDown(KeyCode.G)) { // AUDIO.Play(SFX_UI.Click); // randomItemData = DATAMAN.GetRandomItemType(EquipmentType.Gloves); // } // if (Input.GetKeyDown(KeyCode.B)) { // AUDIO.Play(SFX_UI.Click); // randomItemData = DATAMAN.GetRandomItemType(EquipmentType.Boots); // } // if (Input.GetKeyDown(KeyCode.R)) { // AUDIO.Play(SFX_UI.Invalid); // traceError("Relics not implemented yet!"); // return; // //promise = API.ItemRandomize(EquipmentType.Relic, 1); // //randomItemData = DATAMAN.GetRandomItemType(EquipmentType.Artifact); // } // if (Input.GetKeyDown(KeyCode.W)) { // AUDIO.Play(SFX_UI.Click); // randomItemData = DATAMAN.GetRandomItemType(EquipmentType.Weapon); // } // Item item = null; // if (randomItemData != null) { // item = new Item(randomItemData, GAMEMAN.GetSeed(), GAMEMAN.GetSeed(), GAMEMAN.GetSeed(), GAMEMAN.GetSeed(), Rand.Range(0f, 100f), 20f, 0f); // promise = API.Items.Add(item); // } // if (promise != null) { // promise.Then(res => { // traceCheats("Item added!"); // trace(res.pretty); // DATAMAN.allItemsList.Add(item); // }).Catch(err => { // traceError("Oh no! Item couldn't be added!"); // }); // } //} //void STATE_Heroes() { // if (changedState) { // traceCheats("HEROES: Add [H]ero" + _EST_TO_EXIT); // } // Hero hero = null; // IPromise<NodeResponse> promise = null; // if (Input.GetKeyDown(KeyCode.H)) { // AUDIO.Play(SFX_UI.ShardsChing); // hero = new Hero(DATAMAN.heroDataList.GetRandom(), GAMEMAN.GetSeed()); // promise = API.Heroes.Add(hero); // } // if (promise != null) { // promise.Then(res => { // traceCheats("Hero added!"); // trace(res.pretty); // DATAMAN.allHeroesList.Add(hero); // }).Catch(err => { // traceError("Oh no! Hero couldn't be added!"); // }); // } //} void STATE_LootCrates() { if (changedState) { traceCheats("LOOT-CRATES: Add [L]ootCrate" + _EST_TO_EXIT); } LootCrate lootCrate = null; IPromise <NodeResponse> promise = null; if (Input.GetKeyDown(KeyCode.L)) { AUDIO.Play(SFX_UI.ShardsChing); var lootTable = DATAMAN.lootTableDataList.GetByIdentity("lt_zone_training_1"); lootCrate = new LootCrate(lootTable.Identity, 20f, 20f, DataManager.Instance.crateTypeDataList.GetRandom()); promise = API.LootCrates.Add(lootCrate); } if (promise != null) { promise.Then(res => { traceCheats("LootCrate added!"); trace(res.pretty); DATAMAN.allLootCratesList.Add(lootCrate); }).Catch(err => { traceError("Oh no! LootCrate couldn't be added!"); }); } }
private void OnLevelLoaded(GameLevelLoaded data) { LevelManager levelManager = WPFMonoBehaviour.levelManager; if (levelManager != null && levelManager.CurrentGameMode is BaseGameMode && !levelManager.m_sandbox && !levelManager.m_raceLevel) { int index = 0; if (this.IsDailyChallenge(data.episodeIndex, data.levelIndex, out index) && !this.dailyChallenges[index].collected) { DailyLevel daily = Singleton <GameManager> .instance.gameData.m_dailyChallengeData.GetDaily(this.dailyChallenges[index].DailyKey); Vector3 position; if (daily != null && daily.GetPosition(this.dailyChallenges[index].positionIndex, out position)) { GameObject gameObject = WPFMonoBehaviour.gameData.m_lootCrates[(int)this.TodaysLootCrate(index)]; GameObject gameObject2 = UnityEngine.Object.Instantiate <GameObject>(gameObject, position, Quaternion.identity); LootCrate component = gameObject2.GetComponent <LootCrate>(); LootCrate lootCrate = component; lootCrate.OnCollect = (Action)Delegate.Combine(lootCrate.OnCollect, new Action(delegate() { this.OnDailyRewardCollected(index); })); LootCrate lootCrate2 = component; lootCrate2.RewardExperience = (Func <int>)Delegate.Combine(lootCrate2.RewardExperience, new Func <int>(this.RewardExperience)); component.SetAnalyticData(index, this.dailyChallenges[index].adRevealed); this.dailyChallenges[index].revealed = true; UnityEngine.Debug.LogWarning("Instantiated " + gameObject.name + " at position " + position.ToString()); } } } }
public void OpenCrate() { if (Singleton <TimeManager> .Instance.HasTimer(this.identifier)) { Singleton <TimeManager> .Instance.RemoveTimer(this.identifier); } GameProgress.DeleteKey(this.identifier, GameProgress.Location.Local); LootCrate.SpawnLootCrateOpeningDialog(this.crateType, 1, WPFMonoBehaviour.s_hudCamera, null, new LootCrate.AnalyticData("Slot", this.unlockPrice.ToString(), LootCrate.AdWatched.NotApplicaple)); this.ChangeState(LootCrateSlot.State.Empty); LootCrateSlots.InformCrateOpened(this.identifier, this.crateType); }
protected override void Start() { base.Start(); base.OnDataLoaded(); this.originalCratePosition = base.transform.position; if (this.dialog == null) { this.dialog = LootCrate.SpawnLootCrateOpeningDialog(); } base.rigidbody.useGravity = false; base.rigidbody.isKinematic = true; }
// has the lootcrate for the callback, not needed in this instance void TriggerInterfaceAfterLootCratesAdded(LootCrate crate) { GameAPIManager.Instance.LootCrates.GetList().Then(res => { BattleResultsInterface battleResultsPanel = (BattleResultsInterface)MenuManager.Instance.Load("Interface_BattleResults"); //Debug.Log("[callback] Looking for Crate Count with an exploration ID of " + playerMan.SelectedBattle.MongoID); battleResultsPanel.Initialize( data.Zone.BossFight.Gold, data.Zone.BossFight.Experience, dataMan.GetLootCratesByExploration(playerMan.SelectedBattle.MongoID).Count, playerMan.SelectedBattle ); }); }
public static void SpawnResourcesOnly(Transform target) { GameObject LootCrateObj = Instantiate(GameManager.Instance.LootCratePrefab); // LootCrateObj.transform.position = new Vector3(target.transform.position.x, LootCrateObj.transform.position.y, target.transform.position.z); LootCrateObj.transform.position = target.transform.position; LootCrate crate = LootCrateObj.GetComponent <LootCrate>(); crate.AmtGold = Random.Range(0, 9); crate.AmtWood = Random.Range(0, 9); crate.AmtStone = Random.Range(0, 9); crate.AmtFood = Random.Range(0, 9); crate.Init(); }
public LootCollection GetRandomItems(LootCrate lootCrate) { LootCollection lootObj = new LootCollection(); lootObj.lootTableData = this; lootObj.randomDrops = UnityEngine.Random.Range(minDrops, maxDrops + 1); List <Item> items = lootObj.randomItems = new List <Item>(); for (int r = lootObj.randomDrops; --r >= 0;) { Item item = RandomizeItem(lootCrate.MagicFind, lootCrate.ItemLevel, lootCrate.Variance); items.Add(item); } return(lootObj); }
public void GiveReward() { int @int = GameProgress.GetInt(this.crateID + this.crateType.ToString(), 0, GameProgress.Location.Local, null); if (@int <= 0) { GameProgress.SetInt(this.crateID + this.crateType.ToString(), @int + 1, GameProgress.Location.Local); WorkshopMenu.AnyLootCrateCollected = true; if (FreeLootCrate.OnFreeLootCrateCollected != null) { FreeLootCrate.OnFreeLootCrateCollected(); } Camera hudCamera = Singleton <GuiManager> .Instance.FindCamera(); LootCrate.SpawnLootCrateOpeningDialog(this.crateType, 1, hudCamera, null, new LootCrate.AnalyticData(this.crateID, "free", LootCrate.AdWatched.NotApplicaple)); this.TryReportAchievements(); } base.gameObject.SetActive(false); }
private void Awake() { LootCrateSlots.instance = this; List <LootCrateSlot> list = new List <LootCrateSlot>(); for (int i = 0; i < this.slotCount; i++) { GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(this.lootCrateSlotPrefab); if (gameObject != null) { gameObject.name = string.Format("Slot{0}", i + 1); gameObject.transform.parent = base.transform; LootCrateSlot component = gameObject.GetComponent <LootCrateSlot>(); component.Initialize(false, i, LootCrateType.None); list.Add(component); } } this.slots = list.ToArray(); LootCrateSlots.SlotsAvailable = this.slots.Length; GridLayout component2 = base.GetComponent <GridLayout>(); component2.UpdateLayout(); if (this.slotsFullBubble != null) { this.slotsFullBubble.transform.position = this.slots[this.slotCount - 1].transform.position; } this.ShowFullBubble(LootCrateSlots.AreSlotsFull()); if (LootCrateSlots.overflowCrateType != LootCrateType.None) { LootCrateType crateType = LootCrateSlots.overflowCrateType; this.unlockCrateSlotDialog = this.ShowNoFreeSlotsDialog(crateType, delegate { if (this.unlockCrateSlotDialog != null && GameProgress.UseSnoutCoins(this.unlockCrateSlotDialog.SnoutCoinPrice)) { Singleton <AudioManager> .Instance.Spawn2dOneShotEffect(WPFMonoBehaviour.gameData.commonAudioCollection.snoutCoinUse); LootCrate.SpawnLootCrateOpeningDialog(crateType, 1, WPFMonoBehaviour.hudCamera, null, new LootCrate.AnalyticData("CakeRaceOverflowUnlock", this.unlockCrateSlotDialog.SnoutCoinPrice.ToString(), LootCrate.AdWatched.NotApplicaple)); this.SendLootCrateUnlockedFlurryEvent(crateType, this.unlockCrateSlotDialog.SnoutCoinPrice, "overflow"); } }); LootCrateSlots.overflowCrateType = LootCrateType.None; } }
public static void SpawnLootcrateOn(Transform target) { GameObject LootCrateObj = Instantiate(GameManager.Instance.LootCratePrefab); LootCrateObj.transform.position = new Vector3(target.transform.position.x, LootCrateObj.transform.position.y, target.transform.position.z); LootCrate crate = LootCrateObj.GetComponent <LootCrate>(); Inventory myInv = target.GetComponent <Inventory>(); crate.AmtGold = myInv.GetAmtResource(Inventory.ResourceType.Gold); crate.AmtWood = myInv.GetAmtResource(Inventory.ResourceType.Wood); crate.AmtStone = myInv.GetAmtResource(Inventory.ResourceType.Stone); crate.AmtFood = myInv.GetAmtResource(Inventory.ResourceType.Food); myInv.ItemHolder.transform.SetParent(crate.ItemHolder.transform); crate.ItemHolder.transform.GetChild(0).localRotation = new Quaternion(0, 0, 0, 0); crate.ItemHolder.transform.GetChild(0).localScale = new Vector3(1, 1, 1); crate.ItemHolder.transform.GetChild(0).localPosition = new Vector3(0, 0, 0); crate.ItemHolder.GetComponent <ScrollRect>().content = crate.ItemHolder.transform.GetChild(0).GetComponent <Image>().rectTransform; crate.Init(); }
private void HandleDeath(GameObject source) { LootCrate.SpawnResourcesOnly(transform); // give influence to village Village toInfluenceVill = Village.GetClosestVillageTo(transform.position); GuildMemberController gmContr = source.GetComponent <GuildMemberController>(); PlayerController pContr; if (gmContr) { gmContr.NPCsGuild.AddInfluenceFor(toInfluenceVill.gameObject, _influenceGivenOnDeath); } else if (pContr = source.GetComponent <PlayerController>()) { pContr.MyGuild.AddInfluenceFor(toInfluenceVill.gameObject, _influenceGivenOnDeath); } Destroy(gameObject); }
private void OnAdFinished() { LootCrate.SpawnLootCrateOpeningDialog(this.reward, 1, WPFMonoBehaviour.hudCamera, null, new LootCrate.AnalyticData("Advertisement", "0", LootCrate.AdWatched.Yes)); this.adReward.Load(); }
public void Initialize(LootCrate crate, System.Action callback = null, System.Action callbackOnComplete = null, bool fromStory = false) { this.crate = crate; List <Item> items = crate.GenerateItems(); this.callbackOnComplete = callbackOnComplete; noMenuManagerRef = fromStory; Debug.Log("Adding " + items.Count + " items."); /* * foreach(Item i in items) { * Debug.Log(" --- --- [Item] " + i.Name); * }*/ // NOTE-TO-SELF: DO call this API method! (Instead of one-by-one, batch-calls adds all generated items) API.Items.AddMany(items) .Catch(err => traceError("Something went wrong while adding newly generated items to server-side: " + err.Message)); //.Then(res => trace("Added " + items.Count + " items server-side...")) DataManager.Instance.allItemsList.AddRange(items); if (!fromStory) { RemoveCrateFromPlayerData(callback); } // Crate Sequence TimelineTween.Create( (next) => { AudioManager.Instance.Play(SFX_UI.Earthquake); //btnGoBack.transform.DOScale(Vector2.zero, 0.5f * speedScale); btnGoBack.GetComponent <RectTransform>().DOAnchorPosY(0f, 0.5f * speedScale); crateBtn.transform.SetParent(this.transform); // Background Shadow here backgroundShadow.DOColor(new Color(0f, 0f, 0f, 0.7f), timeScrollerSlides * speedScale); crateBtn.transform.TweenMoveByY(50, timeScrollerSlides * speedScale) .SetEase(Ease.InOutSine) .OnComplete(() => next()); }, (next) => { // If on crate screen reset the crate list positions crateBtn.transform .DOShakePosition(timeCrateShake * speedScale, 10, 30, 90, false, false) .OnComplete(() => next()); }, (next) => { AudioManager.Instance.Stop(SFX_UI.Earthquake); AudioManager.Instance.Play(SFX_UI.Explosion); GameObject itemPrefab = GetPrefab("SubItems/LootCrateItem"); var canvasSize = GetScreenSize(); float itemSize = canvasSize.x / 3f; for (int i = 0; i < items.Count; i++) { Item itemData = items[i]; GameObject itemGO = GameObject.Instantiate(itemPrefab); LootCrateItem item = itemGO.GetComponent <LootCrateItem>(); Button itemBtn = itemGO.GetComponent <Button>(); TextMeshProUGUI itemLabel = itemGO.GetComponentInChildren <TextMeshProUGUI>(); RectTransform itemTrans = (RectTransform)itemGO.transform; itemTrans.SetParent(this.transform); itemTrans.localPosition = Vector2.zero; itemTrans.SetWidthAndHeight(itemSize); item.itemData = itemData; item.UpdateIdentifiedIcon(); _crateItems.Add(item); itemBtn.onClick.AddListener(() => BtnOnItemClick(item, fromStory)); } LayoutUpdate(); TimelineTween.Scatter(0.08f, _crateItems, (item, id) => { return(TimelineTween.Pulsate(item.transform, 1.3f, timeItemsExplode * speedScale)); }); Color c = crateBtn.GetComponent <Image>().color; c.a = 0; crateBtn.GetComponent <Image>().DOColor(c, 0.3f).OnComplete(() => { Destroy(crateBtn.gameObject); }); /*CanvasGroup cg = crateBtn.GetComponent<CanvasGroup>(); * cg.DOFade(0, 0.3f) * .OnComplete(() => { * Destroy(crateBtn.gameObject); * });*/ crateBtn.transform .DOScale(2.0f, timeCrateExplode * speedScale) .SetEase(Ease.OutQuint); this.Wait(timeItemsExplode * 2.0f * speedScale, next); }, (next) => { TimelineTween.Scatter(0.1f, _crateItems, (item, id) => { return(item.filler.DOFade(0, 1 * speedScale)); }); this.Wait(timeItemsFormCircle * 1.0f * speedScale, next); } ); }
private void Awake() { _lootCrate = GetComponent <LootCrate>(); }
private void OnRankFetched(GetLeaderboardAroundPlayerResult result) { if (!CakeRaceMenu.IsCakeRaceMenuOpen) { return; } if (this.lootCrateSlots.IsPopUpOpen()) { base.StartCoroutine(this.WaitPopUpAndTryRankReward(result)); return; } if (result.Leaderboard == null || (result.Leaderboard.Count > 0 && (result.Leaderboard[0].StatValue <= 0 || result.Leaderboard[0].Position >= 500))) { this.TryToShowCupEndAnimation(false); this.TryToUnlockCakeRaceLockScreen(); return; } GameObject go = UnityEngine.Object.Instantiate <GameObject>(this.seasonEndDialogPopup, Vector3.zero, Quaternion.identity); go.transform.position += Vector3.back * 20f; this.seasonEndDialog = go.GetComponent <LeaderboardSeasonEndDialog>(); this.seasonEndDialog.SetLoading(true); this.seasonEndDialog.onClose += delegate() { UnityEngine.Object.Destroy(go); }; int currentCupIndex = (int)this.rewardPendingCup; int rank = result.Leaderboard[0].Position + 1; int @int = GameProgress.GetInt("cake_race_highest_rank", 0, GameProgress.Location.Local, null); if (@int <= 0 || rank < @int) { GameProgress.SetInt("cake_race_highest_rank", rank, GameProgress.Location.Local); } string text = string.Empty; if (rank != 1) { if (rank != 2) { if (rank == 3) { text = "cake_race_bronze_trophies_won"; } } else { text = "cake_race_silver_trophies_won"; } } else { text = "cake_race_gold_trophies_won"; } if (!string.IsNullOrEmpty(text)) { int int2 = GameProgress.GetInt(text, 0, GameProgress.Location.Local, null); GameProgress.SetInt(text, int2 + 1, GameProgress.Location.Local); } int seasonSnoutCoinReward = CakeRaceMenu.GetSeasonSnoutCoinReward(currentCupIndex, rank); if (seasonSnoutCoinReward > 0) { GameProgress.AddSnoutCoins(seasonSnoutCoinReward); int int3 = GameProgress.GetInt("cake_race_coins_won", 0, GameProgress.Location.Local, null); GameProgress.SetInt("cake_race_coins_won", int3 + seasonSnoutCoinReward, GameProgress.Location.Local); } LootCrateType crateType = CakeRaceMenu.GetSeasonCrateReward(currentCupIndex, rank); if (crateType != LootCrateType.None) { this.seasonEndDialog.onClose += delegate() { LootCrate.SpawnLootCrateOpeningDialog(crateType, 1, WPFMonoBehaviour.s_hudCamera, new Dialog.OnClose(this.OnDialogClosed), new LootCrate.AnalyticData(string.Format("{0}_reward", (PlayFabLeaderboard.Leaderboard)currentCupIndex), "0", LootCrate.AdWatched.NotApplicaple)); }; } else { this.seasonEndDialog.onClose += this.OnDialogClosed; } this.seasonEndDialog.SetCrateRankAndReward(crateType, rank, seasonSnoutCoinReward); this.isRewardingPlayer = false; }
public void AttachToCrate(LootCrate crate) { this.m_crate = crate; this.SetCrateImage(); }
IEnumerator ManageStorySection(StorySection story) { //Debug.Log("[Story] Executing Action: " + story.Action + " [" + story.Order + "]"); switch (story.Emotion) { case StoryCharacterEmotion.Jump: switch (story.Focus) { case StoryCharacterPosition.Left: LeftCharacterRect.DOPunchPosition(new Vector3(0f, 10f, 0f), 0.2f, 0); break; case StoryCharacterPosition.Right: RightCharacterRect.DOPunchPosition(new Vector3(0f, 10f, 0f), 0.2f, 0); break; } break; case StoryCharacterEmotion.Sink: switch (story.Focus) { case StoryCharacterPosition.Left: LeftCharacterRect.DOPunchPosition(new Vector3(0f, -15f, 0f), 1f, 0); break; case StoryCharacterPosition.Right: RightCharacterRect.DOPunchPosition(new Vector3(0f, -15f, 0f), 1f, 0); break; } break; default: break; } switch (story.Action) { case StoryAction.Talk: charactername.text = story.Name; // Show the focused target switch (story.Focus) { case StoryCharacterPosition.Left: LeftCharacter.DOColor(new Color(1f, 1f, 1f, 1f), 0.3f); RightCharacter.DOColor(new Color(0.8f, 0.8f, 0.8f, 1f), 0.3f); break; case StoryCharacterPosition.Right: RightCharacter.DOColor(new Color(1f, 1f, 1f, 1f), 0.3f); LeftCharacter.DOColor(new Color(0.8f, 0.8f, 0.8f, 1f), 0.3f); break; } yield return(StartCoroutine(RevealText(story.Text))); break; case StoryAction.Enter: switch (story.Focus) { case StoryCharacterPosition.Left: LeftCharacter.sprite = story.CharacterArt; yield return(StartCoroutine(MoveCharacter(LeftCharacterRect, characterPostion, true))); break; case StoryCharacterPosition.Right: RightCharacter.sprite = story.CharacterArt; yield return(StartCoroutine(MoveCharacter(RightCharacterRect, -characterPostion, true))); break; } break; case StoryAction.Leave: switch (story.Focus) { case StoryCharacterPosition.Left: yield return(StartCoroutine(MoveCharacter(LeftCharacterRect, -characterOffset))); break; case StoryCharacterPosition.Right: yield return(StartCoroutine(MoveCharacter(RightCharacterRect, characterOffset))); break; } break; case StoryAction.Question: Debug.Log(" -- [Question] Story Text: " + story.Text); string[] questionAndAnswers = story.Text.Split('\n'); charactername.text = questionAndAnswers[0]; textarea.text = ""; ChoiceContainer.SetActive(true); foreach (GameObject c in Choices) { c.SetActive(false); } for (int i = 1; i < questionAndAnswers.Length; i++) { Choices[i - 1].SetActive(true); string responce = questionAndAnswers[i].Split(':')[0]; string answer = questionAndAnswers[i].Split(':')[1]; Debug.Log(" -- [Question] Answer " + i + ": " + responce + " [" + answer + "]"); Choices[i - 1].GetComponentInChildren <TextMeshProUGUI>().text = responce; Choices[i - 1].GetComponent <Button>().onClick.AddListener(delegate { BtnChoice(answer); }); Choices[i - 1].GetComponent <RectTransform>().DOAnchorPosY(-((i - 1) * 125f), 0.25f); yield return(new WaitForSeconds(0.1f)); } waitingOnQuestionAnswer = true; yield return(StartCoroutine(HandleQuestionInput())); break; case StoryAction.Skip: yield return(StartCoroutine(RemoveSectionsBefore(int.Parse(story.Text)))); break; case StoryAction.Background: yield return(StartCoroutine(ChangeBackground(story.Text))); break; case StoryAction.TapChange: pauseInteraction = true; string[] changes = story.Text.Split('-'); //NewBoss-bossfight_1 //ExtendTime-1.5 switch (changes[0]) { case "ExtendTime": if (inTap) { float multiplier = float.Parse(changes[1]); float totalZoneHP = (float)PlayerManager.Instance.SelectedBattle.Zone.ZoneHP; PlayerManager.Instance.SelectedBattle.AccumulatedDamage -= totalZoneHP * multiplier; } break; case "NewBoss": if (inTap) { // Set the new boss here // This needs to be hooked up to the server PlayerManager.Instance.SelectedBattle.Zone.BossFight = DataManager.Instance.bossFightDataList.GetByIdentity(changes[1]); } break; default: Debug.Log("No reward issue"); break; } pauseInteraction = false; break; case StoryAction.Reward: pauseInteraction = true; Debug.Log("Reward the player here"); //FreeLoot-lt_zone_training_boss_1-40-20 //ZoneLoot-a0zone_1 string[] rewards = story.Text.Split('-'); LootCrate crate = null; switch (rewards[0]) { case "FreeLoot": crate = new LootCrate(rewards[1], float.Parse(rewards[2]), float.Parse(rewards[3]), DataManager.Instance.crateTypeDataList.GetByIdentity(rewards[4])); break; case "ZoneLoot": ZoneData zone = DataManager.Instance.zoneDataList.GetByIdentity(rewards[1]); crate = new LootCrate(zone.LootTable.Identity, zone.MinItemLevel, zone.Variance, MathHelper.WeightedRandom(zone.LootTable.crateType).Key); break; default: Debug.Log("No reward issue"); break; } openingChest = true; Debug.Log(" [crate] " + crate.lootTableIdentity + " | " + crate.LootTableData); OpenChest(crate); while (openingChest) { yield return(new WaitForEndOfFrame()); } pauseInteraction = false; break; case StoryAction.ClearText: charactername.text = ""; textarea.text = ""; break; } }