From 664e7b2e0608fa9a3f93ea408e01db37ef461f6e Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期四, 27 三月 2025 16:53:17 +0800
Subject: [PATCH] 0312 竞技场回合制,界面未处理
---
LogicProject/System/ArenaActivity/ArenaModel.cs | 284 ++++++++++++++++++++++++--------------------------------
1 files changed, 121 insertions(+), 163 deletions(-)
diff --git a/LogicProject/System/ArenaActivity/ArenaModel.cs b/LogicProject/System/ArenaActivity/ArenaModel.cs
index 4382c26..1f74e0f 100644
--- a/LogicProject/System/ArenaActivity/ArenaModel.cs
+++ b/LogicProject/System/ArenaActivity/ArenaModel.cs
@@ -2,11 +2,11 @@
using System;
using System.Collections.Generic;
using UnityEngine;
-using System.Text.RegularExpressions;
using LitJson;
using System.Text;
-
-//Arena涓绘帶鍒朵唬鐮�
+using System.Linq;
+
+//Arena涓绘帶鍒朵唬鐮�
public class ArenaModel : ILModel<ArenaModel>
{
public bool bFirstStageLoadCheck = false;
@@ -15,27 +15,27 @@
public int RankType = 28;
public int SelectRewardType = 1;
//鏇存柊鍖归厤鐢ㄦ埛淇℃伅
- public event Action<IL_HA922_tagGCArenaMatchList> UpdateMatchUserEvent;
- public event Action<IL_HA926_tagGCArenaBattlePlayerInfo> UpdateBattlePlayerEvent;
+ public event Action<HA922_tagGCArenaMatchList> UpdateMatchUserEvent;
+ public event Action<HA926_tagGCArenaBattlePlayerInfo> UpdateBattlePlayerEvent;
//鏇存柊鍖归厤鐢ㄦ埛淇℃伅
public event Action UpdateBattleRecordListEvent;
public event Action<int> UpdatePKInfoListEvent;
public Redpoint redpoint = new Redpoint(78129001);
//鏌ヨ鍒楄〃
- public List<IL_HA923_tagGCArenaBattleRecordList.tagGCArenaBattleRecord> ArenaBattleRecordList = new List<IL_HA923_tagGCArenaBattleRecordList.tagGCArenaBattleRecord>();
+ public List<HA923_tagGCArenaBattleRecordList.tagGCArenaBattleRecord> ArenaBattleRecordList = new List<HA923_tagGCArenaBattleRecordList.tagGCArenaBattleRecord>();
//涓汉淇℃伅
public ArenaPlayerInfo playerInfo;
public uint WinnerID; // 鑳滄柟ID(鏈鎴樻枟缁撴潫)
public bool bCheckRedPoint = false;
- public int freeMaxMatchNum { get; private set; } //姣忔鎸戞垬鍏嶈垂娆℃暟
+ public int freeMaxMatchNum { get; private set; } //鎸戞垬鏈�澶ф鏁帮紝閰嶇疆 + 鏈堝崱绛夊鍔犵殑娆℃暟
public int buyMaxMatchNum { get; private set; } //姣忔棩鍙喘涔版鏁�
public int ScoreMin { get; private set; } //鏈�浣庣Н鍒�
public int ScoreMax { get; private set; } //鏈�楂樼Н鍒�
public int RecordMax { get; private set; } //瀵规垬璁板綍鏉℃暟锛堜笉瓒呰繃50锛�
public int freeRefreshPlayerMax { get; private set; } //姣忔鎸戞垬鍏嶈垂鍒锋柊娆℃暟锛�0涓轰笉闄�
public int SelectMatchPlayer { get; set; } //褰撳墠閫夋嫨鐨勭敤鎴�
- public List<IL_HA922_tagGCArenaMatchList.tagGCArenaMatchInfo> m_PlayerInfo = new List<IL_HA922_tagGCArenaMatchList.tagGCArenaMatchInfo>();
+ public List<HA922_tagGCArenaMatchList.tagGCArenaMatchInfo> m_PlayerInfo = new List<HA922_tagGCArenaMatchList.tagGCArenaMatchInfo>();
//鍦烘櫙閰嶇疆
public uint OPPONENT_PLAYERID = 999999;
public FightResultSupplement resultSupplement;
@@ -43,77 +43,65 @@
public string opponentName { get; private set; }
public uint roundWiner = 0; //鑾疯儨鑰� id
public int currentRecordIndex = 0;
- public ArenaPKUpInfo ArenaPKUpInfoData;
+ public ArenaPKUpInfo ArenaPKUpInfoData { get; set; }
public bool bILAI;
public bool bFirstShow = true;
public bool IsArenaWork = true;
DungeonModel m_DungeonModel;
- public IL_HA922_tagGCArenaMatchList pkList;
+ public HA922_tagGCArenaMatchList pkList;
bool IsSendCloseArena = false;
- public int skipFightLV = 200; //璺宠繃鎴樻枟绛夌骇
- public bool isSkipFightChoose {
- get {
- return LocalSave.GetBool("ArenaSkipChallenge" + PlayerDatas.Instance.baseData.PlayerID);
- }
- set
- {
- LocalSave.SetBool("ArenaSkipChallenge" + PlayerDatas.Instance.baseData.PlayerID, value);
- }
- }
+ Dictionary<int, int> lvToNpcDic = new Dictionary<int, int>();
DungeonModel dungeonModel {
get {
return m_DungeonModel ?? (m_DungeonModel = ModelCenter.Instance.GetModel<DungeonModel>());
}
}
-
- ServerMirrorFightModel mirrorFightModel { get { return ModelCenter.Instance.GetModel<ServerMirrorFightModel>(); } }
-
protected override void Init()
{
- try
- {
- DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
+ DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
- playerInfo = new ArenaPlayerInfo();
- RobotName = Language.Get("ArenaRobotName");
- RankType = 28;
- SelectRewardType = 1;
- //////
- ScoreMin = GeneralDefine.ArenaSetList[0];
- ScoreMax = GeneralDefine.ArenaSetList[1];
+ playerInfo = new ArenaPlayerInfo();
+ RobotName = Language.Get("ArenaRobotName");
+ RankType = 28;
+ SelectRewardType = 1;
+ //////
+ ScoreMin = GeneralDefine.ArenaSetList[0];
+ ScoreMax = GeneralDefine.ArenaSetList[1];
- var fun = FuncConfigConfig.Get("ArenaSet");
- freeMaxMatchNum = int.Parse(fun.Numerical3);
- RecordMax = int.Parse(fun.Numerical4);
- freeRefreshPlayerMax = int.Parse(fun.Numerical5);
- ArenaManager.ParseAwardFuncConfig();
- ArenaManager.ParseItemJobSkill();
+ var fun = FuncConfigConfig.Get("ArenaSet");
+ freeMaxMatchNum = int.Parse(fun.Numerical3); //鍒濆鏈�澶ф鏁帮紝鏈堝崱绛変細鏀瑰彉
+ RecordMax = int.Parse(fun.Numerical4);
+ freeRefreshPlayerMax = int.Parse(fun.Numerical5);
+ ArenaManager.ParseAwardFuncConfig();
+ ArenaManager.ParseItemJobSkill();
- //r0锛屼唬琛ㄦ満鍣ㄤ汉鍙傛暟锛宺1,鐪熶汉 ,鍒濆鍖�
- List<int> r0 = new List<int>();
- List<int> r1 = new List<int>();
- for (int i = 0; i < 5; i++)
- r0.Add(i);
- for (int i = 0; i < 33; i++)
- r1.Add(i);
- ArenaManager.playInfo.Add(0, r0);
- ArenaManager.playInfo.Add(1, r1);
+ //r0锛屼唬琛ㄦ満鍣ㄤ汉鍙傛暟锛宺1,鐪熶汉 ,鍒濆鍖�
+ List<int> r0 = new List<int>();
+ List<int> r1 = new List<int>();
+ for (int i = 0; i < 5; i++)
+ r0.Add(i);
+ for (int i = 0; i < 33; i++)
+ r1.Add(i);
+ ArenaManager.playInfo.Add(0, r0);
+ ArenaManager.playInfo.Add(1, r1);
- //鑾峰彇鍓湰 娓告垙鏃堕棿,鍑嗗鏃堕棿,閫�鍑烘椂闂�
- dungeonModel.currentDungeon = new Dungeon(ArenaManager.MapID, 0);
- var dungeonId = dungeonModel.GetDungeonId(dungeonModel.currentDungeon);
- var dungeonConfig = DungeonConfig.Get(dungeonId);
- ArenaManagerModel.Instance.s_StepTimes = LitJson.JsonMapper.ToObject<int[]>(dungeonConfig.StepTime);
+ //鑾峰彇鍓湰 娓告垙鏃堕棿,鍑嗗鏃堕棿,閫�鍑烘椂闂�
+ dungeonModel.currentDungeon = new Dungeon(ArenaManager.MapID, 0);
+ var dungeonId = dungeonModel.GetDungeonId(dungeonModel.currentDungeon);
+ var dungeonConfig = DungeonConfig.Get(dungeonId);
+ ArenaManagerModel.Instance.s_StepTimes = LitJson.JsonMapper.ToObject<int[]>(dungeonConfig.StepTime);
- fun = FuncConfigConfig.Get("ArenaSet1");
- skipFightLV = int.Parse(fun.Numerical1);
- }
- catch (System.Exception ex)
+ //鑾峰彇鏈哄櫒浜虹瓑绾у搴旂殑鏁版嵁
+ var config = FuncConfigConfig.Get("ArenaRobotLVNPC");
+ JsonData json = JsonMapper.ToObject(config.Numerical1);
+ //{"50":80100000, "100":80100010, "9999":80100020}
+ var keys = json.Keys.ToList();
+ for (int i = 0; i < keys.Count; i++)
{
- OperationLogCollect.Instance.BugReportSys(ex.ToString());
- Debug.LogError(ex);
+ var key = keys[i];
+ lvToNpcDic[int.Parse(key)] = int.Parse(json[key].ToString());
}
}
@@ -188,7 +176,7 @@
public void CallUpdatePKInfo(int type)
{
if(UpdatePKInfoListEvent != null)
- UpdatePKInfoListEvent(1);
+ UpdatePKInfoListEvent(1);
}
public void FirstData()
{
@@ -241,12 +229,12 @@
#endregion
#region //鎺ユ敹鍛戒护
- public void ReceiveBattLePlayer(IL_HA926_tagGCArenaBattlePlayerInfo vNetData)
+ public void ReceiveBattLePlayer(HA926_tagGCArenaBattlePlayerInfo vNetData)
{
UpdateBattlePlayerEvent?.Invoke(vNetData);
}
//绔炴妧鍦哄尮閰嶇帺瀹跺垪琛�
- public void ReceiveMatchData(IL_HA922_tagGCArenaMatchList vNetData)
+ public void ReceiveMatchData(HA922_tagGCArenaMatchList vNetData)
{
pkList = vNetData;
if (UpdateMatchUserEvent != null)
@@ -256,7 +244,7 @@
}
// 绔炴妧鍦哄鎴樿褰曞垪琛�
- public void ReceiveBattleRecordList(IL_HA923_tagGCArenaBattleRecordList vNetData)
+ public void ReceiveBattleRecordList(HA923_tagGCArenaBattleRecordList vNetData)
{
string nameStr = "";
string inputString = LocalSave.GetString("MatchInfoPlayerIDALL"+PlayerDatas.Instance.PlayerId);
@@ -286,8 +274,8 @@
else
{
nameStr = vNetData.BattleRecordList[i].PlayerName;
- SysNotifyMgr.Instance.ShowTip("ArenaFightPlayer", nameStr.Trim().Replace("\0", ""));
}
+ //SysNotifyMgr.Instance.ShowTip("ArenaFightPlayer", nameStr.Trim().Replace("\0", ""));
bCheckRedPoint = true;
UpdateRedPoint();
@@ -328,6 +316,8 @@
public void FakeMatchOk()
{
PlayerDatas.Instance.hero.Pos = ArenaManagerModel.leftBornPoint;
+ CameraController.Instance.rotationX = 45;
+ CameraController.Instance.Apply();
PlayerDatas.Instance.hero.EulerAngles = 90;
//寮烘潃锛屽啀杩涘叆
if (m_PlayerInfo.Count <= 0 || ArenaModel.Instance.SelectMatchPlayer == 5)
@@ -335,7 +325,7 @@
SelectMatchPlayer = LocalSave.GetInt("MatchInfoSelect");
for (int i = 0; i < 6; i++) //绗�6涓斁浠庢寫鎴樿褰曢噷鐨勬暟鎹�
{
- IL_HA922_tagGCArenaMatchList.tagGCArenaMatchInfo playerInfo = new IL_HA922_tagGCArenaMatchList.tagGCArenaMatchInfo();
+ HA922_tagGCArenaMatchList.tagGCArenaMatchInfo playerInfo = new HA922_tagGCArenaMatchList.tagGCArenaMatchInfo();
playerInfo.PlayerID = (uint)LocalSave.GetInt("MatchInfoPlayerID");
playerInfo.PlayerName = LocalSave.GetString("MatchInfoPlayerName");
playerInfo.Job = (byte)LocalSave.GetInt("MatchInfoJob");
@@ -369,18 +359,16 @@
autoEnsureTime = Time.time + 3f,
myName = PlayerDatas.Instance.baseData.PlayerName,
myJob = PlayerDatas.Instance.baseData.Job,
- myFace = AvatarHelper.GetMyAvatarID(),
- myFacePic = AvatarHelper.GetMyAvatarID(),
+ myFace = PlayerDatas.Instance.baseData.face,
myBornPoint = myPlace,
opponentName = opponentName,
opponentJob = m_PlayerInfo[SelectMatchPlayer].Job,
- opponentFace = (int)m_PlayerInfo[SelectMatchPlayer].Face,
- opponentFacePic = (int)m_PlayerInfo[SelectMatchPlayer].FacePic,
opponentMaxHp = (ulong)GetLevel((int)m_PlayerInfo[SelectMatchPlayer].LV, 1),
opponentLevel = (int)m_PlayerInfo[SelectMatchPlayer].LV,
opponentPlayerId = (int)m_PlayerInfo[SelectMatchPlayer].PlayerID,
opponentShield = GetLevel((int)m_PlayerInfo[SelectMatchPlayer].LV, 3),
- MaxProDef = GetLevel((int)m_PlayerInfo[SelectMatchPlayer].LV, 3),
+ opponentFace = (int)m_PlayerInfo[SelectMatchPlayer].Face,
+ MaxProDef = 100,
realmLV = realm,
};
ArenaManager.myName = PlayerDatas.Instance.baseData.PlayerName;
@@ -392,7 +380,6 @@
{
ArenaModel.Instance.IsArenaWork = false;
ArenaManager.isArenaClient = true;
- ArenaManagerModel.isMirrorFight = false;
DebugEx.Log("ArenaManager.isArenaClient");
//寮�濮嬭嚜瀹氫箟鍦烘櫙
var sendInfo = new CA231_tagCMClientStartCustomScene();
@@ -467,15 +454,9 @@
IsArenaWork = false;
ArenaManager.isArenaClient = false;
ArenaManager.isArenaPK = false;
- PlayerDatas.Instance.extersion.pkState = 0;
- if (ArenaManagerModel.isMirrorFight)
- {
- dungeonModel.ExitCurrentDungeon();
- return;
- }
-
ArenaManagerModel.Instance.ReleasePlayer();
ClientDungeonStageUtility.SetClientDungeon(false, 0);
+ PlayerDatas.Instance.extersion.pkState = 0;
ModelCenter.Instance.GetModel<DungeonModel>().ResetBufData();
PersonalEnemy.ReleaseAll();
PlayerDatas.Instance.baseData.MapID = PlayerDatas.Instance.baseData.mainServerMapIdRecord;
@@ -546,97 +527,57 @@
public void BeginRecordBattle()
{
- IL_HA923_tagGCArenaBattleRecordList.tagGCArenaBattleRecord record = ArenaModel.Instance.ArenaBattleRecordList[ArenaModel.Instance.currentRecordIndex];
-
if (ArenaModel.Instance.playerInfo.GetDayMatchCount() > 0)
- {
- if (isSkipFightChoose)
+ {
+ HA923_tagGCArenaBattleRecordList.tagGCArenaBattleRecord record = ArenaModel.Instance.ArenaBattleRecordList[ArenaModel.Instance.currentRecordIndex];
+ //int tmp = 5;
+ //ArenaModel.Instance.SelectMatchPlayer = tmp; //褰撳墠閫夋嫨鐨勭敤鎴�
+ //HA922_tagGCArenaMatchList.tagGCArenaMatchInfo tmper = new HA922_tagGCArenaMatchList.tagGCArenaMatchInfo();
+ //tmper.PlayerID = record.PlayerID;
+ //if (record.PlayerID < 10000)
+ //{
+ // tmper.PlayerName = ArenaModel.Instance.RobotName;
+ //}
+ //else
+ //{
+ // tmper.PlayerName = record.PlayerName;
+ //}
+
+ //tmper.Job = record.Job;
+ //tmper.LV = record.LV;
+ //tmper.RealmLV = record.RealmLV;
+ //tmper.FightPower = record.FightPower;
+ //tmper.Score = record.Score;
+
+ ////淇濊瘉寮烘潃锛岄噸鏂拌繘鍏ュ満鏅紝鏈夋暟鎹�
+ //ArenaModel.Instance.m_PlayerInfo[tmp] = tmper;
+ //ArenaModel.Instance.bFirstStageLoadCheck = true;
+ //LocalSave.SetInt("MatchInfoSelect", tmp);
+ //LocalSave.SetInt("MatchInfoPlayerID", (int)ArenaModel.Instance.m_PlayerInfo[tmp].PlayerID);
+ //LocalSave.SetString("MatchInfoPlayerName", ArenaModel.Instance.m_PlayerInfo[tmp].PlayerName);
+ //LocalSave.SetInt("MatchInfoJob", ArenaModel.Instance.m_PlayerInfo[tmp].Job);
+ //LocalSave.SetInt("MatchInfoLV", (int)ArenaModel.Instance.m_PlayerInfo[tmp].LV);
+ //LocalSave.SetInt("MatchInfoRealmLV", (int)ArenaModel.Instance.m_PlayerInfo[tmp].RealmLV);
+ //LocalSave.SetInt("MatchInfoFightPower", (int)ArenaModel.Instance.m_PlayerInfo[tmp].FightPower);
+ //LocalSave.SetInt("MatchInfoScore", (int)ArenaModel.Instance.m_PlayerInfo[tmp].Score);
+ //LocalSave.SetInt("ArenaAllSeconds", TimeUtility.AllSeconds);
+
+ //LocalSave.SetString("MatchInfoPlayerFightNow" + PlayerDatas.Instance.PlayerId, record.Time.ToString());
+
+ //ArenaModel.Instance.StartClientArena();
+ //WindowCenter.Instance.CloseIL<ArenaRecordWin>();
+ int playerID = (int)record.PlayerID;
+
+ if (playerID < 10000)
{
- var tmpPlayer = record;
- uint PlayerID = tmpPlayer.PlayerID;
- //ArenaManager.isArenaClient = true;
- SendArenaBattle(PlayerID, 0);
- LocalSave.SetString("MatchInfoPlayerFightNow" + PlayerDatas.Instance.PlayerId, record.Time.ToString());
-
- if (PlayerID > 10000)
- {
- mirrorFightModel.SendMirrorFight(ArenaManager.MapID, 0, PlayerID, 3);
- }
- else
- {
- Clock.AlarmAfter(0.2, () =>
- {
- ulong fightpower = 0;
- if (record.PlayerID < 10000)
- {
- fightpower = (uint)GetLevel(record.LV, 2); //fight
- }
- else
- {
-
- fightpower = record.FightPowerEx * Constants.ExpPointValue + record.FightPower;
- }
- SendArenaBattle(PlayerID, (byte)(PlayerDatas.Instance.baseData.FightPoint >= fightpower ? 1 : 2));
-
- if (PlayerDatas.Instance.baseData.FightPoint >= fightpower)
- {
- string MatchInfoPlayerFightNow = LocalSave.GetString("MatchInfoPlayerFightNow" + PlayerDatas.Instance.PlayerId);
- if (MatchInfoPlayerFightNow != "")
- {
- string inputString = LocalSave.GetString("MatchInfoPlayerFight" + PlayerDatas.Instance.PlayerId);
- inputString = StringUtility.Contact(inputString, "|", MatchInfoPlayerFightNow);
- LocalSave.SetString("MatchInfoPlayerFight" + PlayerDatas.Instance.PlayerId, inputString);
- }
- }
- LocalSave.SetString("MatchInfoPlayerFightNow" + PlayerDatas.Instance.PlayerId, "");
- });
- }
- return;
- }
- int tmp = 5;
- ArenaModel.Instance.SelectMatchPlayer = tmp; //褰撳墠閫夋嫨鐨勭敤鎴�
- IL_HA922_tagGCArenaMatchList.tagGCArenaMatchInfo tmper = new IL_HA922_tagGCArenaMatchList.tagGCArenaMatchInfo();
- tmper.PlayerID = record.PlayerID;
- if (record.PlayerID < 10000)
- {
- tmper.PlayerName = ArenaModel.Instance.RobotName;
- }
- else
- {
- tmper.PlayerName = record.PlayerName;
- }
-
- tmper.Job = record.Job;
- tmper.LV = record.LV;
- tmper.RealmLV = record.RealmLV;
- tmper.FightPower = record.FightPower;
- tmper.Score = record.Score;
-
- //淇濊瘉寮烘潃锛岄噸鏂拌繘鍏ュ満鏅紝鏈夋暟鎹�
- ArenaModel.Instance.m_PlayerInfo[tmp] = tmper;
- ArenaModel.Instance.bFirstStageLoadCheck = true;
- LocalSave.SetInt("MatchInfoSelect", tmp);
- LocalSave.SetInt("MatchInfoPlayerID", (int)ArenaModel.Instance.m_PlayerInfo[tmp].PlayerID);
- LocalSave.SetString("MatchInfoPlayerName", ArenaModel.Instance.m_PlayerInfo[tmp].PlayerName);
- LocalSave.SetInt("MatchInfoJob", ArenaModel.Instance.m_PlayerInfo[tmp].Job);
- LocalSave.SetInt("MatchInfoLV", (int)ArenaModel.Instance.m_PlayerInfo[tmp].LV);
- LocalSave.SetInt("MatchInfoRealmLV", (int)ArenaModel.Instance.m_PlayerInfo[tmp].RealmLV);
- LocalSave.SetInt("MatchInfoFightPower", (int)ArenaModel.Instance.m_PlayerInfo[tmp].FightPower);
- LocalSave.SetInt("MatchInfoScore", (int)ArenaModel.Instance.m_PlayerInfo[tmp].Score);
- LocalSave.SetInt("ArenaAllSeconds", TimeUtility.AllSeconds);
-
- LocalSave.SetString("MatchInfoPlayerFightNow" + PlayerDatas.Instance.PlayerId, record.Time.ToString());
-
- if (tmper.PlayerID > 10000)
- {
- mirrorFightModel.SendMirrorFight(ArenaManager.MapID, 0, tmper.PlayerID, 0);
+ int npcID = GetLVToNPCID(record.LV);
+ TurnFightModel.Instance.StartTurnFight(ArenaManager.MapID, 0, 0, npcID, new uint[1] { (uint)playerID });
}
else
{
- ArenaModel.Instance.StartClientArena();
- }
- WindowCenter.Instance.CloseIL<ArenaRecordWin>();
+ TurnFightModel.Instance.StartTurnFight(ArenaManager.MapID, 0, 1, playerID, new uint[1] { (uint)playerID });
+ }
}
else
{
@@ -644,6 +585,23 @@
}
}
+ //鏍规嵁绛夌骇鍖烘瀵圭敤npcid
+ public int GetLVToNPCID(int lv)
+ {
+ int npcID = 0;
+ var keys = lvToNpcDic.Keys.ToList();
+ keys.Sort();
+ for (int i = 0; i < keys.Count; i++)
+ {
+ if (lv <= keys[i])
+ {
+ npcID = lvToNpcDic[keys[i]];
+ break;
+ }
+ }
+ return npcID;
+ }
+
public struct FightResultSupplement
{
--
Gitblit v1.8.0