using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
namespace Snxxz.UI
|
{
|
public class HazyGrassModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
|
{
|
public const int ReikiGrassMapId = 32040;
|
public const int FairyGrassMapId = 32050;
|
public const int Client_ReikiGrassMapID = 3240;
|
public const int Client_FairyGrassMapID = 3250;
|
|
public bool IsInDungeon { get; private set; }
|
|
public int grassRefreshSeconds { get; private set; }
|
|
public DateTime grassBornTime { get; private set; }
|
|
HazyRegionModel hazyRegionModel { get { return ModelCenter.Instance.GetModel<HazyRegionModel>(); } }
|
|
public override void Init()
|
{
|
ParseConfig();
|
|
StageLoad.Instance.onStageLoadFinish += OnStageLoadFinish;
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
}
|
|
public void OnPlayerLoginOk()
|
{
|
}
|
|
public override void UnInit()
|
{
|
StageLoad.Instance.onStageLoadFinish -= OnStageLoadFinish;
|
}
|
|
void ParseConfig()
|
{
|
grassRefreshSeconds = 20;
|
}
|
|
private void OnStageLoadFinish()
|
{
|
var mapId = PlayerDatas.Instance.baseData.MapID;
|
|
IsInDungeon = false;
|
if (IsInGrassDungeon(mapId))
|
{
|
IsInDungeon = true;
|
}
|
}
|
|
public bool IsInGrassDungeon(int mapId)
|
{
|
if (mapId == Client_ReikiGrassMapID
|
|| mapId == Client_FairyGrassMapID)
|
{
|
return true;
|
}
|
|
var configs = HazyRegionConfig.GetValues();
|
foreach (var config in configs)
|
{
|
if ((config.incidentType == (int)HazyRegionIncidentType.FairyGrass
|
|| config.incidentType == (int)HazyRegionIncidentType.ReikiGrass)
|
&& config.dungeonId == mapId)
|
{
|
return true;
|
}
|
}
|
return false;
|
}
|
|
public int GetClientMapId(int incidentId)
|
{
|
var config = HazyRegionConfig.Get(incidentId);
|
switch ((HazyRegionIncidentType)config.incidentType)
|
{
|
case HazyRegionIncidentType.FairyGrass:
|
return Client_FairyGrassMapID;
|
case HazyRegionIncidentType.ReikiGrass:
|
return Client_ReikiGrassMapID;
|
}
|
return 0;
|
}
|
|
public void RefreshGrassBornTime()
|
{
|
|
}
|
|
public void RefreshGrassBornTime(DateTime _time)
|
{
|
grassBornTime = _time;
|
}
|
|
public void RequestEnterClientDungeon()
|
{
|
var config = HazyRegionConfig.Get(hazyRegionModel.processingIncidentId);
|
|
var mapId = GetClientMapId(hazyRegionModel.processingIncidentId);
|
|
MapTransferUtility.Instance.Clear();
|
ClientDungeonStageUtility.SetClientDungeon(true, (ushort)mapId);
|
ClientDungeonStageUtility.RequestStartClientDungeon(config.dungeonId, config.lineId);
|
CrossServerLogin.Instance.SetWaitForLoginCrossServerState(false);
|
StageLoad.Instance.PushSceneLoadCommand(new StageLoad.StageLoadCommand()
|
{
|
toMapId = mapId,
|
toLineId = 0,
|
needEmpty = true,
|
needLoadResource = true,
|
serverType = ServerType.Main,
|
isClientLoadMap = true
|
});
|
|
PlayerDatas.Instance.baseData.mainServerMapIdRecord = PlayerDatas.Instance.baseData.MapID;
|
PlayerDatas.Instance.baseData.MapID = (ushort)mapId;
|
var attackMode = new C030A_tagCChangeAttackMode();
|
attackMode.Mode = (byte)E_AttackMode.Peace;
|
GameNetSystem.Instance.PushPackage(attackMode, ServerType.Main);
|
}
|
|
public void RequestExitClientDungeon()
|
{
|
ClientDungeonStageUtility.SetClientDungeon(false, 0);
|
ClientDungeonStageUtility.RequestExitClientDungeon();
|
PlayerDatas.Instance.extersion.pkState = 0;
|
ModelCenter.Instance.GetModel<DungeonModel>().ResetBufData();
|
|
PlayerDatas.Instance.baseData.MapID = PlayerDatas.Instance.baseData.mainServerMapIdRecord;
|
StageLoad.Instance.PushSceneLoadCommand(new StageLoad.StageLoadCommand()
|
{
|
toMapId = PlayerDatas.Instance.baseData.MapID,
|
toLineId = 0,
|
needEmpty = true,
|
needLoadResource = true,
|
serverType = ServerType.Main,
|
isClientLoadMap = true
|
});
|
}
|
}
|
}
|