using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using TableConfig;
|
|
namespace Snxxz.UI
|
{
|
public class JadeDynastyTowerModel : Model, IPlayerLoginOk, IMapInitOk, IBeforePlayerDataInitialize
|
{
|
public const int DATA_MAPID = 31370;
|
const int REDPOINTID = 1;
|
const int FUNCTIONID = 164;
|
|
public int highestPassFloor { get; private set; }
|
public int currentFloor {
|
get {
|
if (IsTopFloor(highestPassFloor))
|
{
|
return highestPassFloor;
|
}
|
else
|
{
|
return highestPassFloor + 1;
|
}
|
}
|
}
|
|
public int specialUnLockFloor {
|
get { return LocalSave.GetInt(StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "_JadeDynastyTowerUnLockFloor")); }
|
set { LocalSave.SetInt(StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "_JadeDynastyTowerUnLockFloor"), value); }
|
}
|
|
public bool openJadeDynastyTower { get; set; }
|
|
bool serverInited = false;
|
Redpoint redpoint = new Redpoint(REDPOINTID);
|
List<int> sortedFloors = new List<int>();
|
|
DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
|
public override void Init()
|
{
|
ParseConfig();
|
}
|
|
public override void UnInit()
|
{
|
}
|
|
public void RequestChallenge()
|
{
|
var error = GetErrorOfChallenge();
|
if (error == 0)
|
{
|
dungeonModel.RequestChallangeDungeon(DATA_MAPID, 0);
|
}
|
else
|
{
|
switch (error)
|
{
|
case 1:
|
break;
|
case 2:
|
break;
|
case 3:
|
break;
|
default:
|
break;
|
}
|
}
|
}
|
|
public bool IsChallengable()
|
{
|
return GetErrorOfChallenge() == 0;
|
}
|
|
private int GetErrorOfChallenge()
|
{
|
if (!FuncOpen.Instance.IsFuncOpen(FUNCTIONID))
|
{
|
return 1;
|
}
|
|
var coolDown = dungeonModel.GetEnterCoolDown(JadeDynastyTowerModel.DATA_MAPID);
|
if (coolDown != null && coolDown.suplursSeconds > 0)
|
{
|
return 2;
|
}
|
|
var enterTimes = dungeonModel.GetEnterTimes(DATA_MAPID);
|
var totalTimes = dungeonModel.GetTotalTimes(DATA_MAPID);
|
if (enterTimes >= totalTimes)
|
{
|
return 3;
|
}
|
|
return 0;
|
}
|
|
public void RequestAward()
|
{
|
var sendInfo = new CA508_tagCMDoFBAction();
|
sendInfo.ActionType = 1;
|
sendInfo.ActionInfo = (uint)currentFloor;
|
GameNetSystem.Instance.SendInfo(sendInfo);
|
}
|
|
public void RequestRefreshMonster()
|
{
|
var sendInfo = new CA508_tagCMDoFBAction();
|
sendInfo.ActionType = 0;
|
sendInfo.ActionInfo = (uint)currentFloor;
|
GameNetSystem.Instance.SendInfo(sendInfo);
|
}
|
|
public void SetOpenJadeDynastyTowerWinDirty()
|
{
|
openJadeDynastyTower = true;
|
}
|
|
public List<int> GetShowFloors()
|
{
|
var currentIndex = sortedFloors.IndexOf(currentFloor);
|
var floors = new List<int>();
|
|
if (currentIndex < 2)
|
{
|
for (var i = 0; i <= 4; i++)
|
{
|
floors.Add(sortedFloors[i]);
|
}
|
}
|
else if (currentIndex >= sortedFloors.Count - 2)
|
{
|
for (var i = sortedFloors.Count - 3; i <= sortedFloors.Count - 1; i++)
|
{
|
floors.Add(sortedFloors[i]);
|
}
|
}
|
else
|
{
|
for (var i = currentIndex - 2; i <= currentIndex + 2; i++)
|
{
|
floors.Add(sortedFloors[i]);
|
}
|
}
|
|
return floors;
|
}
|
|
public bool IsTopFloor(int floor)
|
{
|
return floor == sortedFloors[sortedFloors.Count - 1];
|
}
|
|
public bool IsBottomFloor(int floor)
|
{
|
return floor == sortedFloors[0];
|
}
|
|
public void UpdateHighestPassFloor(HB213_tagMCZhuXianTowerInfo info)
|
{
|
var oldRecorder = highestPassFloor;
|
highestPassFloor = (int)info.Floor;
|
if (serverInited && highestPassFloor > oldRecorder)
|
{
|
var config = Config.Instance.Get<JadeDynastyTowerConfig>(highestPassFloor);
|
if (config.unLockEquipPlace > 0)
|
{
|
specialUnLockFloor = highestPassFloor;
|
}
|
}
|
}
|
|
public void OnPlayerLoginOk()
|
{
|
serverInited = true;
|
}
|
|
public void OnMapInitOk()
|
{
|
switch (PlayerDatas.Instance.baseData.MapID)
|
{
|
case DATA_MAPID:
|
RequestRefreshMonster();
|
break;
|
}
|
}
|
|
private void ParseConfig()
|
{
|
var configs = Config.Instance.GetAllKeys<JadeDynastyTowerConfig>();
|
foreach (var item in configs)
|
{
|
sortedFloors.Add(int.Parse(item));
|
}
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
serverInited = false;
|
}
|
}
|
}
|