Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/MyPageSpecialWinRewardDialog.cs
gamer147 824309ec44 feat(battle-engine): close the AI-simulation subsystem (verbatim)
Copied the 89 uncopied AI*SimulationUtility/extension files defining the
AIVirtualCard/AIVirtualField extension methods; the compile loop then auto-closed
the revealed type deps (~3049 files total, drift-clean). 10.0k -> 62 errors.
2026-06-05 20:30:59 -04:00

203 lines
9.0 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Cute;
using UnityEngine;
namespace Wizard;
public class MyPageSpecialWinRewardDialog : MonoBehaviour
{
private const string GRADE_GAUGE_NAME = "gauge_bg_scale_15";
private float[] _memoryValue = new float[16]
{
0f, 0.0585f, 0.126f, 0.194f, 0.263f, 0.331f, 0.399f, 0.467f, 0.535f, 0.602f,
0.67f, 0.738f, 0.806f, 0.875f, 0.943f, 1f
};
private const int TREASURE_BOX_SPRITE_GRADE = 5;
[SerializeField]
private UISprite _boxSprite;
[SerializeField]
private UIGauge _gradeGauge;
[SerializeField]
private UISprite _gaugeBackground;
[SerializeField]
private UILabel _treasureBoxLabel;
[SerializeField]
private UILabel _titleLabel;
[SerializeField]
private UILabel _completeLabel;
[SerializeField]
private GameObject _clickObject;
[SerializeField]
private BoxCollider _clickObjectCollider;
[SerializeField]
private UILabel _remineNumLabel;
private List<string> _loadFileList = new List<string>();
private UIAtlas _arenaAtlas;
private BoxCollider _notTouchMypageCollider;
private GameObject _boxOpenEffectObj;
private GameObject _treasureEffectObj;
public static GameObject Create(GameObject prefab, BoxCollider notTouchMypageCollider)
{
GameObject obj = UnityEngine.Object.Instantiate(prefab);
obj.GetComponentInChildren<MyPageSpecialWinRewardDialog>().Initialize(notTouchMypageCollider);
return obj;
}
private void Initialize(BoxCollider notTouchMypageCollider)
{
SystemText systemText = Data.SystemText;
_notTouchMypageCollider = notTouchMypageCollider;
SpecialTreasureInfo info = Data.MyPageNotifications.data.CampaignBattleWin.SpecialTreasureInfo;
_titleLabel.text = systemText.Get("MyPage_0109", info.SpecialTreasureBoxNecessaryNumbers.ToString());
_remineNumLabel.text = systemText.Get("MyPage_0113", (info.SpecialTreasureBoxNecessaryNumbers - info.ReceivedBoxNumbers).ToString());
_gradeGauge.Value = _memoryValue[info.ReceivedBoxNumbers];
_treasureBoxLabel.text = (info.IsGotSpecialTreasureBox ? systemText.Get("TreasureBoxCp_0009") : "");
UIManager.SetObjectToGrey(_boxSprite.gameObject, info.IsGotSpecialTreasureBox);
_completeLabel.gameObject.SetActive(info.ReceivedBoxNumbers == info.SpecialTreasureBoxNecessaryNumbers);
_clickObject.SetActive(info.IsTreasureBoxReadyToOpen);
_clickObjectCollider.enabled = info.IsTreasureBoxReadyToOpen;
string atlasName = UIManager.GetInstance().GetSceneAssetPath(UIAtlasManager.AssetBundleNames.Arena, null);
_loadFileList.Add(atlasName);
StartCoroutine(Toolbox.ResourcesManager.LoadAssetAsync(atlasName, delegate
{
atlasName = UIManager.GetInstance().GetSceneAssetPath(UIAtlasManager.AssetBundleNames.Arena, null, isload: true);
_arenaAtlas = Toolbox.ResourcesManager.LoadObject<GameObject>(atlasName).GetComponent<UIAtlas>();
_boxSprite.atlas = _arenaAtlas;
_gaugeBackground.atlas = UIManager.GetInstance().GetAtlasList().FirstOrDefault((UIAtlas s) => s.name == "MypageComon");
_boxSprite.spriteName = (info.IsGotSpecialTreasureBox ? $"box_2pick_0{5}_open" : $"box_2pick_0{5}_close");
_gaugeBackground.spriteName = "gauge_bg_scale_15";
}));
UIEventListener.Get(_boxSprite.gameObject).onClick = OnClickBoxReceiveRewards;
}
private void OnClickBoxReceiveRewards(GameObject g)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_LOTTERY_BOX_TOUCH);
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_COMMON_BUTTON);
MypageReceiveSpecialTreasureTask receiveSpecialTreasureTask = new MypageReceiveSpecialTreasureTask();
receiveSpecialTreasureTask.SetParameter();
UIManager.GetInstance().StartCoroutine(Toolbox.NetworkManager.Connect(receiveSpecialTreasureTask, delegate
{
UIManager.GetInstance().StartCoroutine(RunOpenBoxEffect(receiveSpecialTreasureTask.Result, delegate
{
Data.MyPageNotifications.data.CampaignBattleWin.SpecialTreasureInfo.SetGotSpecialTreasureBox(isGot: true);
CreateRewardDialog(receiveSpecialTreasureTask, RedrawDialog);
RunHideBoxEffect();
}));
}));
}
private IEnumerator RunOpenBoxEffect(MypageReceiveSpecialTreasureTask.MypageTreasureBoxCpOpenTaskData result, Action endAction)
{
UIManager.GetInstance().OpenNotTouch();
_notTouchMypageCollider.enabled = true;
yield return new WaitForSeconds(1f);
_boxOpenEffectObj = NGUITools.AddChild(base.gameObject, Resources.Load("UI/layoutParts/RankWinnerRewardResultPanel") as GameObject);
NguiObjs component = _boxOpenEffectObj.GetComponent<NguiObjs>();
UISprite bg = component.sprites[0];
UISprite window = component.sprites[1];
UISprite box = component.sprites[2];
box.atlas = _arenaAtlas;
UILabel label = component.labels[0];
label.text = Data.SystemText.Get("MyPage_0111");
UIPanel panel = _boxOpenEffectObj.GetComponent<UIPanel>();
panel.alpha = 0f;
box.spriteName = $"box_2pick_0{5}_close";
string loadEffectName = $"cmn_arena_treasure_{6}";
List<string> list = new List<string>();
list.Add(Toolbox.ResourcesManager.GetAssetTypePath(loadEffectName, ResourcesManager.AssetLoadPathType.Effect2D));
yield return UIManager.GetInstance().StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroupAsync(list, null));
_treasureEffectObj = UnityEngine.Object.Instantiate(Toolbox.ResourcesManager.LoadObject(Toolbox.ResourcesManager.GetAssetTypePath(loadEffectName, ResourcesManager.AssetLoadPathType.Effect2D, isfetch: true)) as GameObject);
_treasureEffectObj.transform.parent = _boxOpenEffectObj.transform;
GameMgr.GetIns().GetEffectMgr().SetUIParticleShader(_treasureEffectObj, null);
_boxOpenEffectObj.SetLayer(LayerMask.NameToLayer("SystemUI"), isSetChildren: true);
bg.alpha = 0f;
box.alpha = 0f;
label.alpha = 0f;
panel.alpha = 1f;
TweenAlpha.Begin(bg.gameObject, 0.5f, 0.65f);
TweenAlpha.Begin(label.gameObject, 0.5f, 1f);
TweenAlpha.Begin(box.gameObject, 0.5f, 1f);
label.transform.localPosition = new Vector3(100f, 0f, 0f);
window.transform.localScale = new Vector3(1f, 0.01f, 1f);
box.transform.localPosition = new Vector3(180f, 0f, 0f);
iTween.MoveTo(label.gameObject, iTween.Hash("x", 20f, "time", 0.5f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
iTween.ScaleTo(window.gameObject, iTween.Hash("y", 1f, "time", 0.5f, "easetype", iTween.EaseType.easeInOutExpo));
iTween.MoveTo(box.gameObject, iTween.Hash("y", 20f, "time", 0.5f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
yield return new WaitForSeconds(0.8f);
TweenAlpha.Begin(label.gameObject, 0.5f, 0f);
iTween.MoveTo(box.gameObject, iTween.Hash("x", 0f, "time", 0.7f, "islocal", true, "easetype", iTween.EaseType.easeInOutExpo));
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_2PICK_BOX_OPEN);
yield return new WaitForSeconds(1f);
_treasureEffectObj.transform.localPosition = box.transform.localPosition;
_treasureEffectObj.transform.localScale = Vector3.one * 320f * 1.75f;
_treasureEffectObj.SetActive(value: true);
box.gameObject.SetActive(value: false);
yield return new WaitForSeconds(1.2f);
endAction.Call();
}
private void CreateRewardDialog(MypageReceiveSpecialTreasureTask info, Action onClose)
{
UIManager.GetInstance().createInSceneCenterLoading();
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
dialogBase.SetSize(DialogBase.Size.M);
dialogBase.SetLayer("MyPage");
dialogBase.SetPanelDepth(105, isSetBackViewDepthImmediately: true);
dialogBase.SetTitleLabel(Data.SystemText.Get("TreasureBoxCp_0026"));
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.OkBtn);
RewardBase component = NGUITools.AddChild(dialogBase.gameObject, Resources.Load<GameObject>("UI/layoutParts/StoryRewardPanel")).GetComponent<RewardBase>();
for (int i = 0; i < info.Result.RewardDataList.Count; i++)
{
component.AddReward(info.Result.RewardDataList[i]);
}
component.EndCreate();
dialogBase.OnClose = delegate
{
onClose.Call();
};
}
private void RunHideBoxEffect()
{
_treasureEffectObj.SetActive(value: false);
_boxOpenEffectObj.SetActive(value: false);
UnityEngine.Object.Destroy(_boxOpenEffectObj);
UnityEngine.Object.Destroy(_treasureEffectObj);
UIManager.GetInstance().offNotTouch();
_notTouchMypageCollider.enabled = false;
}
private void RedrawDialog()
{
SpecialTreasureInfo specialTreasureInfo = Data.MyPageNotifications.data.CampaignBattleWin.SpecialTreasureInfo;
_boxSprite.spriteName = (specialTreasureInfo.IsGotSpecialTreasureBox ? $"box_2pick_0{5}_open" : $"box_2pick_0{5}_close");
UIManager.SetObjectToGrey(_boxSprite.gameObject, specialTreasureInfo.IsGotSpecialTreasureBox);
_completeLabel.gameObject.SetActive(specialTreasureInfo.ReceivedBoxNumbers == specialTreasureInfo.SpecialTreasureBoxNecessaryNumbers);
_treasureBoxLabel.text = (specialTreasureInfo.IsGotSpecialTreasureBox ? Data.SystemText.Get("TreasureBoxCp_0009") : "");
_clickObject.SetActive(specialTreasureInfo.IsTreasureBoxReadyToOpen);
MyPageMenu.Instance.SetAfterSpecialWinRewardOpened();
MyPageMenu.Instance.SpecialWinRewardOpened();
}
}