Пример #1
0
        void GetSkillItems()
        {
            TaskerItem item11101 = ComponentFactory.CreateWithId <TaskerItem>(IdGenerater.GenerateId());
            TaskerItem item21101 = ComponentFactory.CreateWithId <TaskerItem>(IdGenerater.GenerateId());
            TaskerItem item31101 = ComponentFactory.CreateWithId <TaskerItem>(IdGenerater.GenerateId());
            TaskerItem item41101 = ComponentFactory.CreateWithId <TaskerItem>(IdGenerater.GenerateId());

            //item11101.AddComponent<NumericComponent>().Set(NumericType.ManageAdd, 10);
            item11101.AddComponent <NumericComponent>().Set(NumericType.ValuationAdd, 10);
            item21101.AddComponent <NumericComponent>().Set(NumericType.ValuationAdd, 12);
            item21101.AddComponent <NumericComponent>().Set(NumericType.ValuationAdd, 12);
            //item31101.AddComponent<NumericComponent>().Set(NumericType.MeasureAdd, 10);
            item31101.AddComponent <NumericComponent>().Set(NumericType.ValuationAdd, 10);
            item41101.AddComponent <NumericComponent>().Set(NumericType.CaseAdd, 14);
            item41101.AddComponent <NumericComponent>().Set(NumericType.ValuationAdd, 14);

            idTaskerItems.Add(item11101.Id, item11101);
            idTaskerItems.Add(item21101.Id, item21101);
            idTaskerItems.Add(item31101.Id, item31101);
            idTaskerItems.Add(item41101.Id, item41101);
        }
Пример #2
0
        //从现在起 等待N毫秒后
        public ETTask WaitAsync(long time)
        {
            ETTaskCompletionSource tcs = new ETTaskCompletionSource();
            //创建Timer 并且生成ID 设定触发时间=当前时间+等待的时间 缓存ETTaskCompletionSource对象tcs
            Timer timer = new Timer {
                Id = IdGenerater.GenerateId(), Time = TimeHelper.Now() + time, tcs = tcs
            };

            //管理所有timer对象的字典
            this.timers[timer.Id] = timer;
            //管理所有时间相关的事件 key:时间 value:timerid 通过timerid可以找到以上的Timer对象
            //然后获取它的tcs ...
            this.timeId.Add(timer.Time, timer.Id);
            //这个事件的时间跟当前最近要触发的时间进行比较 如果小于 那么最近要触发的事件是这个 timer.Time
            if (timer.Time < this.minTime)
            {
                //则进行更新最近要触发的time
                this.minTime = timer.Time;
            }
            //返回tcs.Task 而非tcs,所以等待的是其内部的Task对象
            return(tcs.Task);
        }
Пример #3
0
        public override void EndInit()
        {
            try
            {
                this.InstanceId = IdGenerater.GenerateId();

                this.componentDict.Clear();

                if (this.components != null)
                {
                    foreach (Component component in this.components)
                    {
                        component.Parent = this;
                        this.componentDict.Add(component.GetType(), component);
                    }
                }
            }
            catch (Exception e)
            {
                Log.Error(e);
            }
        }
Пример #4
0
        // accept
        public KChannel(uint localConn, uint remoteConn, Socket socket, IPEndPoint remoteEndPoint, KService kService) : base(kService, ChannelType.Accept)
        {
            this.InstanceId = IdGenerater.GenerateId();

            this.LocalConn      = localConn;
            this.RemoteConn     = remoteConn;
            this.remoteEndPoint = remoteEndPoint;
            this.socket         = socket;
            this.kcp            = Kcp.KcpCreate(this.RemoteConn, new IntPtr(this.LocalConn));
            Kcp.KcpSetoutput(
                this.kcp,
                (bytes, len, k, user) =>
            {
                KService.Output(bytes, len, user);
                return(len);
            }
                );
            Kcp.KcpNodelay(this.kcp, 1, 10, 1, 1);
            Kcp.KcpWndsize(this.kcp, 256, 256);
            Kcp.KcpSetmtu(this.kcp, 470);
            this.isConnected           = true;
            this.isRecvFirstKcpMessage = false;
            this.lastRecvTime          = kService.TimeNow;
        }
Пример #5
0
        public static Scene CreateScene(long id, string name, SceneType sceneType, Scene parent = null)
        {
            Scene scene = (Scene)Game.ObjectPool.Fetch(typeof(Scene));

            scene.Id = id;

            Game.EventSystem.Remove(scene.InstanceId);

            // 高14位是进程id
            scene.InstanceId = IdGenerater.GenerateSceneInstanceId(id);

            Game.EventSystem.RegisterSystem(scene);

            if (parent != null)
            {
                scene.Parent = parent;
            }
            scene.Domain = scene;

            scene.Name      = name;
            scene.SceneType = sceneType;

            return(scene);
        }
