|
@@ -1,12 +1,8 @@
|
|
|
-using MongoDB.Driver;
|
|
|
-using OfficeOpenXml.Drawing.Chart;
|
|
|
+using IceInternal;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
-using System.Security.AccessControl;
|
|
|
-using System.Threading.Tasks;
|
|
|
+using System.Text.Json;
|
|
|
using Unity.Mathematics;
|
|
|
-using static ICSharpCode.SharpZipLib.Zip.ExtendedUnixData;
|
|
|
-
|
|
|
|
|
|
namespace ET.Server
|
|
|
{
|
|
@@ -41,13 +37,13 @@ namespace ET.Server
|
|
|
GateMapComponent gateMapComponent = player.AddComponent<GateMapComponent>();
|
|
|
|
|
|
//TODO: 先从所有map scene中查找是不是已经存在
|
|
|
- //TODO: 判断找到的scene人数是否已满等限制
|
|
|
+ //TODO: 判断找到的scene人数是否已满等限制,如果人数超过限制,则需要传送到不同的战斗服
|
|
|
// 在Gate上动态创建一个Map Scene,把Unit从DB中加载放进来,然后传送到真正的Map中,这样登陆跟传送的逻辑就完全一样了
|
|
|
var scene = await SceneFactory.CreateServerScene(gateMapComponent, player.Id, IdGenerater.Instance.GenerateInstanceId(), gateMapComponent.DomainZone(), "GateMap", SceneType.Map);
|
|
|
var scnInstance = scene.InstanceId.ToString();
|
|
|
gateMapComponent.Scene = scene;
|
|
|
|
|
|
- //TODO: 这里需要从DB或player信息中加载Unit
|
|
|
+ //TODO: DELETE
|
|
|
UnitComponent unitComponent = scene.GetComponent<UnitComponent>();
|
|
|
Unit unit = unitComponent.AddChildWithId<Unit, int>(player.Id, 1001);
|
|
|
unit.AddComponent<MoveComponent>();
|
|
@@ -55,9 +51,8 @@ namespace ET.Server
|
|
|
NumericComponent numericComponent = unit.AddComponent<NumericComponent>();
|
|
|
numericComponent.Set(NumericType.Speed, 6f); // 速度是6米每秒
|
|
|
numericComponent.Set(NumericType.AOI, 15000); // 视野15米
|
|
|
- unit.AddComponent<AOIEntity, int, float3>(9 * 1000, unit.Position);
|
|
|
+ //unit.AddComponent<AOIEntity, int, float3>(9 * 1000, unit.Position);
|
|
|
unit.AddComponent<UnitGateComponent, long>(session.InstanceId);
|
|
|
-
|
|
|
//TODO: m2m transfer unit之后,此unit会dispose,就有bug了
|
|
|
|
|
|
//战斗服===================
|
|
@@ -67,15 +62,39 @@ namespace ET.Server
|
|
|
Log.Info($"Battle ice createZoneRequest ret: {ret}");
|
|
|
|
|
|
//player进入副本,把player基本信息上报给战斗服
|
|
|
- IceZone.begin_playerEnterRequest(unit.Id.ToString(), scnInstance, toJSON4EnterScene(ref unit)).whenCompleted((Ice.Exception ex) => {
|
|
|
- Log.Error(ex.Message);
|
|
|
+ IceZone.begin_playerEnterRequest(unit.Id.ToString(), scnInstance, toJSON4EnterScene(ref unit)).whenCompleted(() =>
|
|
|
+ {
|
|
|
+ response.SceneId = scene.InstanceId;
|
|
|
+ reply();
|
|
|
+ WaitPlayerReady(session.DomainScene(), player.Id).Coroutine();
|
|
|
+
|
|
|
+ //TODO:DELETE, 只是将player置入到游戏服的场景管理数据中,并无实际transfer动作。
|
|
|
+ //TODO:删除Map服,战斗服取代了map服地位
|
|
|
+ //TransferHelper.Transfer(unit, startSceneConfig.InstanceId, startSceneConfig.Name).Coroutine();
|
|
|
+ },
|
|
|
+ (Ice.Exception ex) => {
|
|
|
+ if (ex != null)
|
|
|
+ {
|
|
|
+ Log.Error(ex.Message);
|
|
|
+
|
|
|
+ //TODO:进入场景失败ErrCode
|
|
|
+ response.Error = -1;
|
|
|
+ response.Message = ex.Message;
|
|
|
+ reply();
|
|
|
+ return;
|
|
|
+ }
|
|
|
});
|
|
|
+ }
|
|
|
|
|
|
- response.MyId = player.Id;
|
|
|
- reply();
|
|
|
+ private async ETTask WaitPlayerReady(Scene scn, long playerid)
|
|
|
+ {
|
|
|
+ //等待client ready消息
|
|
|
+ await scn.GetComponent<ObjectWait>().Wait<Wait_PlayerReady>();
|
|
|
+ //告诉战斗服 i am ready
|
|
|
|
|
|
- // 开始传送
|
|
|
- await TransferHelper.Transfer(unit, startSceneConfig.InstanceId, startSceneConfig.Name);
|
|
|
+ //设置ice战斗服中player状态为ready
|
|
|
+ var IceXmds = BattleIceAgentComponent.Instance.IceXmdsManager;
|
|
|
+ IceXmds.playerReady(playerid.ToString());
|
|
|
}
|
|
|
|
|
|
//TODO:按照hotfix--model框架,这段逻辑应该放到modelComponet对应的ComponetSystem中
|
|
@@ -105,10 +124,18 @@ namespace ET.Server
|
|
|
{
|
|
|
var json = new
|
|
|
{
|
|
|
- effects = new { },
|
|
|
+ effects = new {
|
|
|
+ MaxHP = 666,
|
|
|
+ HPPer = 1,
|
|
|
+ HP = 233,
|
|
|
+ Attack = 5,
|
|
|
+ AttackPer = 1,
|
|
|
+
|
|
|
+ },
|
|
|
effectsExt = new { },
|
|
|
- skills = new
|
|
|
- {
|
|
|
+ skills = new List<SkillInfo>(){
|
|
|
+ new SkillInfo {id = 110000, level = 1, type = 1, skillTime = 10000, cdTime = 5000, flag = 0 },
|
|
|
+ new SkillInfo { id = 310000, level = 1, type = 1, skillTime = 10000, cdTime = 5000, flag = 0},
|
|
|
},
|
|
|
tasks = new { },
|
|
|
flags = new { },
|
|
@@ -141,7 +168,9 @@ namespace ET.Server
|
|
|
{
|
|
|
//x = this.getPlayerAreaData().bornX,
|
|
|
//y = this.getPlayerAreaData().bornY,
|
|
|
- direction = 0,
|
|
|
+ x = 3,
|
|
|
+ y = 4,
|
|
|
+ direction = 0.1,
|
|
|
hp = 1000,
|
|
|
mp = 0,
|
|
|
},
|
|
@@ -158,7 +187,7 @@ namespace ET.Server
|
|
|
allowAutoGuard = 1,
|
|
|
},
|
|
|
};
|
|
|
- var retjson = System.Text.Json.JsonSerializer.Serialize(json);
|
|
|
+ var retjson = System.Text.Json.JsonSerializer.Serialize(json, new JsonSerializerOptions { IncludeFields = true });
|
|
|
Log.Debug("===================================");
|
|
|
Log.Debug(retjson.ToString());
|
|
|
Log.Debug("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
|