feat(battle-engine): full Unity/VFX/god-object shims + expanded copy closure (2570 files)

Authored Unity primitive/object-model shim, VFX layer (control-flow-preserving, InstantVfx never invokes its action -- headless suppression), god-object stubs (GameMgr/EffectMgr/UIManager with faithfully-extracted nested enums), View/UI/Touch tree, LitJson+BetterList+Tuple copied, third-party stubs. Discovered Roslyn header-error masking: fixing class-header type errors unmasks body references, so the true copy closure is ~2570 files (was 782 under masking). Errors: masked-25720 -> 268; our shim files compile clean. Remaining: ~50 residual shim/external types, 24 NGUI UI-base overrides, static-type fixes, plus likely 1-2 more unmask waves.
This commit is contained in:
gamer147
2026-06-05 17:22:20 -04:00
parent 0d9d8acae0
commit 957af3d1ec
1795 changed files with 166536 additions and 0 deletions

View File

@@ -0,0 +1,117 @@
using System.Collections.Generic;
using LitJson;
namespace Wizard.Bingo;
public class BingoDrawTask : BaseTask
{
public class BingoDrawTaskParam : BaseParam
{
public int draw_count;
}
public class BingoDrawTaskData
{
public bool IsSheetCompleted { get; private set; }
public bool IsSwitchNextSheet { get; private set; }
public List<int> HitSquareIdList { get; private set; }
public List<ReceivedReward> TreasureBoxReawrdList { get; private set; }
public List<ReceivedReward> LineRewardData { get; private set; }
public List<List<int>> CompletedLineConditionList { get; private set; }
public bool IsBingoLoginBonus { get; private set; }
public bool IsDisplayTweetDialog { get; private set; }
public BingoDrawTaskData(bool isSheetCompleted, bool isSwitchNextSheet, List<int> hitSquareIdList, List<ReceivedReward> treasureBoxReawrdList, List<ReceivedReward> lineRewardData, List<List<int>> completedLineConditionList, bool isBingoLoginBonus, bool isDisplayTweetDialog)
{
IsSheetCompleted = isSheetCompleted;
IsSwitchNextSheet = isSwitchNextSheet;
HitSquareIdList = hitSquareIdList;
TreasureBoxReawrdList = treasureBoxReawrdList;
LineRewardData = lineRewardData;
CompletedLineConditionList = completedLineConditionList;
IsBingoLoginBonus = isBingoLoginBonus;
IsDisplayTweetDialog = isDisplayTweetDialog;
}
}
public BingoDrawTaskData Result { get; private set; }
private static List<int> CompletedLine(JsonData squareJsonData)
{
List<int> list = new List<int>();
for (int i = 0; i < squareJsonData.Count; i++)
{
list.Add(squareJsonData[i].ToInt());
}
return list;
}
public BingoDrawTask()
{
base.type = ApiType.Type.BingoDraw;
}
public void SetParameter(int buyNum, int viewerId)
{
BingoDrawTaskParam bingoDrawTaskParam = new BingoDrawTaskParam();
bingoDrawTaskParam.viewer_id = viewerId.ToString();
bingoDrawTaskParam.draw_count = buyNum;
base.Params = bingoDrawTaskParam;
}
protected override int Parse()
{
int num = base.Parse();
if (num != 1)
{
return num;
}
JsonData response = base.ResponseData["data"];
Result = ParseBingoDrawResult(response);
PlayerStaticData.UpdateHaveUserGoodsNumByJsonData(base.ResponseData["data"]["reward_list"]);
return num;
}
public static BingoDrawTaskData ParseBingoDrawResult(JsonData response, bool isBingoLoginBonus = false)
{
bool isSheetCompleted = response["is_sheet_completed"].ToInt() == 1;
bool isSwitchNextSheet = response["is_switch_next_sheet"].ToInt() == 1;
JsonData jsonData = response["hit_square_id_list"];
List<int> list = new List<int>();
for (int i = 0; i < jsonData.Count; i++)
{
int item = jsonData[i].ToInt();
list.Add(item);
}
JsonData jsonData2 = response["treasure_box_reward_list"];
List<ReceivedReward> list2 = new List<ReceivedReward>();
for (int j = 1; j < jsonData2.Count; j++)
{
ReceivedReward item2 = ReceivedReward.CreateFromBingoTreasureBoxReward(jsonData2[j]);
list2.Add(item2);
}
JsonData jsonData3 = response["line_reward_list"];
List<ReceivedReward> list3 = new List<ReceivedReward>();
for (int k = 1; k < jsonData3.Count; k++)
{
ReceivedReward item3 = ReceivedReward.CreateFromBingoLineReward(jsonData3[k]);
list3.Add(item3);
}
JsonData jsonData4 = response["completed_line_condition_list"];
List<List<int>> list4 = new List<List<int>>();
for (int l = 0; l < jsonData4.Count; l++)
{
List<int> item4 = CompletedLine(jsonData4[l]);
list4.Add(item4);
}
bool isDisplayTweetDialog = response["is_display_tweet_dialog"].ToBoolean();
return new BingoDrawTaskData(isSheetCompleted, isSwitchNextSheet, list, list2, list3, list4, isBingoLoginBonus, isDisplayTweetDialog);
}
}

