test(upserver): 归档存档迁移与玩法闭环回归工具
This commit is contained in:
@@ -0,0 +1,175 @@
|
||||
using System;using System.Threading.Tasks;using System.Runtime.CompilerServices;
|
||||
var panel=new OriginalPanel();panel.Run();
|
||||
bool ok=panel.Animations==0&&!panel.go_info.active;
|
||||
Console.WriteLine($"{(ok?"PASS":"FAIL")} original full Success method displays before pending storage response: writes={Storage.Writes}, confirmed={Storage.Confirmed}, animations={panel.Animations}, info={panel.go_info.active}");
|
||||
return ok?0:1;
|
||||
public class OriginalPanel{
|
||||
public int Animations;public Node go_info=new(),go_weight=new(),fx_ui_blingbling_01=new(),bg_target=new();
|
||||
int addCollecting,curCollectingID,add;float extraPointEvent;bool isSocial,isEnable=true;int Magnification=10;float waitTime1,duration1,waitTime2,duration2;
|
||||
Fishing fishingData=new();FishingEventData fishingEventData=new();Tables _tables=new();PlayerData playerData=new();string PanelName="reward";
|
||||
Text root_target_text_info=new(),root_1v1battle_text_info=new(),text_gold_num=new(),text_num_buff=new(),txt_magnification=new();
|
||||
Bonus bonusReward=new();UI uiService=new();Social fishingRewardSocial=new();Animator anim_panel;
|
||||
public OriginalPanel(){anim_panel=new Animator(()=>Animations++);}public void Run()=>Success(0);
|
||||
void MaterialChange(){}void PlayAudioRewardFish(){}void SetTextTitleAsync(float x,bool s){}void SetFishWeight(float w){}void VibrationData(){}
|
||||
float SetProficiency(float a,float b,int c)=>1;object AddCash()=>new();object StartCoroutine(object o){Animations++;return o;}
|
||||
async void Success(float pointBonus)
|
||||
{
|
||||
go_info.gameObject.SetActive(false);
|
||||
GContext.container.Resolve<PlayerData>().SaveFishingFrequency();
|
||||
|
||||
if (addCollecting > 0)
|
||||
{
|
||||
extraPointEvent = fishingEventData.OnFishReward(fishingData.MapId, fishingData.NewIndex, Magnification);
|
||||
addCollecting *= Magnification;
|
||||
GContext.container.Resolve<PlayerItemData>().AddItemCount(curCollectingID, addCollecting, null);
|
||||
MaterialChange();
|
||||
}
|
||||
PlayAudioRewardFish();
|
||||
GContext.container.Resolve<BuffDataCenter>().EndCollectionTargetWeight(fishingData.fishItem.ID);
|
||||
fishingEventData.AddProgress(fishingData.fishItem.Quality, Magnification);
|
||||
|
||||
GContext.container.Resolve<GuideDataCenter>().AddIndex(true);
|
||||
|
||||
if (fishingData.IsKeepsakeFish())
|
||||
{
|
||||
root_target_text_info.text = LocalizationMgr.GetText("UI_FishingTargetPopupPanel_Advanced_9");
|
||||
}
|
||||
else if (fishingData.IsPiggyBankFish())
|
||||
{
|
||||
fishingEventData.curActivateItemId = fishingData.fishItem.ID;
|
||||
root_target_text_info.text = LocalizationMgr.GetText("UI_GiftPiggyBankPopupPanel_10");
|
||||
PiggyBankPackData piggyBankPackData = GContext.container.Resolve<PiggyBankPackData>();
|
||||
piggyBankPackData.TriggerPack();
|
||||
}
|
||||
else if (fishingData.IsBarginPackFish())
|
||||
{
|
||||
fishingEventData.curActivateItemId = fishingData.fishItem.ID;
|
||||
root_target_text_info.text = LocalizationMgr.GetText("UI_GiftBargainPopupPanel_7");
|
||||
BargainPackData piggyBankPackData = GContext.container.Resolve<BargainPackData>();
|
||||
piggyBankPackData.TriggerPack();
|
||||
|
||||
}
|
||||
else if (fishingData.IsGeneralFish())
|
||||
{
|
||||
isSocial = false;
|
||||
DropPackageList dropPackageList = _tables.TbDrop[fishingData.curFishData.DropID].DropList;
|
||||
float proficiency = dropPackageList.DropCountList[0] * fishingData.random;
|
||||
var proficiencyExtra = SetProficiency(proficiency, extraPointEvent, fishingData.curFishData.ID);//额外的Buff加成
|
||||
var endWeight = fishingData.fishWeight;
|
||||
float extraCashDrop = GContext.container.Resolve<CollectingData>().ExtraCashDrop();
|
||||
//Data
|
||||
//金币各种加成
|
||||
float gold = (dropPackageList.DropCountList[1] + extraCashDrop)
|
||||
* (1 + pointBonus)
|
||||
* Magnification
|
||||
* fishingData.random;
|
||||
//杆加成
|
||||
//解锁地图Buff加成
|
||||
float glodBuff = GContext.container.Resolve<BuffDataCenter>().GetExtraGoldBuffValue(fishingData.MapId, fishingData.fishItem.Quality);
|
||||
|
||||
if (glodBuff > 0.001f)
|
||||
{
|
||||
text_gold_num.color = Color.black;
|
||||
text_num_buff.color = Color.white;
|
||||
}
|
||||
int Quality = fishingData.curFishData.Quality;
|
||||
if (Quality > 6)
|
||||
{
|
||||
Quality = 6;
|
||||
}
|
||||
|
||||
//权益全局加成
|
||||
var ExtraPoint = playerData.benefitsCashMag + glodBuff;
|
||||
int cash = Mathf.RoundToInt(gold * proficiencyExtra * (1 + ExtraPoint));
|
||||
|
||||
add = cash;
|
||||
GContext.Publish(new ConditionTypeEvent(ConditionType.CashFromFishing, add));
|
||||
GContext.Publish(new ConditionTypeEvent(ConditionType.MaxCashFromFishing, add / Magnification));
|
||||
|
||||
//AddEventData
|
||||
if (add > 0)
|
||||
{
|
||||
playerData.AddGold((ulong)add);
|
||||
}
|
||||
GContext.Publish(new TargetAddData(dropPackageList.DropIDList[1], 0, add));
|
||||
var isSpecialFish = fishingData.curFishData.GeneralType == FishGeneralType.SpMapFish || fishingData.curFishData.GeneralType == FishGeneralType.EventFish;
|
||||
SetTextTitleAsync(proficiencyExtra, isSpecialFish);
|
||||
SetFishWeight(fishingData.fishWeight);
|
||||
MMTService mmService = GContext.container.Resolve<MMTService>();
|
||||
if (addCollecting > 0)
|
||||
{
|
||||
var collectingTargetInit = fishingEventData.collectingTargetInit;
|
||||
string BgRewardAdd = collectingTargetInit.BgRewardAdd;
|
||||
if (!string.IsNullOrEmpty(BgRewardAdd))
|
||||
{
|
||||
bg_target.gameObject.SetActive(true);
|
||||
uiService.SetImageSprite(bg_target, BgRewardAdd, PanelName);
|
||||
}
|
||||
}
|
||||
bonusReward.Show(Magnification);
|
||||
_ = StartCoroutine(AddCash());
|
||||
//Show Fish Info UI
|
||||
go_info.gameObject.SetActive(true);
|
||||
go_weight.SetActive(false);
|
||||
|
||||
//Show Magnification Animation
|
||||
if (Magnification > 1)
|
||||
{
|
||||
txt_magnification.text = "x" + Magnification;
|
||||
|
||||
anim_panel.Play("info_show_2");
|
||||
|
||||
await new WaitForSeconds(waitTime1 + duration1 + waitTime2);
|
||||
if (!isEnable)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
bonusReward.DOTweenAdd(Magnification, duration2);
|
||||
|
||||
var progress = 0f;
|
||||
var newCash = add / Magnification;
|
||||
var addCash = add - newCash;
|
||||
DOTween.To(() => progress, x => progress = x, 1f, duration2).OnUpdate(() =>
|
||||
{
|
||||
text_gold_num.text = ConvertTools.GetNumberString2((int)(newCash + addCash * progress));
|
||||
text_num_buff.text = text_gold_num.text;
|
||||
}).SetId("AddCash");
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
anim_panel.Play("info_show_1");
|
||||
}
|
||||
if (glodBuff > 0.001f)
|
||||
{
|
||||
fx_ui_blingbling_01.gameObject.SetActive(true);
|
||||
}
|
||||
VibrationData();
|
||||
fishingRewardSocial.ShowSocial(isSocial);
|
||||
}
|
||||
else if (fishingData.fishItem.IsSpinachItem())
|
||||
{
|
||||
//todo 1v1battle
|
||||
root_1v1battle_text_info.text=LocalizationMgr.GetText("UI_GiftBargainPopupPanel_8");
|
||||
}
|
||||
}}
|
||||
public static class Storage{public static int Writes;public static bool Confirmed=false;}
|
||||
public class Node{public bool active;public Node gameObject=>this;public void SetActive(bool b){active=b;}}
|
||||
public class Text{public string text;public Color color;}public struct Color{public static Color black,white;}
|
||||
public class PlayerData{public float benefitsCashMag;public void SaveFishingFrequency(){Storage.Writes++;}public void AddGold(ulong v){Storage.Writes++;}}
|
||||
public class PlayerItemData{public void AddItemCount(int a,int b,object c){}}public class PiggyBankPackData{public void TriggerPack(){}}public class BargainPackData{public void TriggerPack(){}}
|
||||
public class BuffDataCenter{public void EndCollectionTargetWeight(int x){}public float GetExtraGoldBuffValue(int a,int b)=>0;}public class CollectingData{public float ExtraCashDrop()=>0;}
|
||||
public class GuideDataCenter{public void AddIndex(bool b){}}public class MMTService{}
|
||||
public class Tables{public Drop[] TbDrop={new()};}public class Drop{public DropPackageList DropList=new();}public class DropPackageList{public float[] DropCountList={1,10};public int[] DropIDList={0,1001};}
|
||||
public class Fishing{public Fish curFishData=new(),fishItem=new();public int MapId,NewIndex;public float random=1,fishWeight=1;public bool IsKeepsakeFish()=>false;public bool IsPiggyBankFish()=>false;public bool IsBarginPackFish()=>false;public bool IsGeneralFish()=>true;}
|
||||
public class Fish{public int ID,DropID,Quality=2;public FishGeneralType GeneralType;public bool IsSpinachItem()=>false;}
|
||||
public enum FishGeneralType{Normal,SpMapFish,EventFish}public enum ConditionType{CashFromFishing,MaxCashFromFishing}
|
||||
public record ConditionTypeEvent(ConditionType c,int count);public record TargetAddData(int a,int b,int c);
|
||||
public class FishingEventData{public int curActivateItemId;public Target collectingTargetInit=new();public float OnFishReward(int a,int b,int c)=>0;public void AddProgress(int a,int b){}}public class Target{public string BgRewardAdd;}
|
||||
public static class GContext{public static Container container=new();public static void Publish(object e){}}public class Container{public T Resolve<T>() where T:new()=>new();}
|
||||
public class Bonus{public void Show(int n){}public void DOTweenAdd(int n,float t){}}public class UI{public void SetImageSprite(object a,string b,string c){}}public class Social{public void ShowSocial(bool b){}}
|
||||
public class Animator{Action play;public Animator(Action a){play=a;}public void Play(string s){play();}}
|
||||
public static class LocalizationMgr{public static string GetText(string s)=>s;}public static class Mathf{public static int RoundToInt(float v)=>(int)MathF.Round(v);}
|
||||
public static class ConvertTools{public static string GetNumberString2(int n)=>n.ToString();}public static class DOTween{public static Tween To(Func<float>a,Action<float>b,float c,float d)=>new();}public class Tween{public Tween OnUpdate(Action a)=>this;public Tween SetId(string s)=>this;}
|
||||
public class WaitForSeconds{static TaskCompletionSource<bool> wait=new();public WaitForSeconds(float t){}public TaskAwaiter<bool> GetAwaiter()=>wait.Task.GetAwaiter();}
|
||||
Reference in New Issue
Block a user