Пример #6
0
        public virtual async Task <Session> Accept()
        {
            AChannel channel = await this.Service.AcceptChannel();

            Session session = ComponentFactory.CreateWithId <Session, NetworkComponent, AChannel>(IdGenerater.GenerateId(), this, channel);

            session.Parent         = this;
            channel.ErrorCallback += (c, e) => { this.Remove(session.Id); };
            this.sessions.Add(session.Id, session);
            return(session);
        }
Пример #7
0
 /// <summary>
 /// 创建一个新Session
 /// </summary>
 public virtual Session Create(IPEndPoint ipEndPoint)
 {
     try
     {
         AChannel channel = this.Service.ConnectChannel(ipEndPoint);
         Session  session = ComponentFactory.CreateWithId <Session, NetworkComponent, AChannel>(IdGenerater.GenerateId(), this, channel);
         session.Parent         = this;
         channel.ErrorCallback += (c, e) => { this.Remove(session.Id); };
         this.sessions.Add(session.Id, session);
         return(session);
     }
     catch (Exception e)
     {
         Log.Error(e);
         return(null);
     }
 }
Пример #8
0
 public TService()
 {
     this.InstanceId = IdGenerater.GenerateId();
 }
        public ActorMessageSender Get(long actorId)
        {
            if (actorId == 0)
            {
                throw new Exception($"actor id is 0");
            }
            IPEndPoint         ipEndPoint         = StartConfigComponent.Instance.GetInnerAddress(IdGenerater.GetAppIdFromId(actorId));
            ActorMessageSender actorMessageSender = new ActorMessageSender(actorId, ipEndPoint);

            return(actorMessageSender);
        }
        private async ETTask DetectAndCreateNewScript()
        {
            List <ComponentWithId> components = await db.GetJson(typeof(DBUpgradeScript).Name, allFindCondition);

            List <int> steps = new List <int>();

            allUpgradingInfo = components.OfType <DBUpgradeScript>().ToList();
            foreach (Type type in Game.EventSystem.GetTypes(typeof(DBUpgradeScriptAttribute))
                     .Where(myType => myType.IsClass && !myType.IsAbstract && myType.IsSubclassOf(typeof(DBUpgradeScriptBase))))
            {
                DBUpgradeScriptBase script = (DBUpgradeScriptBase)Activator.CreateInstance(type);
                if (!steps.Contains(script.step))
                {
                    steps.Add(script.step);
                }
                else
                {
                    throw new Exception($"To create upgrading script is failed! Reason: repeated step: {script.step}");
                }
                string scriptName = script.scriptName.ToLower();
                if (!allUpgradingInfo.Any(e => e.step == script.step))
                {
                    DBUpgradeScript newScript = ComponentFactory.CreateWithId <DBUpgradeScript>(IdGenerater.GenerateId());
                    newScript.step       = script.step;
                    newScript.scriptName = scriptName;
                    newScript.isChecked  = false;
                    newScript.createAt   = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
                    allUpgradingInfo.Add(newScript);
                    newScriptCount++;
                }
                allScriptTable.Add(scriptName, script);
            }
            if (allUpgradingInfo.Count != totalScriptCount)
            {
                throw new Exception($"Database upgrading scripts count is not consistent with table {typeof(DBUpgradeScript).Name}");
            }
            await db.AddBatch(allUpgradingInfo.OfType <ComponentWithId>().ToList(), typeof(DBUpgradeScript).Name);

            Console.WriteLine($"to create database upgrading script is finished");
            Console.WriteLine($"new script count : {newScriptCount}, total script count : {totalScriptCount}");
        }
Пример #11
0
        public static async ETTask Add(long uid, ReservationAllData allData)
        {
            if (await IsExist(uid))
            {
                Log.Error($"AddReservationDB 失敗! uid : {uid} 已經存在!");
                return;
            }

            ReservationDB reservationDB = ComponentFactory.CreateWithId <ReservationDB>(IdGenerater.GenerateId());

            reservationDB.uid     = uid;
            reservationDB.allData = new MongoDB.Bson.BsonBinaryData(allData.ToByteArray());

            await dbProxy.Save(reservationDB);
        }
Пример #12
0
 protected Component()
 {
     this.InstanceId = IdGenerater.GenerateId();
 }
Пример #13
0
 protected Entity()
 {
     this.InstanceId = IdGenerater.GenerateId();
 }