View File

@@ -0,0 +1,224 @@
using System;
using System.Collections.Generic;
using LitJson;
namespace Wizard.Bingo;
public class BingoInfoTask : BaseTask
{
public struct SquareData
{
public int SquareId;
public int DisplayId;
public bool IsOpen;
public int TreasureBoxGradeId;
public SquareData(JsonData squareJsonData)
{
SquareId = squareJsonData["square_id"].ToInt();
DisplayId = squareJsonData["display_id"].ToInt();
IsOpen = squareJsonData["is_open"].ToInt() == 1;
TreasureBoxGradeId = squareJsonData["treasure_box_grade_id"].ToInt();
}
}
public struct BingoMissionData
{
public string MissionTitle { get; private set; }
public int MissionCurrent { get; private set; }
public int MissionMax { get; private set; }
public bool IsCleared { get; private set; }
public ReceivedReward Reward { get; private set; }
public float MissionRatio
{
get
{
if (MissionMax == 0)
{
return 0f;
}
return (float)MissionCurrent / (float)MissionMax;
}
}
public BingoMissionData(JsonData json)
{
MissionTitle = json["mission_name"].ToString();
MissionCurrent = json["total_count"].ToInt();
MissionMax = json["require_number"].ToInt();
IsCleared = json["is_achieved"].ToInt() == 1;
ReceivedReward reward = ReceivedReward.CreateFromBingoMissionReward(json["reward_list"][0]);
Reward = reward;
}
}
public struct CurrentLineRewardInfo
{
public string LineNum { get; private set; }
public bool IsCleared { get; private set; }
public ReceivedReward Reward { get; private set; }
public CurrentLineRewardInfo(JsonData json)
{
LineNum = json["line_num"].ToString();
IsCleared = json["is_achieved"].ToInt() == 1;
ReceivedReward reward = ReceivedReward.CreateFromBingoMissionReward(json);
Reward = reward;
}
}
public class BingoInfoData
{
public int CampaignId;
public int SheetNum { get; private set; }
public int BingoTicketNum { get; private set; }
public int MaxSquareNum { get; private set; }
public int MaxSheetNum { get; private set; }
public int BingoDrawCost { get; private set; }
public List<SquareData> SquareDataList { get; private set; }
public Dictionary<int, List<ReceivedReward>> AllLineRewardsListDic { get; private set; }
public DateTime StartTime { get; private set; }
public DateTime EndTime { get; private set; }
public string NotificationId { get; private set; }
public List<BingoMissionData> MissionList { get; private set; }
public List<CurrentLineRewardInfo> CurrentLineRewardList { get; private set; }
public DateTime MissionEndTime { get; private set; }
public bool IsMissionActivePeriod { get; private set; }
public BingoInfoData(int campaignId, int sheetNum, int bingoTicketNum, int maxSquareNum, int maxSheetNum, int bingoDrawCost, DateTime startTime, DateTime endTime, List<SquareData> squareDataList, Dictionary<int, List<ReceivedReward>> allLineRewardsListDic, string notificationId, List<BingoMissionData> missionList, List<CurrentLineRewardInfo> currentLineRewardList, DateTime missionEndTime, bool isMissionActivePeriod)
{
CampaignId = campaignId;
SheetNum = sheetNum;
BingoTicketNum = bingoTicketNum;
MaxSquareNum = maxSquareNum;
MaxSheetNum = maxSheetNum;
BingoDrawCost = bingoDrawCost;
StartTime = startTime;
EndTime = endTime;
SquareDataList = squareDataList;
AllLineRewardsListDic = allLineRewardsListDic;
NotificationId = notificationId;
MissionList = missionList;
CurrentLineRewardList = currentLineRewardList;
MissionEndTime = missionEndTime;
IsMissionActivePeriod = isMissionActivePeriod;
}
}
public class BingoInfoTaskParam : BaseParam
{
public bool is_display_update;
}
public BingoInfoData Result { get; private set; }
public bool CanGiveDailyLoginBonus { get; private set; }
public BingoDrawTask.BingoDrawTaskData BingoLoginDrawResult { get; private set; }
public BingoInfoTask()
{
base.type = ApiType.Type.BingoInfo;
}
public void SetParameter(bool isDisplayUpdate)
{
BingoInfoTaskParam bingoInfoTaskParam = new BingoInfoTaskParam();
bingoInfoTaskParam.is_display_update = isDisplayUpdate;
base.Params = bingoInfoTaskParam;
}
protected override int Parse()
{
int num = base.Parse();
if (num != 1)
{
return num;
}
JsonData jsonData = base.ResponseData["data"];
CanGiveDailyLoginBonus = jsonData.GetValueOrDefault("can_give_login_bonus", defaultValue: false);
if (CanGiveDailyLoginBonus)
{
return num;
}
int campaignId = jsonData["campaign_id"].ToInt();
int sheetNum = jsonData["sheet_num"].ToInt();
int bingoTicketNum = jsonData["bingo_ticket_num"].ToInt();
int maxSquareNum = jsonData["max_square_num"].ToInt();
int maxSheetNum = jsonData["max_sheet_num"].ToInt();
int bingoDrawCost = jsonData["bingo_draw_cost"].ToInt();
string notificationId = jsonData["notice_text_id"].ToString();
DateTime startTime = DateTime.Parse(jsonData["start_time"].ToString());
DateTime endTime = DateTime.Parse(jsonData["end_time"].ToString());
DateTime missionEndTime = DateTime.Parse(jsonData["mission_end_time"].ToString());
bool isMissionActivePeriod = jsonData["is_mission_active_period"].ToBoolean();
JsonData jsonData2 = jsonData["square_list"];
List<SquareData> list = new List<SquareData>();
for (int i = 1; i < jsonData2.Count; i++)
{
SquareData item = new SquareData(jsonData2[i]);
list.Add(item);
}
JsonData jsonData3 = jsonData["all_line_reward_list"];
Dictionary<int, List<ReceivedReward>> dictionary = new Dictionary<int, List<ReceivedReward>>();
for (int j = 0; j < jsonData3.Count; j++)
{
for (int k = 0; k < jsonData3[j].Count; k++)
{
ReceivedReward item2 = ReceivedReward.CreateFromBingoLineReward(jsonData3[j][k]);
if (dictionary.ContainsKey(j))
{
dictionary[j].Add(item2);
continue;
}
dictionary[j] = new List<ReceivedReward>();
dictionary[j].Add(item2);
}
}
JsonData jsonData4 = jsonData["mission_list"];
List<BingoMissionData> list2 = new List<BingoMissionData>();
for (int l = 0; l < jsonData4.Count; l++)
{
BingoMissionData item3 = new BingoMissionData(jsonData4[l]);
list2.Add(item3);
}
JsonData jsonData5 = jsonData["current_line_reward_list"];
List<CurrentLineRewardInfo> list3 = new List<CurrentLineRewardInfo>();
for (int m = 0; m < jsonData5.Count; m++)
{
CurrentLineRewardInfo item4 = new CurrentLineRewardInfo(jsonData5[m]);
list3.Add(item4);
}
if (jsonData.TryGetValue("login_bonus", out var value))
{
BingoLoginDrawResult = BingoDrawTask.ParseBingoDrawResult(value, isBingoLoginBonus: true);
PlayerStaticData.UpdateHaveUserGoodsNumByJsonData(value["reward_list"]);
}
Result = new BingoInfoData(campaignId, sheetNum, bingoTicketNum, maxSquareNum, maxSheetNum, bingoDrawCost, startTime, endTime, list, dictionary, notificationId, list2, list3, missionEndTime, isMissionActivePeriod);
return num;
}
}