From 5fad96c186ea82bf6aa105824023fc1077ce64cd Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期六, 16 二月 2019 16:25:46 +0800
Subject: [PATCH] 6197 【前端】【1.6】跨服匹配添加机器人
---
System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs | 181 +++++++++++++++++++++++++++-----------------
1 files changed, 110 insertions(+), 71 deletions(-)
diff --git a/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs b/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
index 14b420b..3d307e8 100644
--- a/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
+++ b/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
@@ -10,7 +10,7 @@
{
[XLua.Hotfix]
[XLua.LuaCallCSharp]
- public class CrossServerOneVsOneModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize,ISwitchAccount ,IPlayerLoginOk
+ public class CrossServerOneVsOneModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, ISwitchAccount, IPlayerLoginOk
{
public string PkResultLocalSaveKey { get; private set; }
public List<CrossServerOneVsOnePkResult> localSaveResults { get; private set; }
@@ -23,10 +23,9 @@
private bool _isMatching;
public bool IsMatching {
get { return _isMatching; }
- set
- {
+ set {
_isMatching = value;
- if(UpdateMatchStateEvent != null)
+ if (UpdateMatchStateEvent != null)
{
UpdateMatchStateEvent();
}
@@ -62,12 +61,12 @@
CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdateDayAwardState;
InitData();
}
-
+
public void OnAfterPlayerDataInitialize()
{
int playerId = (int)PlayerDatas.Instance.baseData.PlayerID;
PkResultLocalSaveKey = StringUtility.Contact("PkResultLocalSaveKey", playerId);
- LocalSaveThirdTypeKey = StringUtility.Contact("HonorStoreThirdType",playerId);
+ LocalSaveThirdTypeKey = StringUtility.Contact("HonorStoreThirdType", playerId);
GetLocalSaveData();
}
@@ -91,7 +90,7 @@
dungeonModel.updateMissionEvent += UpdateFBHelp;
UpdateServerOpenDay();
UpdateDayAwardState();
- if(IsMatching && CrossServerOneVsOnePKSeason.Instance.InOpenTime())
+ if (IsMatching && CrossServerOneVsOnePKSeason.Instance.InOpenTime())
{
SendCrossMatch(1);
}
@@ -117,7 +116,7 @@
private void UpdateSecond()
{
loadSecond += 1;
- if(loadSecond >= 5)
+ if (loadSecond >= 5)
{
recordDataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
GlobalTimeEvent.Instance.secondEvent -= UpdateSecond;
@@ -129,11 +128,11 @@
private void OnLoadMapFinish()
{
var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
- if(recordDataMapId == CrossServerDataMapId
+ if (recordDataMapId == CrossServerDataMapId
&& dataMapId != CrossServerDataMapId)
{
var pkSeason = CrossServerOneVsOnePKSeason.Instance;
- if(pkSeason.IsEnterCrossServer())
+ if (pkSeason.IsEnterCrossServer())
{
WindowCenter.Instance.Open<CrossServerWin>();
}
@@ -146,7 +145,7 @@
UpdateCrossMatchRedpoint();
if (!IsMatching) return;
- if(!CrossServerOneVsOnePKSeason.Instance.isSatisfyMatch)
+ if (!CrossServerOneVsOnePKSeason.Instance.isSatisfyMatch)
{
IsMatching = false;
SendCrossMatch(0);
@@ -156,24 +155,24 @@
public void UpdateDayAwardState()
{
var playerInfo = CrossServerOneVsOnePlayerInfo.Instance;
- for(int i = 0; i < dayAwardTypelist.Count; i++)
+ for (int i = 0; i < dayAwardTypelist.Count; i++)
{
var dayAward = dayAwardTypelist[i];
int awardType = dayAward.type;
- switch(awardType)
+ switch (awardType)
{
case 1:
- dayAward.IsReceived = rewardModel.IsAwardState(CrossRealmPKAwardStateEnum.DayWinCountAwardState,dayAward.index);
+ dayAward.IsReceived = rewardModel.IsAwardState(CrossRealmPKAwardStateEnum.DayWinCountAwardState, dayAward.index);
dayAward.SetCompletedNum(playerInfo.DayWinCount);
break;
case 2:
- dayAward.IsReceived = rewardModel.IsAwardState(CrossRealmPKAwardStateEnum.DayPKCountAwardState,dayAward.index);
+ dayAward.IsReceived = rewardModel.IsAwardState(CrossRealmPKAwardStateEnum.DayPKCountAwardState, dayAward.index);
dayAward.SetCompletedNum(playerInfo.DayPKCount);
break;
}
}
- if(UpdateDayAwardsEvent != null)
+ if (UpdateDayAwardsEvent != null)
{
UpdateDayAwardsEvent();
}
@@ -203,27 +202,30 @@
private void UpdateFBHelp()
{
- if (!CrossServerUtility.IsCrossServer()) return;
+ if (!CrossServerUtility.IsCrossServerOneVsOne())
+ {
+ return;
+ }
var hero = PlayerDatas.Instance.hero;
var mission = dungeonModel.mission;
- if(mission.prepareTime > 0)
+ if (mission.prepareTime > 0)
{
roundEndTime = DateTime.Now + new TimeSpan(mission.prepareTime * TimeSpan.TicksPerMillisecond);
if (!WindowCenter.Instance.IsOpen<CrossServerOneVsOneRoundWin>())
{
WindowCenter.Instance.Open<CrossServerOneVsOneRoundWin>();
}
- if(hero != null)
+ if (hero != null)
{
hero.Behaviour.StopHandupAI(true);
}
-
+
}
- DebugEx.LogFormat("鍓湰甯姪淇℃伅鍥炲悎鏄惁寮�濮嬶細锛歿0}",mission.isStart);
+ DebugEx.LogFormat("鍓湰甯姪淇℃伅鍥炲悎鏄惁寮�濮嬶細锛歿0}", mission.isStart);
if (mission.isStart == 1)
{
- if(WindowCenter.Instance.IsOpen<CrossServerOneVsOneRoundWin>())
+ if (WindowCenter.Instance.IsOpen<CrossServerOneVsOneRoundWin>())
{
WindowCenter.Instance.Close<CrossServerOneVsOneRoundWin>();
}
@@ -245,7 +247,7 @@
return dayAwardTypelist;
}
- public int CompareByCompleteProgress(AwardType start,AwardType end)
+ public int CompareByCompleteProgress(AwardType start, AwardType end)
{
int x = (int)start.progress;
int y = (int)end.progress;
@@ -262,7 +264,7 @@
return 0;
}
- public bool IsNewDay { get; private set;}
+ public bool IsNewDay { get; private set; }
private void UpdateServerOpenDay()
{
var pkSeason = CrossServerOneVsOnePKSeason.Instance;
@@ -270,15 +272,15 @@
IsNewDay = false;
int openDay = TimeUtility.OpenDay;
- if(!PlayerPrefs.HasKey(LocalSaveThirdTypeKey))
+ if (!PlayerPrefs.HasKey(LocalSaveThirdTypeKey))
{
IsNewDay = true;
- LocalSave.SetInt(LocalSaveThirdTypeKey,openDay);
+ LocalSave.SetInt(LocalSaveThirdTypeKey, openDay);
}
else
{
int localOpenDay = LocalSave.GetInt(LocalSaveThirdTypeKey);
- if(openDay != localOpenDay)
+ if (openDay != localOpenDay)
{
IsNewDay = true;
LocalSave.SetInt(LocalSaveThirdTypeKey, openDay);
@@ -291,10 +293,10 @@
#region 琛ㄦ暟鎹�
public int freeMaxMatchNum { get; private set; } //姣忔棩鍏嶈垂鍖归厤娆℃暟
public int buyMaxMatchNum { get; private set; } //姣忔棩鍙喘涔版鏁�
- public string priceFormula { get;private set;} //璐拱鍖归厤娆℃暟闇�瑕佷环鏍煎叕寮�
+ public string priceFormula { get; private set; } //璐拱鍖归厤娆℃暟闇�瑕佷环鏍煎叕寮�
public string winStreakScoreFormula { get; private set; } //杩炶儨绉垎鍏紡
public List<AwardType> dayAwardTypelist { get; private set; }
- public int afterOpenDayOpenCross { get; private set;}
+ public int afterOpenDayOpenCross { get; private set; }
private void ParseFuncConfig()
{
var CrossRealmPKAward = FuncConfigConfig.Get("CrossRealmPKAward");
@@ -306,14 +308,14 @@
{
int times = int.Parse(num);
var items = dayWinAwardData[num];
- var awardType = new AwardType(times,1,dayWinIndex);
+ var awardType = new AwardType(times, 1, dayWinIndex);
dayAwardTypelist.Add(awardType);
if (items.IsArray)
{
- for(int i = 0; i < items.Count; i++)
+ for (int i = 0; i < items.Count; i++)
{
var itemInfo = items[i];
- if(itemInfo.IsArray && itemInfo.Count >= 3)
+ if (itemInfo.IsArray && itemInfo.Count >= 3)
{
int id = 0;
int.TryParse(itemInfo[0].ToString(), out id);
@@ -335,11 +337,11 @@
{
int times = int.Parse(num);
var items = dayMatchAwardData[num];
- var awardType = new AwardType(times,2,dayPkIndex);
+ var awardType = new AwardType(times, 2, dayPkIndex);
dayAwardTypelist.Add(awardType);
if (items.IsArray)
{
- for(int i = 0;i < items.Count; i++)
+ for (int i = 0; i < items.Count; i++)
{
var itemInfo = items[i];
if (itemInfo.IsArray && itemInfo.Count >= 3)
@@ -375,12 +377,12 @@
{
public int type { get; private set; } //1 鑳滃埄濂栧姳 2 鍖归厤濂栧姳
public int index { get; private set; }
- public int num { get; private set;}
+ public int num { get; private set; }
public int curCompletedNum { get; private set; }
- public CompleteProgress progress { get; private set;}
+ public CompleteProgress progress { get; private set; }
public bool IsReceived { get; set; }
public List<AwardItem> awardItems = new List<AwardItem>();
- public AwardType(int _num,int _type,int _index)
+ public AwardType(int _num, int _type, int _index)
{
type = _type;
num = _num;
@@ -399,7 +401,7 @@
public void SetCompletedNum(int completedNum)
{
curCompletedNum = completedNum;
- if(IsReceived)
+ if (IsReceived)
{
curCompletedNum = num;
progress = CompleteProgress.AlreadyReceived;
@@ -423,7 +425,7 @@
public int itemId;
public int itemCount;
public int isBind;
- public AwardItem(int _id,int _count,int _isBind)
+ public AwardItem(int _id, int _count, int _isBind)
{
itemId = _id;
itemCount = _count;
@@ -433,18 +435,20 @@
#endregion
#region 鍗忚
- public CrossServerOneVsOnePkResult pkResultInfo { get; private set;}
+ public CrossServerOneVsOnePkResult pkResultInfo { get; private set; }
public event Action UpdatePkResultEvent;
public void UpdatePKResultInfo(HC003_tagGCCrossRealmPKOverInfo pKOverInfo)
{
pkResultInfo = new CrossServerOneVsOnePkResult();
pkResultInfo.UpdatePkResult(pKOverInfo);
SetPkInfoLocalSave(pkResultInfo);
- if(UpdatePkResultEvent != null)
+ if (UpdatePkResultEvent != null)
{
UpdatePkResultEvent();
}
}
+
+ Clock clientMatchClock;
PlayerBuffDatas buffDatas { get { return ModelCenter.Instance.GetModel<PlayerBuffDatas>(); } }
/// <summary>
///0-鍙栨秷鍖归厤; 1-杩涜鍖归厤
@@ -454,10 +458,45 @@
{
if (type == 1 && TryGetMatchTip()) return;
- CC101_tagCMCrossRealmPKMatch match = new CC101_tagCMCrossRealmPKMatch();
- match.Type = (byte)type;
- GameNetSystem.Instance.SendInfo(match);
- CrossServerOneVsOneRewardModel.PkType = buffDatas.PkType;
+ if (type == 1)
+ {
+ var danLevel = CrossServerOneVsOnePlayerInfo.Instance.DanLV;
+ if (ClientCrossServerOneVsOne.TryClientCrossServerOneVsOne(danLevel))
+ {
+ var onMatchPackage = new HC002_tagGCCrossRealmPKStartMatch();
+ GameNetSystem.Instance.PushPackage(onMatchPackage, ServerType.Main);
+ var randomWaitSeconds = UnityEngine.Random.Range(3, 8);
+ clientMatchClock = Clock.Create(DateTime.Now + new TimeSpan(randomWaitSeconds * TimeSpan.TicksPerSecond), () =>
+ {
+ if (StageLoad.Instance.stageType == Stage.E_StageType.Dungeon)
+ {
+ ClientCrossServerOneVsOne.FakeMatchOk();
+ }
+ });
+ }
+ else
+ {
+ var match = new CC101_tagCMCrossRealmPKMatch();
+ match.Type = (byte)type;
+ GameNetSystem.Instance.SendInfo(match);
+ CrossServerOneVsOneRewardModel.PkType = buffDatas.PkType;
+ }
+ }
+ else
+ {
+ if (clientMatchClock != null && !clientMatchClock.stopped)
+ {
+ clientMatchClock.Stop();
+ IsMatching = false;
+ }
+ else
+ {
+ var match = new CC101_tagCMCrossRealmPKMatch();
+ match.Type = (byte)type;
+ GameNetSystem.Instance.SendInfo(match);
+ CrossServerOneVsOneRewardModel.PkType = buffDatas.PkType;
+ }
+ }
}
public void SendBuyMatchCount()
@@ -470,7 +509,7 @@
{
int mapId = PlayerDatas.Instance.baseData.MapID;
bool isCrossDungeon = CrossServerUtility.IsCrossServer();
- if(isCrossDungeon)
+ if (isCrossDungeon)
{
SysNotifyMgr.Instance.ShowTip("CrossMatching3");
return true;
@@ -485,7 +524,7 @@
}
var deadModel = ModelCenter.Instance.GetModel<PlayerDeadModel>();
- if(deadModel.playerIsDie)
+ if (deadModel.playerIsDie)
{
SysNotifyMgr.Instance.ShowTip("CrossMatching5");
return true;
@@ -493,21 +532,21 @@
var teamModel = ModelCenter.Instance.GetModel<TeamModel>();
bool isTeamMatch = teamModel.isMatching;
- if(isTeamMatch)
+ if (isTeamMatch)
{
SysNotifyMgr.Instance.ShowTip("CrossMatching6");
return true;
}
bool isDungeonPrepare = teamModel.teamPrepare.isPreparing;
- if(isDungeonPrepare)
+ if (isDungeonPrepare)
{
SysNotifyMgr.Instance.ShowTip("CrossMatching7");
return true;
}
int remainMatchNum = CrossServerOneVsOnePlayerInfo.Instance.GetDayRemainNum();
- if(remainMatchNum <= 0)
+ if (remainMatchNum <= 0)
{
SysNotifyMgr.Instance.ShowTip("CrossMatching16");
return true;
@@ -581,9 +620,9 @@
{
localSaveResults = new List<CrossServerOneVsOnePkResult>();
string[] localJsons = LocalSave.GeStringArray(PkResultLocalSaveKey);
- if(localJsons != null)
+ if (localJsons != null)
{
- for(int i = 0; i < localJsons.Length; i++)
+ for (int i = 0; i < localJsons.Length; i++)
{
CrossServerOneVsOnePkResult resultInfo = JsonMapper.ToObject<CrossServerOneVsOnePkResult>(localJsons[i]);
localSaveResults.Add(resultInfo);
@@ -597,14 +636,14 @@
{
localSaveResults.RemoveAt(localSaveResults.Count - 1);
}
- localSaveResults.Insert(0,resultInfo);
+ localSaveResults.Insert(0, resultInfo);
string[] localJsons = new string[localSaveResults.Count];
- for(int i = 0; i < localJsons.Length; i++)
+ for (int i = 0; i < localJsons.Length; i++)
{
string json = JsonMapper.ToJson(localSaveResults[i]);
localJsons[i] = json;
}
- LocalSave.SetStringArray(PkResultLocalSaveKey,localJsons);
+ LocalSave.SetStringArray(PkResultLocalSaveKey, localJsons);
}
#endregion
@@ -612,28 +651,28 @@
#region 绾㈢偣
public const int CrossOneVsOneRedKey = 21301;
- public Redpoint crossOneVsOneRedpoint = new Redpoint(CrossServerUtility.CrossServerRedKey,CrossOneVsOneRedKey);
+ public Redpoint crossOneVsOneRedpoint = new Redpoint(CrossServerUtility.CrossServerRedKey, CrossOneVsOneRedKey);
public const int CrossArenaRedKey = 2130101;
public Redpoint crossArenaRedpoint = new Redpoint(CrossOneVsOneRedKey, CrossArenaRedKey);
public const int CrossDayAwardsRedKey = 21301011;
- public Redpoint crossDayAwardsRedpoint = new Redpoint(CrossArenaRedKey,CrossDayAwardsRedKey);
+ public Redpoint crossDayAwardsRedpoint = new Redpoint(CrossArenaRedKey, CrossDayAwardsRedKey);
public const int CrossMatchRedKey = 21301012;
public Redpoint crossMatchRedpoint = new Redpoint(CrossArenaRedKey, CrossMatchRedKey);
public void UpdateCrossDayAwardsRedpoint()
{
bool isReceive = false;
- for(int i = 0; i < dayAwardTypelist.Count; i++)
+ for (int i = 0; i < dayAwardTypelist.Count; i++)
{
var awardType = dayAwardTypelist[i];
- if(awardType.progress == AwardType.CompleteProgress.Completed)
+ if (awardType.progress == AwardType.CompleteProgress.Completed)
{
isReceive = true;
break;
}
}
- if(isReceive)
+ if (isReceive)
{
crossDayAwardsRedpoint.state = RedPointState.Simple;
}
@@ -650,7 +689,7 @@
var playerInfo = CrossServerOneVsOnePlayerInfo.Instance;
var pkSeason = CrossServerOneVsOnePKSeason.Instance;
- if (pkSeason.isSatisfyMatch&& playerInfo.GetDayRemainNum() > 0 )
+ if (pkSeason.isSatisfyMatch && playerInfo.GetDayRemainNum() > 0)
{
crossMatchRedpoint.state = RedPointState.Simple;
}
@@ -666,7 +705,7 @@
}
#region 鑽h獕鍟嗗簵绾㈢偣
-
+
public const int CrossHonorStoreRedKey = 2130104;
public Redpoint crossHonorStoreRedpoint = new Redpoint(CrossOneVsOneRedKey, CrossHonorStoreRedKey);
private Dictionary<int, Redpoint> honorRedpointDict = new Dictionary<int, Redpoint>();
@@ -679,9 +718,9 @@
StoreConfig storeConfig = storelist[i];
int redKey = 0;
Redpoint redpoint = null;
- if(storeConfig.ShopType == (int)StoreFunc.CrossOneVsOneHonor)
+ if (storeConfig.ShopType == (int)StoreFunc.CrossOneVsOneHonor)
{
- redKey = CrossHonorStoreRedKey *100 + storeConfig.ID;
+ redKey = CrossHonorStoreRedKey * 100 + storeConfig.ID;
redpoint = new Redpoint(CrossHonorStoreRedKey, redKey);
honorRedpointDict.Add(storeConfig.ID, redpoint);
}
@@ -691,13 +730,13 @@
public Redpoint GetRedpointById(int shopId)
{
Redpoint redpoint = null;
- honorRedpointDict.TryGetValue(shopId,out redpoint);
+ honorRedpointDict.TryGetValue(shopId, out redpoint);
return redpoint;
}
private void UpdatePlayerData(PlayerDataRefresh type)
{
- switch(type)
+ switch (type)
{
case PlayerDataRefresh.CDBPlayerRefresh_Honor:
UpdateCanBuyRedpoint();
@@ -712,9 +751,9 @@
if (!pkSeason.IsEnterCrossServer()) return;
List<StoreModel.StoreData> storeDatas = storeModel.TryGetStoreDatas((int)StoreFunc.CrossOneVsOneHonor);
- if(storeDatas != null)
+ if (storeDatas != null)
{
- for(int i = 0; i < storeDatas.Count; i++)
+ for (int i = 0; i < storeDatas.Count; i++)
{
var storeData = storeDatas[i];
var storeConfig = storeData.storeConfig;
@@ -727,7 +766,7 @@
honorRedpointDict[storeConfig.ID].state = RedPointState.None;
if (!storeModel.TryGetIsSellOut(storeConfig, out remainNum))
{
- if(!PlayerPrefs.HasKey(key)|| IsNewDay)
+ if (!PlayerPrefs.HasKey(key) || IsNewDay)
{
if (UIHelper.GetMoneyCnt(storeConfig.MoneyType) >= (ulong)storeConfig.MoneyNumber)
{
@@ -737,7 +776,7 @@
}
else
{
- if(LocalSave.GetBool(key))
+ if (LocalSave.GetBool(key))
{
if (UIHelper.GetMoneyCnt(storeConfig.MoneyType) >= (ulong)storeConfig.MoneyNumber)
{
@@ -773,7 +812,7 @@
{
IsNewDay = false;
string record = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "ShopId", shopId);
- if(honorRedpointDict[shopId].state != RedPointState.None)
+ if (honorRedpointDict[shopId].state != RedPointState.None)
{
honorRedpointDict[shopId].state = RedPointState.None;
LocalSave.SetBool(record, false);
--
Gitblit v1.8.0