using LitJson;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
|
namespace vnxbqy.UI
|
{
|
public class LianQiActModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk, IOpenServerActivity
|
{
|
public OperationLianQiCross operationCrossAct = null;
|
public static Operation operaTypeCross = Operation.default51;
|
public static int crossRankType = 166; //¿ç·þ¸öÈËÅÅÐÐ
|
|
public HAA91_tagMCActLianqiPlayerInfo lastPlayerInfo = null;
|
public HAA91_tagMCActLianqiPlayerInfo nowPlayerInfo = null;
|
public int[][] nowGridData;
|
public int[][] lastGridData;
|
|
//<½±ÀøµÈ¼¶£¬½±ÀøÁбí>
|
public Dictionary<int, List<Item>> correspondingRewards = new Dictionary<int, List<Item>>();
|
|
//<ÎïÆ·ID,µ¥¾ÖʹÓôÎÊý>
|
public Dictionary<int, int> limitUsesToolCntDict = new Dictionary<int, int>();
|
|
public int[] assistiveItemArr;
|
|
//¾ÅÌìÔÉÌúµÀ¾ßÏÞÖÆx½×ÒÔÏÂ
|
public int jiuTianYunTieLevelLimit;
|
|
public int maxEnergy;
|
public int rSecond;
|
|
public bool isWaitReStart = false;
|
public bool isPause = false;
|
|
public bool isUseTool = false;
|
|
//1 ÆÆÌì´¸ 2 Ô컯ÁéÓñ 3 ¾ÅÌìÔÉÌú 4 ¸Ê¶ÏÉÒº
|
public int nowAssistiveItemNum = 0;
|
|
public int nowAssistiveItemId;
|
|
public bool isStartChoose = false;
|
public bool isChoose1 = false;
|
public int useRow1;
|
public int useCol1;
|
public bool isChoose2 = false;
|
public int useRow2;
|
public int useCol2;
|
public bool isPlayAssistiveItemAnimation;
|
|
public bool isSkip1 = false;
|
public bool isSkip2 = false;
|
public bool isSkip3 = false;
|
public bool isSkip4 = false;
|
|
public readonly int MaxItemLv = 11;//×î´óºÏ³ÉÎïµÈ¼¶
|
public readonly int MaxGridRows = 4;
|
public readonly int MaxGridCols = 4;
|
public readonly int MaxGridCount = 16;
|
|
Redpoint parentRedpoint = new Redpoint(MainRedDot.LianQiRepoint);
|
//Redpoint rankRedpoint = new Redpoint(MainRedDot.LianQiRepoint, MainRedDot.LianQiRepoint * 10 + 1);
|
//Redpoint AwardRedpoint = new Redpoint(MainRedDot.LianQiRepoint, MainRedDot.LianQiRepoint * 10 + 2);
|
|
int regesitCrossType = (int)NewDayActivityID.LianQiActCross;
|
public bool IsOpen
|
{
|
get
|
{
|
return OperationTimeHepler.Instance.SatisfyOpenCondition(operaTypeCross, ILTimeUtility.ServerCrossNow);
|
}
|
}
|
|
//ÊÇ·ñ²ÎÓë»î¶¯Ê±¼ä£¬ÓÉ¿ç·þ·â°ü¾ö¶¨£¬ÒÔ¿ç·þʱ¼äΪ׼
|
public bool IsJoin
|
{
|
get
|
{
|
return OperationTimeHepler.Instance.SatisfyJoinCondition(operaTypeCross, ILTimeUtility.ServerCrossNow);
|
}
|
}
|
|
public bool IsPrepareTime
|
{
|
get
|
{
|
if (!IsOpen) return false;
|
return OperationTimeHepler.Instance.IsPrepareTime(operaTypeCross, ILTimeUtility.ServerCrossNow);
|
}
|
}
|
|
//ÊÇ·ñչʾ½á¹ûʱ¼ä, ÒÔ¿ç·þʱ¼äΪ׼(ǰÌáΪÒÔÅжÏÊǻÖÐ)
|
public bool IsResultShowTime
|
{
|
get
|
{
|
if (operationCrossAct == null)
|
return false;
|
return operationCrossAct.IsShowResultTime();
|
}
|
}
|
|
public bool IsAdvance
|
{
|
get
|
{
|
return false;
|
}
|
}
|
|
public bool priorityOpen
|
{
|
get
|
{
|
return false;
|
}
|
}
|
|
public event Action OnLianqiPlayerInfoAction;
|
public event Action OnPlayerInfo;
|
public Action<int, Vector3> OnDisplayItemInfoAction;
|
public event Action<int> onStateUpdate;
|
public byte actNum; //¶ÔÓ¦½çÃæ
|
public int actScore { get; protected set; } //µ±Ç°»î¶¯»ý·Ö£¬ÓÃÓÚÅÅÐаñºÍÕ½Áî½âËø
|
|
//ÅÅÐаñÃû´ÎÐÅÏ¢
|
private int m_SelectRank = 0;
|
|
public int SelectRank
|
{
|
get { return m_SelectRank; }
|
set
|
{
|
m_SelectRank = value;
|
}
|
}
|
|
//ÅÅÐаñ½±ÀøÐÅÏ¢
|
private int m_SelectAwardRank = 0;
|
|
public int SelectAwardRank
|
{
|
get { return m_SelectAwardRank; }
|
set
|
{
|
m_SelectAwardRank = value;
|
}
|
}
|
|
//²éѯµÚÒ»ÃûÐÅÏ¢£¬½çÃæ¿ìËÙÇл»²éѯ»Ø°üºÍ½çÃæ²»Ò»Ö Ðè¶à¸öID¼Ç¼
|
public int no1PlayerID = 0;
|
|
public int no1PlayerIDCross = 0;
|
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
public override void Init()
|
{
|
OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
|
OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
|
|
OpenServerActivityCenter.Instance.Register(regesitCrossType, this, (int)OpenServerActivityCenter.ActivityType.AT_Activity2);
|
|
OperationTimeHepler.Instance.operationTimeUpdateEvent += operationTimeUpdateEvent;
|
RedpointCenter.Instance.redpointValueChangeEvent += OnRedpointChange;
|
maxEnergy = int.Parse(FuncConfigConfig.Get("LianqiSet").Numerical1);
|
rSecond = int.Parse(FuncConfigConfig.Get("LianqiSet").Numerical2);
|
var jsonData = JsonMapper.ToObject(FuncConfigConfig.Get("LianqiSet").Numerical3);
|
var keyList = jsonData.Keys.ToList();
|
for (int i = 0; i < keyList.Count; i++)
|
{
|
int rewardLv = int.Parse(keyList[i]);
|
var value = JsonMapper.ToObject<int[][]>(jsonData[keyList[i]].ToJson());
|
if (!correspondingRewards.ContainsKey(rewardLv))
|
correspondingRewards[rewardLv] = new List<Item>();
|
for (int j = 0; j < value.Length; j++)
|
{
|
correspondingRewards[rewardLv].Add(new Item(value[j][0], value[j][1]));
|
}
|
}
|
assistiveItemArr = JsonMapper.ToObject<int[]>(FuncConfigConfig.Get("LianqiUseItem").Numerical1);
|
|
jsonData = JsonMapper.ToObject(FuncConfigConfig.Get("LianqiUseItem").Numerical2);
|
keyList = jsonData.Keys.ToList();
|
for (int i = 0; i < keyList.Count; i++)
|
{
|
int itemId = int.Parse(keyList[i]);
|
limitUsesToolCntDict[itemId] = int.Parse(jsonData[keyList[i]].ToJson());
|
}
|
jiuTianYunTieLevelLimit = int.Parse(FuncConfigConfig.Get("LianqiUseItem").Numerical3);
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
operationCrossAct = null;
|
actScore = 0;
|
no1PlayerID = 0;
|
no1PlayerIDCross = 0;
|
isSkip1 = false;
|
isSkip2 = false;
|
isSkip3 = false;
|
isSkip4 = false;
|
}
|
|
public void OnPlayerLoginOk()
|
{
|
UpdateRedpoint();
|
}
|
|
public override void UnInit()
|
{
|
OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
|
OperationTimeHepler.Instance.operationEndEvent -= OperationEndEvent;
|
|
OperationTimeHepler.Instance.operationTimeUpdateEvent -= operationTimeUpdateEvent;
|
RedpointCenter.Instance.redpointValueChangeEvent -= OnRedpointChange;
|
}
|
|
private void OnRedpointChange(int id)
|
{
|
if (id == MainRedDot.RankActRepoint)
|
{
|
parentRedpoint.state = RedpointCenter.Instance.GetRedpointState(MainRedDot.RankActRepoint);
|
}
|
}
|
|
private void OperationEndEvent(Operation operationType, int state)
|
{
|
if (operationType == operaTypeCross && state == 0)
|
{
|
if (onStateUpdate != null)
|
{
|
onStateUpdate(regesitCrossType);
|
}
|
WindowCenter.Instance.Close<PetHorseActWin>();
|
}
|
}
|
|
private void OperationStartEvent(Operation operationType, int state)
|
{
|
if (operationType == operaTypeCross && state == 0)
|
{
|
if (onStateUpdate != null)
|
{
|
onStateUpdate(regesitCrossType);
|
}
|
}
|
}
|
|
private void operationTimeUpdateEvent(Operation obj)
|
{
|
if (obj != operaTypeCross)
|
return;
|
|
OperationBase operationBase1;
|
if (OperationTimeHepler.Instance.TryGetOperationTime(operaTypeCross, out operationBase1))
|
{
|
operationCrossAct = operationBase1 as OperationLianQiCross;
|
}
|
|
if (operationCrossAct != null)
|
UpdateRedpoint();
|
WindowCenter.Instance.Close<LianQiRankWin>();
|
}
|
|
private void UpdateRedpoint()
|
{
|
}
|
|
//»ñÈ¡ÅÅÐаñÅÅÃû¶ÔÓ¦µÄ½±ÀøÊý¾ÝÅäÖÃÃû´Î
|
public int GetRankDataIndex(int rank, Dictionary<int, ActBillboardAwards> rankInfo)
|
{
|
rank += 1;
|
var keys = rankInfo.Keys.ToList();
|
keys.Sort();
|
for (int i = 0; i < keys.Count; i++)
|
{
|
if (rank <= keys[i])
|
{
|
return keys[i];
|
}
|
}
|
return -1;
|
}
|
|
public int GetPlayerId(RankData rankData)
|
{
|
// ¼ì²éÊäÈëÊý¾ÝÊÇ·ñΪ¿Õ
|
if (rankData == null)
|
return 0;
|
|
// ¸ù¾Ý SelectRank µÄֵѡÔñ¶ÔÓ¦µÄ ID
|
switch (SelectRank)
|
{
|
case 0:
|
case 1:
|
return (int)rankData.id;
|
|
case 2:
|
return (int)rankData.id2;
|
|
default:
|
return 0;
|
}
|
}
|
|
//»ñµÃÒÑʹÓø¨ÖúÎïÆ·¸öÊý
|
public int GetUseItemCnt(ushort[] UseItemCntList, int nowAssistiveItemNum)
|
{
|
if (nowAssistiveItemNum < 1 || nowAssistiveItemNum > 4)
|
return 0;
|
if (UseItemCntList.IsNullOrEmpty() || UseItemCntList.Length != 4)
|
return 0;
|
return UseItemCntList[Mathf.Max(0, nowAssistiveItemNum - 1)];
|
}
|
|
//0 ²»¿ÉÁìÈ¡ 1 ¿ÉÁìÈ¡ 2 ÒÑÁìÈ¡
|
public int GetAwardState(int awardLv, int lvAwardState, int lvAwardMax)
|
{
|
if (lvAwardMax >= awardLv)
|
return ((int)Math.Pow(2, awardLv) & lvAwardState) == 0 ? 1 : 2;
|
return 0;
|
}
|
|
public bool TryGetCompositeItemInfoByAwardLv(int awardLv, out LianQiCompositeItemInfo lianQiCompositeItemInfo)
|
{
|
lianQiCompositeItemInfo = new LianQiCompositeItemInfo();
|
|
string iconStr = StringUtility.Contact("LianQiCompositeItemIcon", "_", awardLv);
|
if (!IconConfig.Has(iconStr))
|
{
|
DebugEx.LogWarning($"ûÓÐÅäÖÃI.Icon±íÖÐLianQiCompositeItemIcon_{awardLv}Ïî");
|
return false;
|
}
|
lianQiCompositeItemInfo.Icon = iconStr;
|
|
string nameStr = StringUtility.Contact("LianQiCompositeItemName", "_", awardLv);
|
if (!LanguageConfig.Has(StringUtility.Contact("LianQiCompositeItemName", "_", awardLv)))
|
{
|
DebugEx.LogWarning($"ûÓÐÅäÖÃY.ÓïÑÔ±íÖÐLianQiCompositeItemName_{awardLv}Ïî");
|
return false;
|
}
|
lianQiCompositeItemInfo.Name = Language.Get(nameStr);
|
|
string descriptionStr = StringUtility.Contact("LianQiCompositeItemDescription", "_", awardLv);
|
if (!LanguageConfig.Has(StringUtility.Contact("LianQiCompositeItemDescription", "_", awardLv)))
|
{
|
DebugEx.LogWarning($"ûÓÐÅäÖÃY.ÓïÑÔ±íÖÐLianQiCompositeItemDescription_{awardLv}Ïî");
|
return false;
|
}
|
lianQiCompositeItemInfo.Description = Language.Get(descriptionStr);
|
|
return true;
|
}
|
|
public void SetActive(Component compoent, bool active)
|
{
|
if (compoent != null)
|
{
|
if (active && !compoent.gameObject.activeSelf)
|
{
|
compoent.gameObject.SetActive(true);
|
}
|
else if (!active && compoent.gameObject.activeSelf)
|
{
|
compoent.gameObject.SetActive(false);
|
}
|
}
|
}
|
|
public void SetSprite(ImageEx compoent, int awardLv)
|
{
|
if (compoent != null)
|
{
|
if (awardLv > 0)
|
{
|
SetActive(compoent, true);
|
compoent.SetSprite(StringUtility.Contact("LianQiCompositeItemIcon", "_", awardLv));
|
}
|
else
|
{
|
SetActive(compoent, false);
|
}
|
}
|
}
|
|
public void SetTextLv(TextEx compoent, int awardLv)
|
{
|
if (compoent != null)
|
{
|
if (awardLv > 0)
|
{
|
SetActive(compoent, true);
|
compoent.text = awardLv.ToString();
|
}
|
else
|
{
|
SetActive(compoent, false);
|
}
|
}
|
}
|
|
public bool IsEnergyEnough(int energy)
|
{
|
return energy > 0;
|
}
|
|
public void UpdateActLianqiPlayerInfo(HAA91_tagMCActLianqiPlayerInfo pack)
|
{
|
lastPlayerInfo = nowPlayerInfo;
|
nowPlayerInfo = pack;
|
lastGridData = nowGridData;
|
actScore = (int)pack.ScoreHighest;
|
nowGridData = JsonMapper.ToObject<int[][]>(pack.GridData);
|
|
if (pack.OPType == 1 || pack.OPType == 3)
|
{
|
isPause = false;
|
}
|
else if (pack.OPType == 2 && nowAssistiveItemNum != 4)
|
{
|
isPause = false;
|
}
|
|
if (pack.OPType == 3)
|
{
|
isWaitReStart = false;
|
}
|
OnLianqiPlayerInfoAction?.Invoke();
|
}
|
|
//ÆåÅÌÉÏÓжàÉÙÆå×Ó
|
public int PieceCount(int[][] board)
|
{
|
if (board.IsNullOrEmpty())
|
return 0;
|
int count = 0;
|
for (int i = 0; i < MaxGridRows; i++)
|
{
|
for (int j = 0; j < MaxGridCols; j++)
|
{
|
if (board[i][j] > 0)
|
{
|
count += 1;
|
}
|
}
|
}
|
return count;
|
}
|
|
//¼ì²éÏòij¸ö·½ÏòÊÇ·ñ¿ÉÒÆ¶¯
|
public bool IsCanMove(int[][] board, int direction)
|
{
|
if (board.IsNullOrEmpty())
|
return false;
|
|
switch (direction)
|
{
|
case 1: // ÏòÉÏ
|
for (int i = 1; i < MaxGridRows; i++)
|
{
|
for (int j = 0; j < MaxGridCols; j++)
|
{
|
if (board[i][j] != 0 && (board[i - 1][j] == 0 || board[i][j] == board[i - 1][j]) || board[i][j] < MaxItemLv)
|
{
|
return true;
|
}
|
}
|
}
|
break;
|
|
case 2: // ÏòÏÂ
|
for (int i = 0; i < MaxGridRows - 1; i++)
|
{
|
for (int j = 0; j < MaxGridCols; j++)
|
{
|
if (board[i][j] != 0 && (board[i + 1][j] == 0 || board[i][j] == board[i + 1][j]) || board[i][j] < MaxItemLv)
|
{
|
return true;
|
}
|
}
|
}
|
break;
|
|
case 3: // Ïò×ó
|
for (int i = 0; i < MaxGridRows; i++)
|
{
|
for (int j = 1; j < MaxGridCols; j++)
|
{
|
if (board[i][j] != 0 && (board[i][j - 1] == 0 || board[i][j] == board[i][j - 1]) || board[i][j] < MaxItemLv)
|
{
|
return true;
|
}
|
}
|
}
|
break;
|
|
case 4: // ÏòÓÒ
|
for (int i = 0; i < MaxGridRows; i++)
|
{
|
for (int j = 0; j < MaxGridCols - 1; j++)
|
{
|
if (board[i][j] != 0 && (board[i][j + 1] == 0 || board[i][j] == board[i][j + 1]) || board[i][j] < MaxItemLv)
|
{
|
return true;
|
}
|
}
|
}
|
break;
|
}
|
|
return false; // Ö¸¶¨·½ÏòÎÞ·¨Òƶ¯»òºÏ³É
|
}
|
|
//¼ì²éÓÎÏ·ÊÇ·ñ½©¾Ö
|
public bool IsDeadLock(int[][] board)
|
{
|
// ¼ì²éÊÇ·ñÓпոñ Óпոñ¾ÍÄÜÒÆ¶¯
|
for (int i = 0; i < MaxGridRows; i++)
|
{
|
for (int j = 0; j < MaxGridCols; j++)
|
{
|
if (board[i][j] == 0)
|
{
|
return false;
|
}
|
}
|
}
|
|
// ¼ì²éÊÇ·ñÓÐÏàÁÚµÄÏàͬÊýÖµµÄ¸ñ×Ó
|
for (int i = 0; i < 4; i++)
|
{
|
for (int j = 0; j < 4; j++)
|
{
|
// ¼ì²éÓÒ·½ºÍÏ·½£¬±ÜÃâÖØ¸´¼ì²â
|
if (j < 3 && board[i][j] == board[i][j + 1]) // ºáÏòÏàÁÚ
|
{
|
if (board[i][j] < MaxItemLv)
|
{
|
return false;
|
}
|
}
|
if (i < 3 && board[i][j] == board[i + 1][j]) // ×ÝÏòÏàÁÚ
|
{
|
if (board[i][j] < MaxItemLv)
|
{
|
return false;
|
}
|
}
|
}
|
}
|
|
return true;
|
}
|
|
//direction 1ÉÏ2ÏÂ3×ó4ÓÒ
|
public void SendMoveOP(int direction)
|
{
|
SendAA25LianqiOP(1, direction, 0, 0);
|
}
|
|
public void SendUseOP(int useCount, int useItemIndex, int valueARow, int valueALine, int valueBRow = 0, int valueBLine = 0)
|
{
|
int value1 = useCount * 10 + useItemIndex;
|
int value2 = valueARow * 10 + valueALine;
|
int value3 = valueBRow * 10 + valueBLine;
|
SendAA25LianqiOP(2, value1, value2, value3);
|
}
|
|
public void SendRestartOP()
|
{
|
SendAA25LianqiOP(3, 0, 0, 0);
|
}
|
|
public void SendHaveAward(int awardLv)
|
{
|
SendAA25LianqiOP(4, awardLv, 0, 0);
|
}
|
|
public void ClaimReward()
|
{
|
if (nowPlayerInfo == null)
|
return;
|
if (correspondingRewards == null)
|
return;
|
var arr = correspondingRewards.Keys.ToArray();
|
for (int i = 0; i < arr.Length; i++)
|
{
|
int rewardLv = arr[i];
|
//0 ²»¿ÉÁìÈ¡ 1 ¿ÉÁìÈ¡ 2 ÒÑÁìÈ¡
|
int state = GetAwardState(rewardLv, (int)nowPlayerInfo.LVAwardState, (int)nowPlayerInfo.LVAwardMax);
|
if (state == 1)
|
{
|
SendHaveAward(rewardLv);
|
}
|
}
|
}
|
|
public int RewardJumpIndex()
|
{
|
if (nowPlayerInfo == null)
|
return 0;
|
if (correspondingRewards == null)
|
return 0;
|
|
var arr = correspondingRewards.Keys.ToArray();
|
int lastNonClaimedIndex = -1;
|
|
for (int i = 0; i < arr.Length; i++)
|
{
|
int rewardLv = arr[i];
|
//0 ²»¿ÉÁìÈ¡ 1 ¿ÉÁìÈ¡ 2 ÒÑÁìÈ¡
|
int state = GetAwardState(rewardLv, (int)nowPlayerInfo.LVAwardState, (int)nowPlayerInfo.LVAwardMax);
|
if (state != 2)
|
{
|
return i;
|
}
|
else
|
{
|
lastNonClaimedIndex = i;
|
}
|
}
|
|
// Èç¹ûËùÓн±Àø¶¼ÒÑÁìÈ¡£¬·µ»Ø×îºóÒ»¸ö½±ÀøµÄË÷Òý
|
return lastNonClaimedIndex >= 0 ? lastNonClaimedIndex : 0;
|
}
|
|
public bool IsCanSendUseItem()
|
{
|
if (!IsJoin)
|
{
|
SysNotifyMgr.Instance.ShowTip("ActionUnOpen1");
|
return false;
|
}
|
|
int itemID = nowAssistiveItemId;
|
int num = nowAssistiveItemNum;
|
|
//µÀ¾ßÊýÁ¿²»×ã
|
if (packModel.GetItemCountByID(PackType.Item, itemID) <= 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("LianQiAct02");
|
return false;
|
}
|
|
//¸ÃµÀ¾ß¸Ã¾ÖÒÑ´ïʹÓôÎÊýÉÏÏÞ
|
if (!limitUsesToolCntDict.TryGetValue(itemID, out int cnt))
|
return false;
|
int useItemCnt = GetUseItemCnt(nowPlayerInfo.UseItemCntList, num);
|
if (useItemCnt >= cnt)
|
{
|
SysNotifyMgr.Instance.ShowTip("LianQiAct03");
|
return false;
|
}
|
|
if (nowAssistiveItemNum == 1)
|
{
|
//ÆåÅÌÉÏÖ»ÓÐÒ»¸öÎïÆ·Ê±£¬ÎÞ·¨´Ý»Ù
|
if (PieceCount(nowGridData) <= 1)
|
{
|
SysNotifyMgr.Instance.ShowTip("LianQiAct06");
|
return false;
|
}
|
}
|
else if (nowAssistiveItemNum == 2)
|
{
|
//ÆåÅÌÉÏÖ»ÓÐÒ»¸öÎïÆ·Ê±£¬ÎÞ·¨½»»»
|
if (PieceCount(nowGridData) <= 1)
|
{
|
SysNotifyMgr.Instance.ShowTip("LianQiAct08");
|
return false;
|
}
|
}
|
else if (nowAssistiveItemNum == 4)
|
{
|
//ÌåÁ¦ÖµÒÑÂú£¬ÎÞ·¨Ôö¼ÓÌåÁ¦
|
if (nowPlayerInfo.Energy >= maxEnergy)
|
{
|
SysNotifyMgr.Instance.ShowTip("LianQiAct05");
|
return false;
|
}
|
}
|
|
|
return true;
|
}
|
|
private void SendAA25LianqiOP(int type, int value1, int value2, int value3)
|
{
|
CAA25_tagCMActLianqiOP pack = new CAA25_tagCMActLianqiOP();
|
pack.OPType = (byte)type;
|
pack.OPValue = (uint)value1;
|
pack.OPValue2 = (uint)value2;
|
pack.OPValue3 = (uint)value3;
|
GameNetSystem.Instance.SendInfo(pack);
|
}
|
}
|
|
public class LianQiCompositeItemInfo
|
{
|
public int AwardLv;
|
public string Name;
|
public string Icon;
|
public string Description;
|
}
|
}
|