104 lines
4.5 KiB
C#
Executable File
104 lines
4.5 KiB
C#
Executable File
using Cal.DataTable;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace ET
|
|
{
|
|
[ActorMessageHandler]
|
|
public class C2M_GetBasicalInfoHandler : AMActorLocationHandler<Unit, C2M_GetBasicalInfo>
|
|
{
|
|
protected override async ETTask Run(Unit unit, C2M_GetBasicalInfo message)
|
|
{
|
|
try
|
|
{
|
|
return;
|
|
Log.Debug($"【{ UserComponent.Instance.Get(unit.Id)?.NickName} ({ unit.Id})】已经进入游戏");
|
|
PlayerData data = unit.GetComponent<PlayerData>();
|
|
|
|
|
|
Team team = TeamComponent.Instance.Get(unit.TeamLeaderId);
|
|
if (team == null)
|
|
{
|
|
team = TeamComponent.Instance.CreateTeam(unit.Id);
|
|
}
|
|
team.ChangeState(TeamState.None);
|
|
var num = unit.GetComponent<NumericComponent>();
|
|
CharacterHelper.ResetAddNumeric(unit, num);
|
|
data.IsBattleIdle = false;
|
|
UnitScene unitScene = unit.GetComponent<UnitScene>();
|
|
if (unitScene == null)
|
|
{
|
|
Log.Error($"unitScene == null where id = {unit.Id}");
|
|
return;
|
|
}
|
|
if(unitScene.MapId/100 == Sys_SceneId.Scene_BattleIdle)
|
|
{
|
|
unitScene.MapId = Sys_SceneId.Scene_MainCity * 100 + 1;
|
|
}
|
|
// //!+重新添加
|
|
// BuffLib lib = await BuffLibComponent.Instance.Query(unit.Id);
|
|
// //!重新添加GoodsBuff
|
|
// foreach (KeyValuePair<int, long> kp in lib.goodsEffectBuffDic)
|
|
// {
|
|
// GoodsBase goodsBase = DataTableHelper.Get<GoodsBase>(kp.Key);
|
|
//
|
|
// if (goodsBase == null)
|
|
// {
|
|
// Log.Error($"goodsBase == null where id = {kp.Key}");
|
|
// }
|
|
// else
|
|
// GoodsEffectComponent.Instance.ReAcquireGoodsEffect(unit, goodsBase,kp.Value);
|
|
// }
|
|
// BuffLibComponent.Instance.Remove(unit.Id, lib).Coroutine();
|
|
//!+发送玩家基础性息
|
|
UnitCharacter unitCharacter =await CharacterHelper.GetUnitCharacter(unit);
|
|
MessageHelper.SendActor(unit, new M2C_SendUnitInfo { UnitCharacter = unitCharacter });
|
|
CharacterHelper.SyncAttribute(unit);
|
|
TeamHelper.SendTeamMember(team);
|
|
//!+任务相关
|
|
UnitTask unitTask = unit.GetComponent<UnitTask>();
|
|
if (unitTask!=null &&
|
|
unitTask.RunningTaskList.Count==0 &&
|
|
unitTask.CompleteTaskIdList.Count==0&&
|
|
unitTask.FinishTaskIdList.Count==0
|
|
)
|
|
{
|
|
//!发送新任务
|
|
M2C_OpenTaskUI ret = new M2C_OpenTaskUI();
|
|
ret.TaskList.Add(new NPCTask() { Id = (int)TaskComponent.Instance.TaskBaseNpcIdDic[0][0].Id, TaskState = TaskState.TaskWaiting });
|
|
MessageHelper.SendActor(unit, ret);
|
|
}
|
|
|
|
//!+发送Boss消息
|
|
SendBossInfo(unit);
|
|
Game.EventSystem.Publish(new EventType.AfterEnterGame() { unit = unit });
|
|
await ETTask.CompletedTask;
|
|
}
|
|
catch (System.Exception e)
|
|
{
|
|
Log.Error(e);
|
|
}
|
|
}
|
|
private void SendBossInfo(Unit unit)
|
|
{
|
|
Log.Debug($"【{ UserComponent.Instance.Get(unit.Id)?.NickName} ({ unit.Id})】发送Boss消息");
|
|
BossComponent boss = BossComponent.Instance;
|
|
using ListComponent<string> listComponent = ListComponent<string>.Create();
|
|
List<string> arr = listComponent.List;
|
|
foreach (KeyValuePair<int, BossComponent.BossState> item in boss.bossStateDic)
|
|
{
|
|
if (item.Value == BossComponent.BossState.Idle)
|
|
{
|
|
arr.Add($"[color=#00cc00]【{boss.GetBossBossName(item.Key)}】[/color]刷新了,大家赶紧去击杀吧,奖励多多!");
|
|
}
|
|
}
|
|
Chat.Instance.SendSystemCaht(unit, arr);
|
|
}
|
|
|
|
private async ETVoid SendBossRefresh(Unit unit, int targetMapLayer)
|
|
{
|
|
await TimerComponent.Instance.WaitAsync(1000);
|
|
MessageHelper.SendActor(unit, new M2C_BossRefresh { BossId = BossComponent.Instance.GetBossId(targetMapLayer) });
|
|
}
|
|
}
|
|
} |