备份CatanBuilding瘦身独立工程
This commit is contained in:
207
Assets/Scripts/Duel/DuelModel.cs
Normal file
207
Assets/Scripts/Duel/DuelModel.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user