Пример #14
0
 protected Entity()
 {
     this.Id            = IdGenerater.GenerateId();
     this.components    = new HashSet <Component>();
     this.componentDict = new Dictionary <Type, Component>();
 }
Пример #15
0
 protected Component()
 {
     this.InstanceId = IdGenerater.GenerateId();
     Game.EventSystem.Add(this);
 }
Пример #16
0
        public void Awake()
        {
            otherPlayers = new List <Unit>();
            Game.Scene.GetComponent <GlobalConfigComponent>().networkPlayMode = false;
            Game.EventSystem.Run(EventIdType.LoadAssets);
            {
                UnitData playerData = new UnitData();
                playerData.groupIndex = GroupIndex.Player;
                playerData.layerMask  = UnitLayerMask.ALL;
                playerData.unitLayer  = UnitLayer.Character;
                playerData.unitTag    = UnitTag.Player;
                //创建主角
                Unit v = UnitFactory.Create(IdGenerater.GenerateId(), 1001, playerData);
                v.Position = new UnityEngine.Vector3(-10, 0, -10);
                UnitComponent.Instance.MyUnit = v;
                v.AddComponent <CameraComponent>();
                v.AddComponent <CommandComponent>();
                var input = v.AddComponent <InputComponent>();
                var list  = v.GetComponent <ActiveSkillComponent>().skillList.Keys.ToArray();
                input.AddSkillToHotKey("Q", list[0]);
                input.AddSkillToHotKey("W", list[1]);
                input.AddSkillToHotKey("E", list[2]);
                BattleEventHandler.LoadAssets(v);
            }
            UnitData monsterData = new UnitData();

            monsterData.groupIndex = GroupIndex.Monster;
            monsterData.layerMask  = UnitLayerMask.ALL;
            monsterData.unitLayer  = UnitLayer.Character;
            monsterData.unitTag    = UnitTag.Monster;
            {
                //创建怪物
                Unit v = UnitFactory.Create(IdGenerater.GenerateId(), 1001, monsterData);
                v.Position = new UnityEngine.Vector3(4.2f, 4, -15);
                v.Rotation = UnityEngine.Quaternion.LookRotation(v.Position - UnitComponent.Instance.MyUnit.Position, Vector3.up);
                //v.AddComponent<PDynamicBodyComponent, Shape>(new CircleShape() { Radius = 0.5f });

                BattleEventHandler.LoadAssets(v);
                otherPlayers.Add(v);
            }
            {
                //创建怪物
                Unit v = UnitFactory.Create(IdGenerater.GenerateId(), 1001, monsterData);
                v.Position = new UnityEngine.Vector3(-10, 0, 11);
                v.Rotation = UnityEngine.Quaternion.LookRotation(v.Position - UnitComponent.Instance.MyUnit.Position, Vector3.up);
                //v.AddComponent<PDynamicBodyComponent, Shape>(new CircleShape() { Radius = 0.5f });

                BattleEventHandler.LoadAssets(v);
                otherPlayers.Add(v);
            }
            {
                //创建怪物
                Unit v = UnitFactory.Create(IdGenerater.GenerateId(), 1001, monsterData);
                v.Position = new UnityEngine.Vector3(-10, 0, 15);
                v.Rotation = UnityEngine.Quaternion.LookRotation(v.Position - UnitComponent.Instance.MyUnit.Position, Vector3.up);
                //v.AddComponent<PDynamicBodyComponent, Shape>(new CircleShape() { Radius = 0.5f });

                BattleEventHandler.LoadAssets(v);
                otherPlayers.Add(v);
            }

            //这里准备其他角色施放技能的参数
        }
Пример #17
0
 protected AChannel(AService service, ChannelType channelType)
 {
     this.Id          = IdGenerater.GenerateId();
     this.ChannelType = channelType;
     this.service     = service;
 }
Пример #18
0
        private async void InsertGameData()
        {
            try
            {
                List <ComponentWithId> gameInfoList = new List <ComponentWithId>();

                ETModel.GameInfo DouDiZhukWar = ComponentFactory.CreateWithId <ETModel.GameInfo>(IdGenerater.GenerateId());
                DouDiZhukWar.GameId   = 1;
                DouDiZhukWar.GameName = "斗地主";
                gameInfoList.Add(DouDiZhukWar);

                await DBSaveHelper.SaveBatch(dbProxy, gameInfoList);

                DBHelper <GameInfo> .QureySingleTableAllData("GameInfo", gameList);
            }
            catch (System.Exception e)
            {
                Log.Debug($"插入游戏列表失败 信息 {e}!!!");
            }
        }