using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
namespace Snxxz.UI
|
{
|
[XLua.LuaCallCSharp]
|
public class FairyFeastModel : Model, IBeforePlayerDataInitialize
|
{
|
DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
FairyModel fairyModel { get { return ModelCenter.Instance.GetModel<FairyModel>(); } }
|
RoleParticularModel roleParticularModel { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } }
|
|
public List<uint> fairyFeastPlayers = new List<uint>();
|
|
public event Action fairyFeastPlayerUpdate;
|
|
public float transmitCostSeconds { get; private set; }
|
public float transmitExpSeconds { get; private set; }
|
string expFormula { get; set; }
|
public int riseLevel { get; private set; }
|
public int expFlyStage { get; private set; }
|
public int expFlyCount { get; private set; }
|
public ulong totalExp { get; private set; }
|
|
Dictionary<int, HourMinute> normalQuestionTimes = new Dictionary<int, HourMinute>();
|
|
public override void Init()
|
{
|
ParseConfig();
|
roleParticularModel.viewPlayerUpdate += ViewPlayerUpdate;
|
}
|
|
public override void UnInit()
|
{
|
roleParticularModel.viewPlayerUpdate -= ViewPlayerUpdate;
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
fairyFeastPlayers.Clear();
|
transmitPlayer = 0;
|
}
|
|
void ParseConfig()
|
{
|
var config = FuncConfigConfig.Get("FairyFeastTransmit");
|
transmitCostSeconds = 8.5f;
|
transmitExpSeconds = 7.7f;
|
expFlyCount = 3;
|
expFlyStage = 3;
|
if (config != null)
|
{
|
transmitCostSeconds = float.Parse(config.Numerical2) / 1000;
|
expFlyStage = int.Parse(config.Numerical3);
|
expFlyCount = int.Parse(config.Numerical4);
|
transmitExpSeconds = float.Parse(config.Numerical5) / 1000;
|
}
|
config = FuncConfigConfig.Get("FamilyPartySitAward");
|
expFormula = config.Numerical1;
|
riseLevel = int.Parse(config.Numerical2);
|
|
var list = DungeonStateTimeConfig.DungeonStateTimes(31230);
|
for (int i = 0; i < list.Count; i++)
|
{
|
if (list[i].StateValue == 2)
|
{
|
var dayOfWeek = list[i].StartWeekday % 7;
|
if (!normalQuestionTimes.ContainsKey(dayOfWeek))
|
{
|
normalQuestionTimes.Add(dayOfWeek, new HourMinute()
|
{
|
hourBegin = list[i].StartHour,
|
hourEnd = list[i].EndHour,
|
minuteBegin = list[i].StartMinute,
|
minuteEnd = list[i].EndMinute,
|
});
|
}
|
}
|
}
|
}
|
|
public bool TryGetQuestionTime(out HourMinute time)
|
{
|
time = default(HourMinute);
|
var dayOfWeek = (int)TimeUtility.ServerNow.DayOfWeek;
|
if (normalQuestionTimes.ContainsKey(dayOfWeek))
|
{
|
time = normalQuestionTimes[dayOfWeek];
|
return true;
|
}
|
return false;
|
}
|
|
public void OnReceiveHelpMessage(string _mission)
|
{
|
var json = LitJson.JsonMapper.ToObject(_mission);
|
if (json != null && json.Keys.Contains("familyPartyPlayer"))
|
{
|
fairyFeastPlayers.Clear();
|
var array = LitJson.JsonMapper.ToObject<uint[]>(json["familyPartyPlayer"].ToJson());
|
if (array != null)
|
{
|
fairyFeastPlayers.AddRange(array);
|
}
|
if (fairyFeastPlayerUpdate != null)
|
{
|
fairyFeastPlayerUpdate();
|
}
|
}
|
}
|
|
public void ResetHelpMessage()
|
{
|
fairyFeastPlayers.Clear();
|
transmitPlayer = 0;
|
}
|
|
public void UpdateTransmitState(H0411_tagPlayerSit package)
|
{
|
var mapId = PlayerDatas.Instance.baseData.MapID;
|
if (mapId != 31230 || package.PlayerID != PlayerDatas.Instance.baseData.PlayerID)
|
{
|
return;
|
}
|
if (package.Type == 0)
|
{
|
totalExp = 0;
|
var level = PlayerDatas.Instance.baseData.LV;
|
var worldLevel = PlayerDatas.Instance.worldLv;
|
for (int i = 0; i < riseLevel; i++)
|
{
|
var config = PlayerLVConfig.Get(level + 1);
|
totalExp += (ulong)config.EXP1 * Constants.ExpPointValue + (ulong)config.EXP2;
|
}
|
var levelConfig = PlayerLVConfig.Get(level + riseLevel);
|
Equation.Instance.Clear();
|
Equation.Instance.AddKeyValue("worldlv", worldLevel);
|
Equation.Instance.AddKeyValue("reLV", level + riseLevel);
|
Equation.Instance.AddKeyValue("reExp", levelConfig.ReExp);
|
totalExp += Equation.Instance.Eval<ulong>(expFormula);
|
FairyFeastTransmitShow.Instance.Open();
|
}
|
}
|
|
public void TransmitComplete()
|
{
|
CA508_tagCMDoFBAction pak = new CA508_tagCMDoFBAction();
|
pak.ActionType = 1;
|
pak.ActionInfo = 0;
|
GameNetSystem.Instance.SendInfo(pak);
|
}
|
|
public List<PlayerFairyData.FairyMember> displayFairyMembers = new List<PlayerFairyData.FairyMember>();
|
public uint transmitPlayer = 0;
|
|
public void Transmit(PlayerFairyData.FairyMember fairyMember)
|
{
|
if (fairyMember.PlayerID == PlayerDatas.Instance.baseData.PlayerID)
|
{
|
return;
|
}
|
if (fairyMember.Exattr2 != 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("FairyFeastPlayerOffline");
|
return;
|
}
|
if (!fairyFeastPlayers.Contains(fairyMember.PlayerID))
|
{
|
SysNotifyMgr.Instance.ShowTip("PartySitFail");
|
return;
|
}
|
transmitPlayer = fairyMember.PlayerID;
|
roleParticularModel.ViewFairyFeastTransmit((int)fairyMember.PlayerID);
|
CA508_tagCMDoFBAction pak = new CA508_tagCMDoFBAction();
|
pak.ActionType = 0;
|
pak.ActionInfo = transmitPlayer;
|
GameNetSystem.Instance.SendInfo(pak);
|
}
|
|
private void ViewPlayerUpdate(int type, RoleParticularModel.ViewPlayerData data)
|
{
|
if (type == 3)
|
{
|
|
}
|
}
|
}
|
}
|