private static void SubscribeOnClickCellView(RecipeCellView cellView) { var combination = Widget.Find <Combination>(); if (!combination.CanHandleInputEvent) { return; } cellView.scaleTweener.PlayTween(); if (cellView.tempLocked) { AudioController.instance.PlaySfx(AudioController.SfxCode.UnlockRecipe); var avatarState = Game.Game.instance.States.CurrentAvatarState; combination.RecipeVFXSkipMap[cellView.EquipmentRowData.Id] = new int[3] { 0, 0, 0 }; combination.SaveRecipeVFXSkipMap(); var centerPos = cellView.GetComponent <RectTransform>() .GetWorldPositionOfCenter(); VFXController.instance.CreateAndChaseCam <RecipeUnlockVFX>(centerPos); cellView.Set(avatarState, null, false); return; } combination.selectedRecipe = cellView; combination.State.SetValueAndForceNotify(Combination.StateType.CombinationConfirm); }
public void Show( EquipmentItemRecipeSheet.Row row, bool ignoreShowAnimation = false) { if (row is null) { var sb = new StringBuilder($"[{nameof(CelebratesPopup)}]"); sb.Append($"Argument {nameof(row)} is null."); Debug.LogError(sb.ToString()); return; } titleText.text = L10nManager.Localize("UI_NEW_EQUIPMENT_RECIPE"); continueText.alpha = 0f; recipeCellView.Set(row); menuContainer.SetActive(false); questRewards.SetActive(false); recipeCellView.Show(); _rewards = null; AppearNPC(ignoreShowAnimation, NPCAnimation.Type.Emotion_01); base.Show(ignoreShowAnimation); PlayEffects(); }
public void SetData(EquipmentItemRecipeSheet.Row recipeRow, int?subRecipeId = null) { recipeCellView.Set(recipeRow); materialPanel.SetData(recipeRow, subRecipeId); Enable(); var requiredBlockIndex = recipeRow.RequiredBlockIndex; if (subRecipeId.HasValue) { var subSheet = Game.Game.instance.TableSheets.EquipmentItemSubRecipeSheet; if (subSheet.TryGetValue((int)subRecipeId, out var subRecipe)) { requiredBlockIndex += subRecipe.RequiredBlockIndex; } } RequiredBlockIndexSubject.OnNext(requiredBlockIndex); stateType = Combination.StateType.CombineEquipment; }
public void Pop(CombinationSlotState state, int slotIndex) { _slotIndex = slotIndex; CombinationConsumable.ResultModel result; CombinationConsumable.ResultModel chainResult; try { result = (CombinationConsumable.ResultModel)state.Result; var chainState = new CombinationSlotState((Dictionary)Game.Game.instance.Agent.GetState(state.address)); chainResult = (CombinationConsumable.ResultModel)chainState.Result; } catch (InvalidCastException) { return; } var subRecipeEnabled = result.subRecipeId.HasValue; materialPanel.gameObject.SetActive(false); optionView.gameObject.SetActive(false); switch (result.itemType) { case ItemType.Equipment: { var recipeRow = Game.Game.instance.TableSheets.EquipmentItemRecipeSheet.Values.First(r => r.Id == result.recipeId); recipeCellView.Set(recipeRow); if (subRecipeEnabled) { optionView.Show( result.itemUsable.GetLocalizedName(), (int)result.subRecipeId, new EquipmentItemSubRecipeSheet.MaterialInfo( recipeRow.MaterialId, recipeRow.MaterialCount), false ); } else { materialPanel.SetData(recipeRow, null, false); materialPanel.gameObject.SetActive(true); } break; } case ItemType.Consumable: { var recipeRow = Game.Game.instance.TableSheets.ConsumableItemRecipeSheet.Values.First(r => r.Id == result.recipeId); recipeCellView.Set(recipeRow); materialPanel.SetData(recipeRow, false, true); materialPanel.gameObject.SetActive(true); break; } } submitButton.HideAP(); submitButton.HideNCG(); var diff = result.itemUsable.RequiredBlockIndex - Game.Game.instance.Agent.BlockIndex; if (diff < 0) { submitButton.SetSubmitText( L10nManager.Localize("UI_COMBINATION_WAITING"), L10nManager.Localize("UI_RAPID_COMBINATION") ); submitButton.SetSubmittable(result.id == chainResult?.id); submitButton.HideHourglass(); } else { _cost = Action.RapidCombination.CalculateHourglassCount( States.Instance.GameConfigState, diff); _row = Game.Game.instance.TableSheets.MaterialItemSheet.Values .First(r => r.ItemSubType == ItemSubType.Hourglass); var isEnough = States.Instance.CurrentAvatarState.inventory.HasItem(_row.ItemId, _cost); var count = States.Instance.CurrentAvatarState.inventory .TryGetMaterial(_row.ItemId, out var glass) ? glass.count : 0; if (result.id == chainResult?.id) { submitButton.SetSubmitText( L10nManager.Localize("UI_RAPID_COMBINATION")); submitButton.SetSubmittable(isEnough); } else { submitButton.SetSubmitText( L10nManager.Localize("UI_COMBINATION_WAITING")); submitButton.SetSubmittable(false); } submitButton.ShowHourglass(_cost, count); } base.Show(); }