Пример #1
0
        protected override async ETTask Run(Scene scene, G2M_CreateUnit request, M2G_CreateUnit response, Action reply)
        {
            Unit unit = EntityFactory.CreateWithId <Unit>(scene, IdGenerater.GenerateId());

            unit.AddComponent <MoveComponent>();
            unit.AddComponent <UnitPathComponent>();
            unit.Position = new Vector3(-10, 0, -10);

            unit.AddComponent <MailBoxComponent>();
            await unit.AddLocation();

            unit.AddComponent <UnitGateComponent, long>(request.GateSessionId);
            scene.GetComponent <UnitComponent>().Add(unit);
            response.UnitId = unit.Id;


            // 广播创建的unit
            M2C_CreateUnits createUnits = new M2C_CreateUnits();

            Unit[] units = scene.GetComponent <UnitComponent>().GetAll();
            foreach (Unit u in units)
            {
                UnitInfo unitInfo = new UnitInfo();
                unitInfo.X      = u.Position.x;
                unitInfo.Y      = u.Position.y;
                unitInfo.Z      = u.Position.z;
                unitInfo.UnitId = u.Id;
                createUnits.Units.Add(unitInfo);
            }
            MessageHelper.Broadcast(unit, createUnits);

            reply();
        }
Пример #2
0
        protected override async ETTask Run(Scene scene, M2M_TrasferUnitRequest request, M2M_TrasferUnitResponse response, Action reply)
        {
            Unit unit = request.Unit;

            // 将unit加入事件系统
            Log.Debug(MongoHelper.ToJson(request.Unit));
            // 这里不需要注册location,因为unlock会更新位置
            unit.AddComponent <MailBoxComponent>();
            scene.GetComponent <UnitComponent>().Add(unit);
            response.InstanceId = unit.InstanceId;
            reply();
            await ETTask.CompletedTask;
        }