Files
SVSimServer/SVSim.BattleEngine/Engine/ReceiveReward.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

354 lines
12 KiB
C#

using System;
using System.Collections.Generic;
using Cute;
using UnityEngine;
using Wizard;
public class ReceiveReward : MonoBehaviour
{
private GameObject currentItem;
private GameObject currentExpand;
private UIButton currentExpandButton;
private List<GameObject> _allItem = new List<GameObject>();
private const int RECEIVE_ITEM_CENTER_IF_LESS = 3;
private const float ITEM_MOVE_TIME = 0.2f;
private const float ITEM_MOVE_X = 800f;
private const int OBJ_BUTTON_TABLE = 1;
private const int LABEL_NOT_USABLE = 2;
public DialogBase ShowReadDialog(List<ReceivedReward> texts, GameObject itemPrefab, GameObject current, ResourceHandler resourceHandler, DialogBase dialog = null)
{
if (texts == null)
{
return null;
}
currentItem = null;
currentExpand = null;
currentExpandButton = null;
DialogBase dia;
if (dialog == null)
{
dia = createDialog();
}
else
{
dia = dialog;
}
UITable table = createTable(dia, texts.Count);
Action<SceneTransition.TransitionData> gotoScene = delegate(SceneTransition.TransitionData data)
{
dia.SetBackViewToNotCloseDialog();
dia.gameObject.SetActive(value: false);
SceneTransition.ChangeScene(data, delegate
{
if (current != null)
{
current.SetActive(value: false);
}
});
};
foreach (ReceivedReward t in texts)
{
GameObject gameObject = UnityEngine.Object.Instantiate(itemPrefab);
gameObject.transform.parent = table.transform;
gameObject.transform.localScale = Vector3.one;
gameObject.transform.localPosition = Vector3.zero;
NguiObjs component = gameObject.GetComponent<NguiObjs>();
_allItem.Add(gameObject);
UIButton expandButton = component.buttons[0];
UIButton actionButton = component.buttons[1];
UIButton actionButtonAlone = component.buttons[2];
GameObject expandPart = component.objs[0];
GameObject itemPart = component.objs[2];
SystemText sysText = Data.SystemText;
Action<string, SceneTransition.TransitionData, bool, Action> AddButtonAction = delegate(string textid, SceneTransition.TransitionData data, bool alone, Action action2)
{
UIManager.SetObjectToGrey(AddDialogItemButton(alone ? actionButtonAlone : actionButton, sysText.Get(textid), action2).gameObject, SceneTransition.IsMaintenance(data));
};
Action<string, SceneTransition.TransitionData, bool> action = delegate(string textid, SceneTransition.TransitionData data, bool alone)
{
AddButtonAction(textid, data, alone, delegate
{
gotoScene(data);
});
};
GiftTransition giftTransition = Data.Master.GiftTransitionList.Find((GiftTransition data) => (t.reward_type == 4) ? (data._rewardType == t.reward_type && data._rewardDetailId == t.rewardUserGoodsId) : (data._rewardType == t.reward_type));
bool flag = t.IsUsable;
if (giftTransition != null)
{
bool arg = giftTransition._buttons.Count == 1;
foreach (GiftTransition.TransitionButton button in giftTransition._buttons)
{
action(button._text, button._transitionData, arg);
}
}
else
{
flag = false;
}
bool flag2 = t.reward_type == 4;
component.textures[0].gameObject.SetActive(value: true);
if (flag2)
{
SetTicket(t.rewardUserGoodsId, t.reward_count, component.textures[0], component.labels[0], resourceHandler);
}
else
{
component.labels[0].text = getTitle((UserGoods.Type)t.reward_type, t.rewardUserGoodsId, t.reward_count);
SetTexture((UserGoods.Type)t.reward_type, t.rewardUserGoodsId, component.textures[0], resourceHandler);
}
initExpand(expandPart, expandButton, itemPart, component);
actionButton.gameObject.SetActive(value: false);
actionButtonAlone.gameObject.SetActive(value: false);
component.objs[1].SetActive(flag);
component.objs[1].GetComponent<UITable>().Reposition();
component.labels[2].gameObject.SetActive(!flag);
if (!flag)
{
if (flag2 && t.rewardUserGoodsId == 2)
{
component.labels[2].text = Data.SystemText.Get("Mail_0060");
}
else
{
component.labels[2].text = Data.SystemText.Get("Mission_0045");
}
}
}
table.onReposition = delegate
{
dia.SetScrollViewActive(b: true);
table.onReposition = null;
};
table.Reposition();
dia.SetScrollViewActive(b: true);
return dia;
}
public void SetAllButtonDisable()
{
foreach (GameObject item in _allItem)
{
UIButton[] buttons = item.GetComponent<NguiObjs>().buttons;
foreach (UIButton uIButton in buttons)
{
if (uIButton != null)
{
uIButton.isEnabled = false;
}
}
}
}
private static DialogBase createDialog()
{
bool num = Data.Load.data._userTutorial.TutorialStep != 100;
SystemText systemText = Data.SystemText;
DialogBase dialogBase = (num ? MyPageMenu.CreateDialogForTutorial() : UIManager.GetInstance().CreateDialogClose());
dialogBase.SetTitleLabel(systemText.Get("Mail_0021"));
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.OkBtn);
dialogBase.SetScrollViewActive(b: true);
if (num)
{
dialogBase.SetDialogNoClose();
MyPageMenu.Instance.SetGuideToOkOnlyDialog(dialogBase);
}
return dialogBase;
}
private static UITable createTable(DialogBase dia, int rewardNum)
{
GameObject gameObject = new GameObject("table");
dia.ScrollView.contentPivot = ((rewardNum >= 3) ? UIWidget.Pivot.Top : UIWidget.Pivot.Center);
dia.AttachToScrollView(gameObject.transform);
UITable uITable = gameObject.AddComponent<UITable>();
uITable.columns = 1;
uITable.padding = new Vector2(0f, 5f);
uITable.pivot = UIWidget.Pivot.Center;
uITable.cellAlignment = UIWidget.Pivot.Center;
return uITable;
}
private void DoAction(Action action)
{
action();
}
private void initExpand(GameObject expandPart, UIButton expandButton, GameObject itemPart, NguiObjs obs)
{
expandPart.SetActive(value: false);
expandButton.gameObject.SetActive(value: true);
expandButton.gameObject.AddComponent<UIDragScrollView>();
currentItem = null;
float itemOriginalX = itemPart.transform.localPosition.x;
expandButton.onClick.Add(new EventDelegate(delegate
{
if (currentItem != null)
{
currentItem.SetActive(value: true);
RemoveITween(currentItem);
iTween.MoveTo(currentItem, iTween.Hash("x", itemOriginalX, "time", 0.2f, "islocal", true, "easetype", iTween.EaseType.easeOutQuad));
currentExpandButton.gameObject.SetActive(value: true);
currentExpand.SetActive(value: false);
}
Action action = delegate
{
itemPart.SetActive(value: false);
};
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_GIFT_ALL);
RemoveITween(itemPart);
iTween.MoveTo(itemPart, iTween.Hash("x", itemOriginalX + 800f, "time", 0.2f, "islocal", true, "easetype", iTween.EaseType.easeInQuad, "oncomplete", "DoAction", "oncompletetarget", base.gameObject, "oncompleteparams", action));
expandButton.gameObject.SetActive(value: false);
expandPart.SetActive(value: true);
obs.tweenAlpha.delay = 0.2f;
obs.tweenAlpha.ResetToBeginning();
obs.tweenAlpha.PlayForward();
currentItem = itemPart;
currentExpand = expandPart;
currentExpandButton = expandButton;
}));
}
private void RemoveITween(GameObject obj)
{
iTween component = obj.GetComponent<iTween>();
if (component != null)
{
UnityEngine.Object.Destroy(component);
}
}
private static UIButton AddDialogItemButton(UIButton orig, string buttonText, Action action)
{
UIButton uIButton = UnityEngine.Object.Instantiate(orig);
uIButton.GetComponentInChildren<UILabel>().text = buttonText;
uIButton.transform.parent = orig.transform.parent;
uIButton.transform.localPosition = orig.transform.localPosition;
uIButton.transform.localScale = orig.transform.localScale;
uIButton.onClick.Add(new EventDelegate(delegate
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
action();
}));
return uIButton;
}
public static string getTitle(MailData mailData)
{
return getTitle((UserGoods.Type)mailData.reward_type, mailData.RewardUserGoodsId, mailData.reward_count);
}
public static string getTitle(UserGoods.Type reward_type, long userGoodsId, long count)
{
string unit = getUnit(reward_type, userGoodsId);
string userGoodsName = UserGoods.getUserGoodsName(reward_type, userGoodsId);
return string.Format(unit, userGoodsName, count);
}
private static string getUnit(UserGoods.Type reward_type, long userGoodsId)
{
SystemText systemText = Data.SystemText;
if (reward_type == UserGoods.Type.Item && ((int)userGoodsId == 1000 || (int)userGoodsId == 1001))
{
return systemText.Get("Mail_0040");
}
switch (reward_type)
{
case UserGoods.Type.Item:
case UserGoods.Type.Card:
case UserGoods.Type.SpotCard:
case UserGoods.Type.SpotCardOnlyLatestCardPack:
return systemText.Get("Mail_0041");
case UserGoods.Type.Rupy:
return systemText.Get("Mail_0042");
case UserGoods.Type.SpotCardPoint:
return systemText.Get("Mail_0063");
default:
return systemText.Get("Mail_0040");
}
}
public static void SetTicket(long userGoodsId, long count, UITexture tex, UILabel label, ResourceHandler resourceHandler)
{
Item item = Data.Master.ItemList.Find((Item data) => data.UserGoodsId == userGoodsId);
if (item != null)
{
string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath(item.thumbnail, ResourcesManager.AssetLoadPathType.Item);
resourceHandler.Add(assetTypePath, delegate
{
string assetTypePath2 = Toolbox.ResourcesManager.GetAssetTypePath(item.thumbnail, ResourcesManager.AssetLoadPathType.Item, isfetch: true);
tex.mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(assetTypePath2);
});
string unitFormat = item.unitFormat;
label.text = string.Format(unitFormat, item.name, count);
}
else
{
tex.gameObject.SetActive(value: false);
label.text = "";
}
}
public static string SetTicketTitle(int itemId, int count)
{
Item itemData = Item.GetItemData(UserGoods.Type.Item, itemId);
return string.Format(itemData.unitFormat, itemData.name, count);
}
public static void SetTexture(UserGoods.Type type, UITexture tex, ResourceHandler resourceHandler)
{
string texName = UserGoods.GetUserGoodsImageName(type, 0L);
string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath(texName, ResourcesManager.AssetLoadPathType.Item);
resourceHandler.Add(assetTypePath, delegate
{
string assetTypePath2 = Toolbox.ResourcesManager.GetAssetTypePath(texName, ResourcesManager.AssetLoadPathType.Item, isfetch: true);
tex.mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(assetTypePath2);
});
}
public static void SetTexture(UserGoods.Type type, long goodsId, UITexture texture, ResourceHandler resourceHandler)
{
string thumbnailName = GetThumbnailName(type, goodsId);
string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath(thumbnailName, ResourcesManager.AssetLoadPathType.Item);
resourceHandler.Add(assetTypePath, delegate
{
string assetTypePath2 = Toolbox.ResourcesManager.GetAssetTypePath(thumbnailName, ResourcesManager.AssetLoadPathType.Item, isfetch: true);
texture.mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(assetTypePath2);
});
}
public static string GetThumbnailName(UserGoods.Type type, long id)
{
if (type == UserGoods.Type.Skin)
{
return GetSkinThumbnailName(id);
}
return UserGoods.GetUserGoodsImageName(type, id);
}
public static string GetSkinThumbnailName(long id)
{
if (ExistsIndividualSkinThumbnail(id, out var imageName))
{
return imageName;
}
return UserGoods.GetUserGoodsImageName(UserGoods.Type.Skin, 0L);
}
public static bool ExistsIndividualSkinThumbnail(long id, out string imageName)
{
UserGoods userGoods = new UserGoods(UserGoods.Type.Skin, id);
imageName = userGoods.GetUserGoodsIndividualImageName();
string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath(imageName, ResourcesManager.AssetLoadPathType.Item);
return Toolbox.ResourcesManager.ExistsAssetBundleManifest(assetTypePath);
}
}