备份CatanBuilding瘦身独立工程

This commit is contained in:
JSD\13999
2026-05-26 16:15:54 +08:00
commit 2d0e6a61b7
12001 changed files with 2431925 additions and 0 deletions

View File

@@ -0,0 +1,207 @@
using asap.core;
using System.Collections.Generic;
using UnityEngine;
public class DuelFishingEvent
{
public int RoleID;
public int index;
public FishInfoData data;
public bool isEnd;
public int ItemID;
public DuelFishingEvent(int RoleID, int itemID)
{
ItemID = itemID;
this.RoleID = RoleID;
}
public DuelFishingEvent(int RoleID, int index, FishInfoData data, bool isEnd)
{
this.RoleID = RoleID;
this.index = index;
this.data = data;
this.isEnd = isEnd;
}
}
public class DuelModel : IDuelPlayerModel
{
public int RoleID { get; set; }
public string PlayerID { get; set; }
public int SetRodTime { get; set; } //设置鱼竿时间
public string PlayerName { get; set; }
public List<int> CarLevels { get; set; } = new List<int>(6);
public string PlayerAvatar { get; set; }
public int RankScore { get; set; }
public int Mag { get; set; } = 1;
public int RodId { get; set; }
public int RodLevel { get; set; }
public int RodStar { get; set; }
public int CurrentPTS { set; get; } //当前分数
public List<DuelFishingData> DuelFishingDatas { get; set; } = new List<DuelFishingData>();
public int CurrentFailNum { get; set; } //失败次数
int MaxFailNum = 3;
protected DuelFishingData CurrentState;
public int index;
public void Init(string playerID, string playerName, string playerAvatar, int randScore, int mag, int maxFail)
{
PlayerID = playerID;
PlayerName = playerName;
PlayerAvatar = playerAvatar;
RankScore = randScore;
Mag = mag;
CurrentPTS = 0;
CurrentFailNum = 0;
MaxFailNum = maxFail;
}
public void Init(List<int> carLevels)
{
CarLevels = carLevels;
}
public void SetRodData(DuelRodData rodData)
{
RodId = rodData.rodId;
RodLevel = rodData.rodLevel;
RodStar = rodData.rodStar;
}
public virtual void Start()
{
CurrentState = NewDuelFishingData();
}
public virtual void StartLastRecordedTime()
{
}
//public virtual void StartFishing()
//{
//}
public virtual bool StopFishing(FishInfoData data)
{
if (CurrentState == null)
{
Debug.LogError("CurrentState is null, please call Start() first.");
return false;
}
CurrentState.fishItemId = data.fishItemId;
bool isWin = data.point > 0;
CurrentState.isWin = isWin;
CurrentState.point = data.point;
CurrentPTS += data.point;
int stateIndex = 0;
if (isWin)
{
CurrentFailNum = 0;
CurrentState.fishCardAdd = data.fishCardAdd;
CurrentState.fishRodAdd = data.fishRodAdd;
index++;
stateIndex = index;
}
else
{
CurrentFailNum++;
CurrentState.failNum = CurrentFailNum;
if (CurrentFailNum >= MaxFailNum)
{
index++;
stateIndex = index;
CurrentFailNum = 0;
}
}
bool isEnd = index >= CarLevels.Count;
GContext.Publish(new DuelFishingEvent(RoleID, stateIndex, data, isEnd));
CurrentState = NewDuelFishingData();
return isEnd;
}
public bool IsLastFish()
{
return index >= CarLevels.Count - 1;
}
public virtual void CastRod(int fishID)
{
CurrentState.fishItemId = fishID;
GContext.Publish(new DuelFishingEvent(RoleID, fishID));
}
public List<DuelFishingData> GetShowDatas()
{
List<DuelFishingData> duelFishingDatas = new List<DuelFishingData>();
foreach (var data in DuelFishingDatas)
{
if (data.isWin || data.failNum >= 3)
{
DuelFishingData showData = new DuelFishingData
{
slienceTime = data.slienceTime,
//castingTime = data.castingTime,
fishingTime = data.fishingTime,
isWin = data.isWin,
fishItemId = data.fishItemId,
point = data.point,
failNum = data.failNum,
fishCardAdd = data.fishCardAdd,
fishRodAdd = data.fishRodAdd
};
duelFishingDatas.Add(showData);
}
}
return duelFishingDatas;
}
public FishInfoData GetDuelFishingData(int index, int fishID, int point, float fishCardAdd, float fishingRodAdd)
{
FishInfoData infoData = new FishInfoData()
{
fishItemId = fishID,
point = point,
fishCardAdd = fishCardAdd,
fishRodAdd = fishingRodAdd,
higher = true,
higherCard = true,
higherRod = true
};
int count = DuelFishingDatas.Count;
if (index < 0 || index >= count)
{
return infoData;
}
count = 0;
for (int i = 0; i < DuelFishingDatas.Count; i++)
{
DuelFishingData data = DuelFishingDatas[i];
if (data.isWin || data.failNum >= 3)
{
if (count == index)
{
if (data.isWin)
//设置对手数据
{
infoData.higher = data.point < point;
infoData.higherCard = data.fishCardAdd < fishCardAdd;
infoData.higherRod = data.fishRodAdd < fishingRodAdd;
}
else
break;
}
count++;
}
}
return infoData; //如果没有找到对应的成功数据则返回null
}
public DuelFishingData NewDuelFishingData()
{
DuelFishingData duelFishingData = new DuelFishingData();
duelFishingData.isWin = false;
duelFishingData.slienceTime = 0;
duelFishingData.fishingTime = 0;
DuelFishingDatas.Add(duelFishingData);
return duelFishingData;
}
}