Exemplo n.º 1
0
        public async void OnLogin()
        {
            try
            {
                IPEndPoint connetEndPoint = NetworkHelper.ToIPEndPoint(GlobalConfigComponent.Instance.GlobalProto.Address);

                string text = this.account.GetComponent <InputField>().text;

                // 创建一个ETModel层的Session
                ETModel.Session session = ETModel.Game.Scene.GetComponent <NetOuterComponent>().Create(connetEndPoint);
                // 创建一个ETHotfix层的Session, ETHotfix的Session会通过ETModel层的Session发送消息
                Session   realmSession = ComponentFactory.Create <Session, ETModel.Session>(session);
                R2C_Login r2CLogin     = (R2C_Login)await realmSession.Call(new C2R_Login()
                {
                    Account = text, Password = "******"
                });

                realmSession.Dispose();

                connetEndPoint = NetworkHelper.ToIPEndPoint(r2CLogin.Address);
                // 创建一个ETModel层的Session,并且保存到ETModel.SessionComponent中
                ETModel.Session gateSession = ETModel.Game.Scene.GetComponent <NetOuterComponent>().Create(connetEndPoint);
                ETModel.Game.Scene.AddComponent <ETModel.SessionComponent>().Session = gateSession;

                // 创建一个ETHotfix层的Session, 并且保存到ETHotfix.SessionComponent中
                Game.Scene.AddComponent <SessionComponent>().Session = ComponentFactory.Create <Session, ETModel.Session>(gateSession);

                G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await SessionComponent.Instance.Session.Call(new C2G_LoginGate()
                {
                    Key = r2CLogin.Key
                });

                UserInfo userInfor = (UserInfo)await SessionComponent.Instance.Session.Call(new UserInfor()
                {
                });

                //加载心跳组件
                Game.Scene.GetComponent <SessionComponent>().Session.AddComponent <HeartBeatComponent>();

                Log.Info("登陆gate成功!");
                Log.Info("请求信息gate成功!" + "  COIN:" + userInfor.Coin + "  EXP:" + userInfor.Exp);
                // 创建Player
                Player          player          = ETModel.ComponentFactory.CreateWithId <Player>(g2CLoginGate.PlayerId);
                PlayerComponent playerComponent = ETModel.Game.Scene.GetComponent <PlayerComponent>();
                playerComponent.MyPlayer = player;
                playerComponent.Add(player);
                //Log.Info("Login Player.Unitid"+ player.UnitId.ToString());
                //Log.Info("Login Player.id" + player.Id.ToString());

                Game.Scene.GetComponent <UIComponent>().Create(UIType.EvoUILobby);
                Game.Scene.GetComponent <UIComponent>().Remove(UIType.UILogin);
            }
            catch (Exception e)
            {
                Log.Error(e);
            }
        }
Exemplo n.º 2
0
        public static Player Create(long id)
        {
            ResourcesComponent resourcesComponent = ETModel.Game.Scene.GetComponent <ResourcesComponent>();
            GameObject         bundleGameObject   = (GameObject)resourcesComponent.GetAsset("Player.unity3d", "Player");
            GameObject         prefab             = bundleGameObject.Get <GameObject>("Cube");

            GameObject      go              = UnityEngine.Object.Instantiate(prefab);
            Player          player          = ComponentFactory.CreateWithId <Player>(id, go);
            PlayerComponent playerComponent = Game.Scene.GetComponent <PlayerComponent>();

            player.AddComponent <MoveComponent>();
            player.AddComponent <TurnComponent>();

            playerComponent.Add(player);
            return(player);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 先向 BD 服务器 初始化小怪数据
        /// </summary>
        public static async ETTask <List <Player> > GetPlayerByIds(this PlayerComponent self, List <long> ids)
        {
            DBProxyComponent dBProxy = Game.Scene.GetComponent <DBProxyComponent>();

            List <ComponentWithId> playerdbs = await dBProxy.Query <Playerdb>(ids);

            foreach (Playerdb tem in playerdbs)
            {
                Player player = tem.ToPlayer();

                /// 然后向 DB 服务器 小怪数据放入字典
                self.Add(player);
            }
            Console.WriteLine(" PlayerComponentHelper-28: " + " BD服务器,Player数量: " + Game.Scene.GetComponent <PlayerComponent>().Count);

            return(self.GetAll().ToList());
        }