コード例 #1
0
ファイル: EcEngine.cs プロジェクト: yinlei/GF.Core
    //---------------------------------------------------------------------
    public EcEngine(ref EcEngineSettings settings, IEcEngineListener listener)
    {
        mInstance = this;
        mListener = listener;
        Settings = settings;

        mEntityMgr = new EntityMgr(1, "Client");

        mEntityMgr.regComponent<ClientAutoPatcher<DefAutoPatcher>>();
        mEntityMgr.regComponent<ClientNode<DefNode>>();
        mEntityMgr.regComponent<ClientSuperSocket<DefSuperSocket>>();

        mEntityMgr.regEntityDef<EtAutoPatcher>();
        mEntityMgr.regEntityDef<EtNode>();
        mEntityMgr.regEntityDef<EtSuperSocket>();

        EtNode = mEntityMgr.createEntity<EtNode>(null, null);
        var co_node = EtNode.getComponent<ClientNode<DefNode>>();
        CoSuperSocket = co_node.CoSuperSocket;

        // 通知业务层初始化
        if (mListener != null)
        {
            mListener.init(mEntityMgr, EtNode);
        }
    }
コード例 #2
0
ファイル: EcEngine.cs プロジェクト: yinlei/Fishing
    //---------------------------------------------------------------------
    public EcEngine(ref EcEngineSettings settings, IEcEngineListener listener)
    {
        mInstance = this;
        mListener = listener;
        Settings = settings;

        mEntityMgr = new EntityMgr(1, "Client");

        mEntityMgr.setRpcSessionFactory(new RpcSessionFactoryTcpClient());

        mEntityMgr.regComponent<ClientAutoPatcher<DefAutoPatcher>>();
        mEntityMgr.regComponent<ClientNode<DefNode>>();

        mEntityMgr.regEntityDef<EtAutoPatcher>();
        mEntityMgr.regEntityDef<EtNode>();

        EtNode = mEntityMgr.createEntity<EtNode>(null, null);
        var co_node = EtNode.getComponent<ClientNode<DefNode>>();

        // 通知业务层初始化
        if (mListener != null)
        {
            mListener.init(mEntityMgr, EtNode);
        }
    }
コード例 #3
0
ファイル: MbSample.cs プロジェクト: yinlei/GF.Orleans
        //-------------------------------------------------------------------------
        public void init(EntityMgr entity_mgr, Entity et_root)
        {
            entity_mgr.regComponent<ClientOrleans<DefOrleans>>();
            entity_mgr.regComponent<ClientSampleApp<DefSampleApp>>();

            entity_mgr.regEntityDef<EtOrleans>();
            entity_mgr.regEntityDef<EtSampleApp>();
        }
コード例 #4
0
ファイル: MbSample.cs プロジェクト: yinlei/GF.Core
    //-------------------------------------------------------------------------
    public void init(EntityMgr entity_mgr, Entity et_root)
    {
        entity_mgr.regComponent<ClientSampleApp<DefSampleApp>>();
        entity_mgr.regComponent<ClientSampleAutoPatcher<DefSampleAutoPatcher>>();

        entity_mgr.regEntityDef<EtSampleApp>();
        entity_mgr.regEntityDef<EtSampleAutoPatcher>();
    }
コード例 #5
0
ファイル: RpcSessionTcpClient.cs プロジェクト: yinlei/Fishing
 //---------------------------------------------------------------------
 public RpcSessionTcpClient(EntityMgr entity_mgr)
 {
     this.entityMgr = entity_mgr;
     this.tcpSocket = new TcpClient();
     this.tcpSocket.OnSocketReceive += _onSocketReceive;
     this.tcpSocket.OnSocketConnected += _onSocketConnected;
     this.tcpSocket.OnSocketClosed += _onSocketClosed;
     this.tcpSocket.OnSocketError += _onSocketError;
 }
コード例 #6
0
 //---------------------------------------------------------------------
 public EntityRpcSessionSuperSocketS(EntityMgr entity_mgr, SuperSocketSession socket)
 {
     mEntityMgr = entity_mgr;
     mSocket = socket;
     mSocket.OnSocketClosed = _onSocketClose;
     mSocket.OnSocketReceive = _onSocketReceive;
     mSocket.OnSocketError = _onSocketError;
     socket.IsConnected = true;
 }
コード例 #7
0
 //---------------------------------------------------------------------
 public EntityRpcSessionSuperSocketC(EntityMgr entity_mgr)
 {
     mEntityMgr = entity_mgr;
     mSocket = new SuperSocketClient();
     mSocket.OnSocketReceive += _onSocketReceive;
     mSocket.OnSocketConnected += _onSocketConnected;
     mSocket.OnSocketClosed += _onSocketClosed;
     mSocket.OnSocketError += _onSocketError;
 }
コード例 #8
0
ファイル: Program.cs プロジェクト: yinlei/GF.Core
    //-------------------------------------------------------------------------
    public void init(EntityMgr entity_mgr, Entity et_node)
    {
        EbLog.Note("EsEngineListener.init()");

        entity_mgr.regComponent<ServerTest<DefTest>>();

        entity_mgr.regEntityDef<EtTest>();

        entity_mgr.createEntity<EtTest>(null, et_node);
    }
コード例 #9
0
ファイル: MbSample.cs プロジェクト: CragonGame/GameCloud.IM
        //---------------------------------------------------------------------
        public void init(EntityMgr entity_mgr, Entity et_root)
        {
            entity_mgr.regComponent<ClientSampleApp<DefSampleApp>>();
            entity_mgr.regComponent<ClientIMSDK<DefIMSDK>>();
            entity_mgr.regComponent<ClientUCenterSDK<DefUCenterSDK>>();

            entity_mgr.regEntityDef<EtSampleApp>();
            entity_mgr.regEntityDef<EtIMSDK>();
            entity_mgr.regEntityDef<EtUCenterSDK>();
        }
コード例 #10
0
ファイル: EcEngine.cs プロジェクト: yinlei/Fishing
    //---------------------------------------------------------------------
    public void close()
    {
        // 通知业务层销毁
        if (mListener != null)
        {
            mListener.release();
        }

        if (mEntityMgr != null)
        {
            mEntityMgr.destroy();
            mEntityMgr = null;
        }
    }
コード例 #11
0
ファイル: EsEngine.cs プロジェクト: yinlei/GF.Core
        //---------------------------------------------------------------------
        public EsEngine(ref EsEngineSettings settings, IEsEngineListener listener)
        {
            mInstance = this;
            mListener = listener;
            Settings = settings;

            // 日志设置
            //{
            //    ILogFactory log_factory = new Log4NetLogFactory(settings.Log4NetConfigPath);
            //    EbLogFactory.SetLogFactory(log_factory);
            //    mLog = EbLogFactory.GetLog(this.GetType().Name);

            //    EbLog.NoteCallback = mLog.Info;
            //    EbLog.WarningCallback = mLog.Warn;
            //    EbLog.ErrorCallback = mLog.Error;
            //}

            // 处理未捕获的异常
            AppDomain.CurrentDomain.UnhandledException +=
             new UnhandledExceptionEventHandler(_unhandledExceptionEventHandler);

            EbLog.Note("-----------EsEngine启动开始--------------");

            // EntityMgr初始化
            mEntityMgr = new EntityMgr(Settings.NodeType, Settings.NodeTypeString);

            mEntityMgr.regComponent<ServerNode<DefNode>>();
            mEntityMgr.regComponent<ServerSuperSocket<DefSuperSocket>>();

            mEntityMgr.regEntityDef<EtNode>();
            mEntityMgr.regEntityDef<EtSuperSocket>();

            EtNode = mEntityMgr.createEntity<EtNode>(null, null);
            var co_node = EtNode.getComponent<ServerNode<DefNode>>();
            CoSuperSocket = co_node.CoSuperSocket;

            EbLog.Note("-----------EsEngine启动完毕--------------");

            // 通知业务层初始化
            if (mListener != null)
            {
                mListener.init(mEntityMgr, EtNode);
            }
        }
コード例 #12
0
ファイル: MbMain.cs プロジェクト: yinlei/Fishing
    //-------------------------------------------------------------------------
    public void init(EntityMgr entity_mgr, Entity et_root)
    {
        entity_mgr.regComponent<ClientActor<DefActor>>();
        entity_mgr.regComponent<ClientActorMirror<DefActorMirror>>();
        entity_mgr.regComponent<ClientApp<DefApp>>();
        entity_mgr.regComponent<ClientBag<DefBag>>();
        entity_mgr.regComponent<ClientDataEye<DefDataEye>>();
        entity_mgr.regComponent<ClientEquip<DefEquip>>();
        entity_mgr.regComponent<ClientEquipMirror<DefEquipMirror>>();
        entity_mgr.regComponent<ClientLaunch<DefLaunch>>();
        entity_mgr.regComponent<ClientLogin<DefLogin>>();
        entity_mgr.regComponent<ClientNetMonitor<DefNetMonitor>>();
        entity_mgr.regComponent<ClientPlayer<DefPlayer>>();
        entity_mgr.regComponent<ClientPlayerChat<DefPlayerChat>>();
        entity_mgr.regComponent<ClientPlayerDesktop<DefPlayerDesktop>>();
        entity_mgr.regComponent<ClientPlayerFriend<DefPlayerFriend>>();
        entity_mgr.regComponent<ClientPlayerLobby<DefPlayerLobby>>();
        entity_mgr.regComponent<ClientPlayerMirror<DefPlayerMirror>>();
        entity_mgr.regComponent<ClientPlayerMailBox<DefPlayerMailBox>>();
        entity_mgr.regComponent<ClientPlayerTask<DefPlayerTask>>();
        entity_mgr.regComponent<ClientPlayerTrade<DefPlayerTrade>>();
        entity_mgr.regComponent<ClientPlayerRanking<DefPlayerRanking>>();
        entity_mgr.regComponent<ClientSound<DefSound>>();
        entity_mgr.regComponent<ClientStatus<DefStatus>>();
        entity_mgr.regComponent<ClientStatusMirror<DefStatusMirror>>();
        entity_mgr.regComponent<ClientSysNotice<DefSysNotice>>();
        //entity_mgr.regComponent<ClientUCenterSDK<DefUCenterSDK>>();

        entity_mgr.regEntityDef<EtApp>();
        entity_mgr.regEntityDef<EtFishing>();
        entity_mgr.regEntityDef<EtLaunch>();
        entity_mgr.regEntityDef<EtLogin>();
        entity_mgr.regEntityDef<EtPlayer>();
        entity_mgr.regEntityDef<EtPlayerMirror>();
        //entity_mgr.regEntityDef<EtUCenterSDK>();
    }
コード例 #13
0
        //-------------------------------------------------------------------------
        // 玩家进入桌子
        public Task <DesktopData> s2sPlayerEnter(DesktopRequestPlayerEnter request_enter, EntityData etdata_playermirror)
        {
            byte seat_index = request_enter.seat_index;

            if (getPlayerCountInSeat() >= DesktopConfigData.seat_num)
            {
                // 没有空座位了,观战
                seat_index = 255;
            }

            if (!isValidSeatIndex(seat_index))
            {
                // 座位索引范围不合法,重新分配空座位
                foreach (var i in AllSeat)
                {
                    if (i.et_playermirror == null)
                    {
                        seat_index = i.index;
                        break;
                    }
                }
            }

            if (isValidSeatIndex(seat_index) && AllSeat[seat_index].et_playermirror != null)
            {
                // 座位上已经有人坐了,重新分配空座位
                foreach (var i in AllSeat)
                {
                    if (i.et_playermirror == null)
                    {
                        seat_index = i.index;
                        break;
                    }
                }
            }

            var et_playermirror = EntityMgr.genEntity <EtPlayerMirror, Entity>(etdata_playermirror, Entity);
            var co_actormirror  = et_playermirror.getComponent <CellActorMirror <DefActorMirror> >();
            var co_ai           = et_playermirror.getComponent <CellActorMirrorAi <DefActorMirrorAi> >();

            byte actorid_indesktop = _genPlayerId();

            co_actormirror.Def.PropActorIdInDesktop.set(actorid_indesktop);

            EbLog.Note("CellDesktop.s2sPlayerEnter() PlayerEtGuid=" + et_playermirror.Guid);

            MapAllPlayer1[actorid_indesktop]   = et_playermirror;
            MapAllPlayer[et_playermirror.Guid] = et_playermirror;
            if (isValidSeatIndex(seat_index))
            {
                AllSeat[seat_index].et_playermirror = et_playermirror;
            }

            co_actormirror.onEnterDesktop(seat_index);

            // 更新DesktopInfo
            refreshDesktopInfo();

            // 广播玩家进入桌子
            DesktopNotify desktop_notify;

            desktop_notify.id   = DesktopNotifyId.PlayerEnter;
            desktop_notify.data = EbTool.protobufSerialize <EntityData>(et_playermirror.genEntityData4All());

            StreamData sd = new StreamData();

            sd.event_id = StreamEventId.DesktopStreamEvent;
            sd.param1   = desktop_notify;
            var grain_desktop = Entity.getUserData <GrainCellDesktop>();

            grain_desktop.AsyncStream.OnNextAsync(sd);

            // 通知场景玩家坐下
            LogicScene.scenePlayerEnter(actorid_indesktop, 1, "aabb", false, -1, TbDataTurret.TurretType.NormalTurret);
            float player_rate = 1.0f;// mEtDesktopPumping.getPlayerUpgradeRate();// 抽水率

            LogicScene.scenePlayerRateChanged(1, player_rate);

            DesktopData desktop_data = _getDesktopData();

            return(Task.FromResult(desktop_data));
        }
コード例 #14
0
        //---------------------------------------------------------------------
        public T genEvent <T>() where T : EntityEvent, new()
        {
            var publisher = EntityMgr.getDefaultEventPublisher();

            return(publisher.genEvent <T>());
        }
コード例 #15
0
    //-------------------------------------------------------------------------

    //-------------------------------------------------------------------------
    public override void init()
    {
        EbLog.Note("ClientSampleAutoPatcher.init()");

        EntityMgr.getDefaultEventPublisher().addHandler(Entity);

        AutoPatcherConfig autopatcher_cfg = new AutoPatcherConfig();

        autopatcher_cfg.RemoteVersionInfoUrl = "https://www.cragon.cn/download/Cragon/SampleAutoPatcher/VersionInfo.xml";

        var et_autopatcher = EntityMgr.createEntity <EtAutoPatcher>(null, Entity);
        var co_autopatcher = et_autopatcher.getComponent <ClientAutoPatcher <DefAutoPatcher> >();

        co_autopatcher.OnAutoPatcherGetServerVersionCfg =
            () =>
        {
            //UiMbLoading loading = UiMgr.Instance.createUi<UiMbLoading>(_eUiLayer.Loading);
            //loading.setTips("检测版本中");

            EbLog.Note("请求获取版本信息");
        };

        co_autopatcher.OnAutoPatcherGetServerVersionCfgResult =
            (r, error) =>
        {
            //UiMbLoading loading = UiMgr.Instance.createUi<UiMbLoading>(_eUiLayer.Loading);
            //loading.setTips("下载版本信息失败::Error::" + mServerVersionWWW.error);

            if (r == AutoPatcherResult.Success)
            {
                EbLog.Note("获取版本信息成功");
            }
            else
            {
                EbLog.Note("获取版本信息失败! Error=" + error);
            }
        };

        co_autopatcher.OnAutoPatcherIsNeedBundlePatcher =
            (is_need, local_bundle_version, remote_bundle_version) =>
        {
            if (!is_need)
            {
                //UiMgr.Instance.destroyCurrentUi<UiMbLoading>();
                EbLog.Note("Bundle版本相同,无需更新");
            }
            else
            {
                //UiMbLoading loading = UiMgr.Instance.createUi<UiMbLoading>(_eUiLayer.Loading);
                //loading.setTips("更新版本");
                //UiMbUpdate update = UiMgr.Instance.createUi<UiMbUpdate>(_eUiLayer.Loading);
                //update.setUpdateInfo("更新版本," + mVersionConfig.LocalVersionConfig.bundle_version + "版本到" + mVersionConfig.RemoteVersionConfig.bundle_version + "版本,是否更新?", _updateBundle, _cancelUpdate);

                string info = string.Format("Bundle版本不同,从{0}更新到{1}", local_bundle_version, remote_bundle_version);
                EbLog.Note(info);
            }
        };

        co_autopatcher.OnAutoPatcherIsNeedDataPatcher =
            (is_need, local_data_version, remote_data_version) =>
        {
            if (!is_need)
            {
                //UiMgr.Instance.destroyCurrentUi<UiMbLoading>();
                EbLog.Note("Data版本相同,无需更新");
            }
            else
            {
                //UiMbLoading loading = UiMgr.Instance.createUi<UiMbLoading>(_eUiLayer.Loading);
                //loading.setTips("更新数据");
                //UiMbUpdate update = UiMgr.Instance.createUi<UiMbUpdate>(_eUiLayer.Loading);
                //update.setUpdateInfo("更新数据," + mVersionConfig.LocalVersionConfig.data_version + "版本到" + mVersionConfig.RemoteVersionConfig.data_version + "版本,是否更新?", _updateData, _cancelUpdate);

                string info = string.Format("Data版本不同,从{0}更新到{1}", local_data_version, remote_data_version);
                EbLog.Note(info);
            }
        };

        co_autopatcher.OnAutoPatcherGetRemoteDataFileList =
            () =>
        {
            //UiMgr.Instance.destroyCurrentUi<UiMbUpdate>();
            //UiMbLoading loading = UiMgr.Instance.createUi<UiMbLoading>(_eUiLayer.Loading);
            //loading.setTips("更新数据中");

            EbLog.Note("请求获取数据文件列表");
        };

        co_autopatcher.OnAutoPatcherGetRemoteDataFileListResult =
            (r, error) =>
        {
            //UiMbLoading loading = UiMgr.Instance.createUi<UiMbLoading>(_eUiLayer.Loading);
            //loading.setLoadProgress(mUpdateDataWWW.progress, "更新数据错误 Error::" + mUpdateDataWWW.error);

            if (r == AutoPatcherResult.Success)
            {
                EbLog.Note("获取数据文件列表成功");
            }
            else
            {
                EbLog.Note("获取数据文件列表失败! Error=" + error);
            }
        };


        co_autopatcher.OnAutoPatcherDataPatcher =
            (info) =>
        {
            //UiMbLoading loading = UiMgr.Instance.createUi<UiMbLoading>(_eUiLayer.Loading);
            //loading.setLoadProgress(progress, msg);
            //EbLog.Note(msg + "   " + progress);

            EbLog.Note(info);
        };

        co_autopatcher.OnAutoPatcherFinished =
            () =>
        {
            EbLog.Note("自动更新结束");

            //public OnAutoPatcherFinished OnAutoPatcherFinished { get; set; }
            //CoApp.BundleVersion = mCheckVersion.mVersionConfig.LocalVersionConfig.bundle_version;
            //CoApp.DataVersion = mCheckVersion.mVersionConfig.LocalVersionConfig.data_version;

            //// 创建EtLogin
            //EntityMgr.createEntity<EtLogin>(null, CoApp.Entity);
            EntityMgr.destroyEntity(et_autopatcher);
        };

        co_autopatcher.launchAutoPatcher(autopatcher_cfg);
    }
コード例 #16
0
ファイル: ClientSession.cs プロジェクト: yinlei/GF.Orleans
 //---------------------------------------------------------------------
 public ClientSession(EntityMgr entity_mgr)
 {
 }
コード例 #17
0
 //---------------------------------------------------------------------
 protected abstract void onInit(EntityMgr entity_mgr);
コード例 #18
0
        //---------------------------------------------------------------------
        public Task Init(string name, IProviderRuntime providerRuntime, IProviderConfiguration config)
        {
            EntityMgr = new EntityMgr((byte)NodeType.Cell, NodeType.Cell.ToString());

            EntityMgr.regComponent <CellActor <DefActor> >();
            EntityMgr.regComponent <CellActorMirror <DefActorMirror> >();
            EntityMgr.regComponent <CellActorMirrorAi <DefActorMirrorAi> >();
            EntityMgr.regComponent <CellBag <DefBag> >();
            EntityMgr.regComponent <CellDesktop <DefDesktop> >();
            EntityMgr.regComponent <CellEquip <DefEquip> >();
            EntityMgr.regComponent <CellPlayer <DefPlayer> >();
            EntityMgr.regComponent <CellPlayerChat <DefPlayerChat> >();
            EntityMgr.regComponent <CellPlayerDesktop <DefPlayerDesktop> >();
            EntityMgr.regComponent <CellPlayerFriend <DefPlayerFriend> >();
            EntityMgr.regComponent <CellPlayerLobby <DefPlayerLobby> >();
            EntityMgr.regComponent <CellPlayerMailBox <DefPlayerMailBox> >();
            EntityMgr.regComponent <CellPlayerTask <DefPlayerTask> >();
            EntityMgr.regComponent <CellPlayerTrade <DefPlayerTrade> >();
            EntityMgr.regComponent <CellPlayerRanking <DefPlayerRanking> >();
            EntityMgr.regComponent <CellStatus <DefStatus> >();

            EntityMgr.regEntityDef <EtDesktop>();
            EntityMgr.regEntityDef <EtPlayer>();
            EntityMgr.regEntityDef <EtPlayerMirror>();

            // 初始化DataMgr
            {
                string path_media  = ServerPath.getPathMediaRoot();
                string db_filename = Path.Combine(path_media, "Fishing\\Config\\Fishing.db");
                EbLog.Note(db_filename);
                TbDataMgr.setup(db_filename);
            }

            // 初始化单位模块
            UnitSys.setup(false);

            // 初始化效果系统
            EffectSys.regEffect(new EffectCreateStatus());
            EffectSys.regEffect(new EffectStatus1());
            EffectSys.regEffect(new EffectStatus2());
            EffectSys.regEffect(new EffectStatusCreator1());
            EffectSys.regEffect(new EffectStatusCreator2());
            EffectSys.regEffect(new EffectTakeoffEquip());
            EffectSys.regEffect(new EffectTakeonEquip());
            EffectSys.regEffect(new EffectUseConsumable());
            EffectSys.regEffect(new EffectUseSkillBook());

            // 初始化CellApp
            CellApp = new CellApp();

            //// 加载所有Bot
            //var map_databot = EbDataMgr.Instance.getMapData<TbDataBot>();
            //foreach (var i in map_databot)
            //{
            //    TbDataBot data_bot = (TbDataBot)i.Value;

            //    //var grain_player = CellPlayerFactory.GetGrain(new Guid(data_bot.EtGuid));
            //    //var grain_player = GrainFactory.GetGrain<ICellPlayer>(new Guid(data_bot.EtGuid));
            //    //await grain_player.botNewAndEnterWorld(data_bot.NickName);
            //}

            return(TaskDone.Done);
        }
コード例 #19
0
    protected override void onUpdate()
    {
        //当前目标不存在
        bool isHave = EntityMgr.isHaveEntity(data.goalUID);

        if (!isHave)
        {
            onFinish();
            return;
        }
        //当前目标存在 每帧计算距离

        /*
         * CEntity goal = EntityMgr.getEntity(data.goalUID);
         * disVec = goal.CacheTrans.position - CacheTrans.position;
         * dir = disVec.normalized;
         * dis = disVec.magnitude;
         * CacheTrans.LookAt(goal.CacheTrans);
         * Debug.DrawRay(CacheTrans.position, dir, Color.red, 0.5f);
         * if (dis <= reachDis)
         * {
         *    if (data.callBack != null)
         *    {
         *        data.callBack.Invoke(data.cfgId, data.goalUID, CacheTrans.position);
         *    }
         *    onFinish();
         * }
         * CacheTrans.position += dir* speed;
         */

        //每帧射线检测 有效率问题吗?

        /*
         * CEntity goal = EntityMgr.getEntity(data.goalUID);
         * disVec = goal.CacheTrans.position+Vector3.up - CacheTrans.position;
         * dir = disVec.normalized;
         * CacheTrans.LookAt(goal.CacheTrans.position + Vector3.up);
         * Debug.DrawRay(CacheTrans.position, dir, Color.red, 0.5f);
         * if (Physics.Raycast(CacheTrans.position, dir, out info,speed))
         * {
         *  //碰撞到目标
         *  CEntity hitEntity = info.collider.GetComponent<CEntity>();
         *  if (hitEntity != null) {
         *      if (hitEntity.UID == goal.UID)
         *      {
         *          CacheTrans.position = goal.CacheTrans.position;
         *          if (data.callBack != null)
         *          {
         *              data.callBack.Invoke(data.cfgId, data.goalUID, CacheTrans.position);
         *          }
         *          onFinish();
         *      }
         *      else {
         *          onFinish();
         *      }
         *  }
         * }
         * else {
         *  CacheTrans.position += dir * speed;
         * }
         */
        CEntity goal = EntityMgr.getEntity(data.goalUID);

        disVec = goal.CacheTrans.position + Vector3.up - CacheTrans.position + Vector3.up;
        dir    = disVec.normalized;
        CacheTrans.LookAt(goal.CacheTrans.position + Vector3.up);
        Debug.DrawRay(CacheTrans.position, dir, Color.red, 0.5f);
        if (Physics.Raycast(CacheTrans.position, dir, out info, speed))
        {
            //碰撞到目标
            CEntity hitEntity = info.collider.GetComponent <CEntity>();
            if (hitEntity != null)
            {
                if (hitEntity.UID == goal.UID)
                {
                    CacheTrans.position = goal.CacheTrans.position;
                    if (data.callBack != null)
                    {
                        data.callBack.Invoke(data.cfgId, data.goalUID, CacheTrans.position);
                    }
                    onFinish();
                }
                else
                {
                    onFinish();
                }
            }
        }
        else
        {
            CacheTrans.position += dir * speed;
        }
    }
コード例 #20
0
 //---------------------------------------------------------------------
 public GatewaySession(EntityMgr entity_mgr)
 {
 }
コード例 #21
0
 //---------------------------------------------------------------------
 public override RpcSession createRpcSession(EntityMgr entity_mgr)
 {
     return(new GatewaySession(entity_mgr));
 }
コード例 #22
0
 private void Awake()
 {
     inst = this;
 }
コード例 #23
0
 // Use this for initialization
 void Start()
 {
     target  = EntityMgr.Instance().GetEnttiyById(CommonEnum.hero_id).transform;
     _offset = transform.position - target.position;
 }
コード例 #24
0
ファイル: Program.cs プロジェクト: zhilianghuang/Fishing
 //-------------------------------------------------------------------------
 public void init(EntityMgr entity_mgr, Entity et_node)
 {
     EbLog.Note("EsEngineListener.init()");
 }
コード例 #25
0
 //---------------------------------------------------------------------
 public GatewaySession(EntityMgr entity_mgr)
 {
 }
コード例 #26
0
        //---------------------------------------------------------------------
        public async Task Init(string name, IProviderRuntime providerRuntime, IProviderConfiguration config)
        {
            EntityMgr = new EntityMgr((byte)NodeType.Cell, NodeType.Cell.ToString());

            EntityMgr.regComponent <CellActor <DefActor> >();
            EntityMgr.regComponent <CellActorMirror <DefActorMirror> >();
            EntityMgr.regComponent <CellActorMirrorAi <DefActorMirrorAi> >();
            EntityMgr.regComponent <CellBag <DefBag> >();
            EntityMgr.regComponent <CellDesktop <DefDesktop> >();
            EntityMgr.regComponent <CellEquip <DefEquip> >();
            EntityMgr.regComponent <CellPlayer <DefPlayer> >();
            EntityMgr.regComponent <CellPlayerChat <DefPlayerChat> >();
            EntityMgr.regComponent <CellPlayerDesktop <DefPlayerDesktop> >();
            EntityMgr.regComponent <CellPlayerFriend <DefPlayerFriend> >();
            EntityMgr.regComponent <CellPlayerLobby <DefPlayerLobby> >();
            EntityMgr.regComponent <CellPlayerMailBox <DefPlayerMailBox> >();
            EntityMgr.regComponent <CellPlayerTask <DefPlayerTask> >();
            EntityMgr.regComponent <CellPlayerTrade <DefPlayerTrade> >();
            EntityMgr.regComponent <CellPlayerRanking <DefPlayerRanking> >();
            EntityMgr.regComponent <CellStatus <DefStatus> >();

            EntityMgr.regEntityDef <EtDesktop>();
            EntityMgr.regEntityDef <EtPlayer>();
            EntityMgr.regEntityDef <EtPlayerMirror>();

            DbClientCouchbase = new DbClientCouchbase();
            EntityCouchbase et_couchbase = new EntityCouchbase(EntityMgr, DbClientCouchbase.Bucket);

            // 创建视图
            //var couchbase_mgr = DbClientCouchbase.Instance.Bucket.CreateManager("Cragon", "123321");
            //var get = couchbase_mgr.GetDesignDocument("dev_team");
            //if (!get.Success)
            //{
            //    var design_doc = File.ReadAllText(@"..\\..\\..\\Media\\Fishing\\CouchbaseView\\dev_team.json");
            //    var inserted = couchbase_mgr.InsertDesignDocument("dev_team", design_doc);
            //    if (inserted.Success)
            //    {
            //        EbLog.Note("Created 'team' design doc.  Success");
            //    }
            //    else
            //    {
            //        EbLog.Note("Created 'team' design doc.  Failed, Msg=" + inserted.Message);
            //    }
            //}

            // 初始化DataMgr
            {
                string path_media  = ServerPath.getPathMediaRoot();
                string db_filename = Path.Combine(path_media, "Fishing\\Config\\Fishing.db");
                EbLog.Note(db_filename);
                TbDataMgr.setup(db_filename);
            }

            // 初始化单位模块
            UnitSys.setup(false);

            // 初始化效果系统
            EffectSys.regEffect(new EffectCreateStatus());
            EffectSys.regEffect(new EffectStatus1());
            EffectSys.regEffect(new EffectStatus2());
            EffectSys.regEffect(new EffectStatusCreator1());
            EffectSys.regEffect(new EffectStatusCreator2());
            EffectSys.regEffect(new EffectTakeoffEquip());
            EffectSys.regEffect(new EffectTakeonEquip());
            EffectSys.regEffect(new EffectUseConsumable());
            EffectSys.regEffect(new EffectUseSkillBook());

            // 初始化CellApp
            CellApp = new CellApp();

            //// 加载所有Bot
            //var map_databot = EbDataMgr.Instance.getMapData<TbDataBot>();
            //foreach (var i in map_databot)
            //{
            //    TbDataBot data_bot = (TbDataBot)i.Value;

            //    //var grain_player = CellPlayerFactory.GetGrain(new Guid(data_bot.EtGuid));
            //    //var grain_player = GrainFactory.GetGrain<ICellPlayer>(new Guid(data_bot.EtGuid));
            //    //await grain_player.botNewAndEnterWorld(data_bot.NickName);
            //}

            //return TaskDone.Done;
        }
コード例 #27
0
 //-------------------------------------------------------------------------
 void _onPropGoldChanged(IProp prop, object param)
 {
     EntityMgr.getDefaultEventPublisher().genEvent <EvEntityGoldCoinChanged>().send(null);
 }
コード例 #28
0
        //---------------------------------------------------------------------
        public Task Init(string name, IProviderRuntime providerRuntime, IProviderConfiguration config)
        {
            EntityMgr = new EntityMgr((byte)NodeType.Cell, NodeType.Cell.ToString());

            EntityMgr.regComponent<CellActor<DefActor>>();
            EntityMgr.regComponent<CellActorMirror<DefActorMirror>>();
            EntityMgr.regComponent<CellActorMirrorAi<DefActorMirrorAi>>();
            EntityMgr.regComponent<CellBag<DefBag>>();
            EntityMgr.regComponent<CellDesktop<DefDesktop>>();
            EntityMgr.regComponent<CellEquip<DefEquip>>();
            EntityMgr.regComponent<CellPlayer<DefPlayer>>();
            EntityMgr.regComponent<CellPlayerChat<DefPlayerChat>>();
            EntityMgr.regComponent<CellPlayerDesktop<DefPlayerDesktop>>();
            EntityMgr.regComponent<CellPlayerFriend<DefPlayerFriend>>();
            EntityMgr.regComponent<CellPlayerLobby<DefPlayerLobby>>();
            EntityMgr.regComponent<CellPlayerMailBox<DefPlayerMailBox>>();
            EntityMgr.regComponent<CellPlayerTask<DefPlayerTask>>();
            EntityMgr.regComponent<CellPlayerTrade<DefPlayerTrade>>();
            EntityMgr.regComponent<CellPlayerRanking<DefPlayerRanking>>();
            EntityMgr.regComponent<CellStatus<DefStatus>>();

            EntityMgr.regEntityDef<EtDesktop>();
            EntityMgr.regEntityDef<EtPlayer>();
            EntityMgr.regEntityDef<EtPlayerMirror>();

            // 初始化DataMgr
            {
                string path_media = ServerPath.getPathMediaRoot();
                string db_filename = Path.Combine(path_media, "Fishing\\Config\\Fishing.db");
                EbLog.Note(db_filename);
                TbDataMgr.setup(db_filename);
            }

            // 初始化单位模块
            UnitSys.setup(false);

            // 初始化效果系统
            EffectSys.regEffect(new EffectCreateStatus());
            EffectSys.regEffect(new EffectStatus1());
            EffectSys.regEffect(new EffectStatus2());
            EffectSys.regEffect(new EffectStatusCreator1());
            EffectSys.regEffect(new EffectStatusCreator2());
            EffectSys.regEffect(new EffectTakeoffEquip());
            EffectSys.regEffect(new EffectTakeonEquip());
            EffectSys.regEffect(new EffectUseConsumable());
            EffectSys.regEffect(new EffectUseSkillBook());

            // 初始化CellApp
            CellApp = new CellApp();

            //// 加载所有Bot
            //var map_databot = EbDataMgr.Instance.getMapData<TbDataBot>();
            //foreach (var i in map_databot)
            //{
            //    TbDataBot data_bot = (TbDataBot)i.Value;

            //    //var grain_player = CellPlayerFactory.GetGrain(new Guid(data_bot.EtGuid));
            //    //var grain_player = GrainFactory.GetGrain<ICellPlayer>(new Guid(data_bot.EtGuid));
            //    //await grain_player.botNewAndEnterWorld(data_bot.NickName);
            //}

            return TaskDone.Done;
        }
コード例 #29
0
 //---------------------------------------------------------------------
 protected abstract void regComponentFactory(EntityMgr entity_mgr);
コード例 #30
0
ファイル: EsEngine.cs プロジェクト: yinlei/GF.Core
        //---------------------------------------------------------------------
        public void close()
        {
            // 通知业务层销毁
            if (mListener != null)
            {
                mListener.release();
                mListener = null;
            }

            EbLog.Note("-----------EsEngine销毁开始--------------");

            if (mEntityMgr != null)
            {
                mEntityMgr.destroy();
                mEntityMgr = null;
            }

            EbLog.Note("-----------EsEngine销毁完成--------------");
        }
コード例 #31
0
        //-------------------------------------------------------------------------
        public override void init()
        {
            EbLog.Note("ClientLaunch.init()");

            EntityMgr.getDefaultEventPublisher().addHandler(Entity);

            Entity et_app = EntityMgr.findFirstEntityByType <EtApp>();

            CoApp = et_app.getComponent <ClientApp <DefApp> >();

            AutoPatcherConfig autopatcher_cfg = new AutoPatcherConfig();

            autopatcher_cfg.RemoteVersionInfoUrl = MbMain.Instance.ClientConfig.RemoteVersionInfoUrl;

            var et_autopatcher = EntityMgr.createEntity <EtAutoPatcher>(null, Entity);
            var co_autopatcher = et_autopatcher.getComponent <ClientAutoPatcher <DefAutoPatcher> >();

            UiLoading ui_loading = UiMgr.Instance.createUi <UiLoading>("Loading", "Loading");

            ui_loading.OnFinished = () =>
            {
                // 创建EtLogin
                EntityMgr.createEntity <EtLogin>(null, CoApp.Entity);
                EntityMgr.destroyEntity(et_autopatcher);
            };

            co_autopatcher.OnAutoPatcherGetServerVersionCfg =
                () =>
            {
                ui_loading.setTip("请求获取版本信息");
            };

            co_autopatcher.OnAutoPatcherGetServerVersionCfgResult =
                (r, error) =>
            {
                if (r == AutoPatcherResult.Success)
                {
                    ui_loading.setTip("获取版本信息成功");
                }
                else
                {
                    ui_loading.setTip("获取版本信息失败! Error=" + error);
                }
            };

            co_autopatcher.OnAutoPatcherIsNeedBundlePatcher =
                (is_need, local_bundle_version, remote_bundle_version) =>
            {
                if (!is_need)
                {
                    ui_loading.setTip("Bundle版本相同,无需更新");
                }
                else
                {
                    ui_loading.setTip("更新Bundle");

                    string info = string.Format("Bundle版本不同,从{0}更新到{1}", local_bundle_version, remote_bundle_version);
                    //UiMbUpdate update = UiMgr.Instance.createUi<UiMbUpdate>(_eUiLayer.Waiting);
                    //Action delOk = () => { co_autopatcher.confirmPatcherBundle(); };
                    //Action delCancel = () => { Application.Quit(); };
                    //update.setUpdateInfo(info, delOk, delCancel);
                }
            };

            co_autopatcher.OnAutoPatcherIsNeedDataPatcher =
                (is_need, local_data_version, remote_data_version) =>
            {
                if (!is_need)
                {
                    ui_loading.setTip("Data版本相同,无需更新");
                }
                else
                {
                    //ui_loading.setTips("更新数据");

                    string info = string.Format("Data版本不同,从{0}更新到{1}", local_data_version, remote_data_version);
                    //UiMbUpdate update = UiMgr.Instance.createUi<UiMbUpdate>(_eUiLayer.Waiting);
                    //Action delOk = () => { co_autopatcher.confirmPatcherData(); };
                    //Action delCancel = () => { Application.Quit(); };
                    //update.setUpdateInfo(info, delOk, delCancel);
                }
            };

            co_autopatcher.OnAutoPatcherGetRemoteDataFileList =
                () =>
            {
                ui_loading.setTip("请求获取数据文件列表");
            };

            co_autopatcher.OnAutoPatcherGetRemoteDataFileListResult =
                (r, error) =>
            {
                if (r == AutoPatcherResult.Success)
                {
                    ui_loading.setTip("获取数据文件列表成功");
                }
                else
                {
                    ui_loading.setTip("获取数据文件列表失败! Error=" + error);
                }
            };

            co_autopatcher.OnAutoPatcherDataPatcher =
                (info) =>
            {
                ui_loading.setTip(info);
            };

            co_autopatcher.OnAutoPatcherFinished =
                () =>
            {
                ui_loading.setTip("自动更新结束");

                CoApp.BundleVersion = co_autopatcher.VersionInfo.LocalBundleVersion;
                CoApp.DataVersion   = co_autopatcher.VersionInfo.LocalVersionInfo.data_version;

                // 创建EtLogin
                EntityMgr.createEntity <EtLogin>(null, CoApp.Entity);
                EntityMgr.destroyEntity(et_autopatcher);
            };


            //co_autopatcher.launchAutoPatcher(autopatcher_cfg);
        }
コード例 #32
0
 //---------------------------------------------------------------------
 public override RpcSession createRpcSession(EntityMgr entity_mgr)
 {
     return new GatewaySession(entity_mgr);
 }
コード例 #33
0
        //-------------------------------------------------------------------------
        void s2cPlayerResponse(PlayerResponse player_response)
        {
            switch (player_response.id)
            {
            case PlayerResponseId.CreatePrivateDesktop:    // 创建私有桌子
            {
                EbLog.Note("ClientPlayer.s2cPlayerResponse() CreatePrivateDesktop");
            }
            break;

            case PlayerResponseId.LeaveDesktop:    // 离开桌子
            {
                EbLog.Note("ClientPlayer.s2cPlayerResponse() LeaveDesktop");

                CoPlayerDesktop.clearDesktop();
                CoPlayerLobby.checkShowLobby();

                requestGetOnlinePlayerNum();
            }
            break;

            case PlayerResponseId.GetOnlinePlayerNum:    // 获取在线玩家数
            {
                var online_player_num = EbTool.protobufDeserialize <int>(player_response.data);

                //EbLog.Note("ClientPlayer.s2cPlayerResponse() GetOnlinePlayerNum Num=" + online_player_num);

                var e = EntityMgr.getDefaultEventPublisher().genEvent <EvEntitySetOnLinePlayerNum>();
                e.online_num = online_player_num;
                e.send(null);
            }
            break;

            case PlayerResponseId.GetPlayerInfoOther:    // 获取牌桌上其他玩家信息
            {
                EbLog.Note("ClientPlayer.s2cPlayerResponse() GetPlayerInfoOther");

                var player_info = EbTool.protobufDeserialize <PlayerInfoOther>(player_response.data);

                var e = EntityMgr.getDefaultEventPublisher().genEvent <EvEntityResponsePlayerInfoOther>();
                e.player_info = player_info;
                e.send(null);

                _createPlayerInfoUi(player_info);
                //switch (mRequestPlayerInfoReason)
                //{
                //    case _eRequestPlayerInfoReason.PlayerProfile:
                //        _createPlayerInfoUi(player_info);
                //        break;
                //    case _eRequestPlayerInfoReason.RequestAddFriend:
                //        UiMbAgreeOrDisAddFriendRequest friend_request = UiMgr.Instance.getCurrentUi<UiMbAgreeOrDisAddFriendRequest>();
                //        if (friend_request != null)
                //        {
                //            friend_request.setPlayerInfo(player_info);
                //        }
                //        break;
                //    case _eRequestPlayerInfoReason.ResponseAddFriend:
                //        UiMbMsgBox msg_box = UiMgr.Instance.createUi<UiMbMsgBox>(_eUiLayer.MessgeBox, false);
                //        msg_box.setNotifyMsgInfo("加好友", player_info.nick_name + "成为你的好友!");
                //        break;
                //    case _eRequestPlayerInfoReason.GetRankPlayerInfo:
                //        _createPlayerInfoUi(player_info);
                //        break;
                //    default:
                //        break;
                //}
            }
            break;

            case PlayerResponseId.ChangeProfileSkin:    // 个人资料换肤
            {
                EbLog.Note("ClientPlayer.s2cPlayerResponse() ChangeProfileSkin");

                var profileskin_tableid = EbTool.protobufDeserialize <int>(player_response.data);

                //FloatMsgInfo f_info;
                //f_info.msg = "换肤成功,请在游戏中查看!";
                //f_info.color = Color.green;
                //UiMgr.Instance.FloatMsgMgr.createFloatMsg(f_info);
            }
            break;

            case PlayerResponseId.RefreshIpAddress:    // 刷新Ip所在地
            {
                EbLog.Note("ClientPlayer.s2cPlayerResponse() RefreshIpAddress");

                var ip_address = EbTool.protobufDeserialize <string>(player_response.data);

                //UiMgr.Instance.destroyCurrentUi<UiMbWaiting>();

                //FloatMsgInfo f_info;
                //f_info.msg = "所在地刷新成功!";
                //f_info.color = Color.green;
                //UiMgr.Instance.FloatMsgMgr.createFloatMsg(f_info);
            }
            break;

            case PlayerResponseId.ReportPlayer:    // 举报玩家
            {
                EbLog.Note("ClientPlayer.s2cPlayerResponse() ReportPlayer");

                var report = EbTool.protobufDeserialize <ReportPlayer>(player_response.data);

                //FloatMsgInfo f_info;
                //f_info.msg = "举报玩家成功!";
                //f_info.color = Color.green;
                //UiMgr.Instance.FloatMsgMgr.createFloatMsg(f_info);
            }
            break;

            case PlayerResponseId.InvitePlayerEnterDesktop:    // 邀请玩家进桌
            {
                EbLog.Note("ClientPlayer.s2cPlayerResponse() InvitePlayerEnterDesktop");

                var r = EbTool.protobufDeserialize <ProtocolResult>(player_response.data);
                if (r == ProtocolResult.Success)
                {
                    //FloatMsgInfo f_info;
                    //f_info.msg = "邀请好友进桌发送成功!";
                    //f_info.color = Color.green;
                    //UiMgr.Instance.FloatMsgMgr.createFloatMsg(f_info);
                }
            }
            break;

            case PlayerResponseId.GivePlayerChip:    // 赠送玩家筹码
            {
                EbLog.Note("ClientPlayer.s2cPlayerResponse() GivePlayerChip");

                //var r = EbTool.protobufDeserialize<ProtocolResult>(player_response.data);
                //FloatMsgInfo f_info;
                //if (r == ProtocolResult.Success)
                //{
                //    f_info.msg = "赠送玩家筹码成功!";
                //    f_info.color = Color.green;
                //}
                //else
                //{
                //    f_info.msg = "赠送玩家筹码失败!";
                //    f_info.color = Color.red;
                //}

                //UiMgr.Instance.FloatMsgMgr.createFloatMsg(f_info);
            }
            break;

            default:
                break;
            }
        }
コード例 #34
0
        //_eRequestPlayerInfoReason mRequestPlayerInfoReason;

        //-------------------------------------------------------------------------
        public override void init()
        {
            EbLog.Note("ClientPlayer.init() EntityGuid=" + Entity.Guid);

            defNodeRpcMethod <PlayerResponse>(
                (ushort)MethodType.s2cPlayerResponse, s2cPlayerResponse);
            defNodeRpcMethod <PlayerNotify>(
                (ushort)MethodType.s2cPlayerNotify, s2cPlayerNotify);

            EntityMgr.getDefaultEventPublisher().addHandler(Entity);

            Entity et_app = EntityMgr.findFirstEntityByType <EtApp>();

            CoApp           = et_app.getComponent <ClientApp <DefApp> >();
            OnlinePlayerNum = 0;
            GetOnlinePlayerNumTimeElapsed = 0f;

            // 销毁EtLogin
            Entity et_login = EntityMgr.findFirstEntityByType <EtLogin>();

            EntityMgr.destroyEntity(et_login);

            // ClientActor组件
            CoActor = Entity.getComponent <ClientActor <DefActor> >();

            // ClientBag组件
            CoBag = Entity.getComponent <ClientBag <DefBag> >();

            // ClientStatus组件
            CoStatus = Entity.getComponent <ClientStatus <DefStatus> >();

            // ClientPlayerChat组件
            CoPlayerChat = Entity.getComponent <ClientPlayerChat <DefPlayerChat> >();

            // ClientPlayerFriend组件
            CoPlayerFriend = Entity.getComponent <ClientPlayerFriend <DefPlayerFriend> >();

            // ClientPlayerTask组件
            CoPlayerTask = Entity.getComponent <ClientPlayerTask <DefPlayerTask> >();

            // ClientPlayerDesktop组件
            CoPlayerDesktop = Entity.getComponent <ClientPlayerDesktop <DefPlayerDesktop> >();

            // ClientPlayerLobby组件
            CoPlayerLobby = Entity.getComponent <ClientPlayerLobby <DefPlayerLobby> >();

            // ClientPlayerMailBox组件
            CoPlayerMailBox = Entity.getComponent <ClientPlayerMailBox <DefPlayerMailBox> >();

            // ClientPlayerRanking组件
            CoPlayerRanking = Entity.getComponent <ClientPlayerRanking <DefPlayerRanking> >();

            // 显示主界面
            //UiMgr.Instance.CoPlayer = (ClientPlayer<DefPlayer>)(IComponent)this;
            //UiMgr.Instance.NeedChangeAtlas = CoActor.Def.mPropIsVIP.get();
            //UiMgr.Instance.destroyCurrentUi<UiMbLoading>();
            //createMainUi();
            var ui_main = UiMgr.Instance.createUi <UiMain>("Main", "Main");

            ui_main.init();

            // 请求获取在线玩家数量
            requestGetOnlinePlayerNum();
        }
コード例 #35
0
ファイル: EbGridRegion.cs プロジェクト: yinlei/GF.Core
 //---------------------------------------------------------------------
 public EbGridRegion(EntityMgr entity_mgr)
 {
     Publisher = new EntityEventPublisher(entity_mgr);
     SetEntity = new HashSet<Entity>();
 }
コード例 #36
0
ファイル: RpcSessionTcpClient.cs プロジェクト: yinlei/Fishing
 //---------------------------------------------------------------------
 public override RpcSession createRpcSession(EntityMgr entity_mgr)
 {
     return new RpcSessionTcpClient(entity_mgr);
 }
コード例 #37
0
        //-------------------------------------------------------------------------
        // 桌子通知
        void s2cPlayerDesktopNotify(DesktopNotify desktop_notify)
        {
            switch (desktop_notify.id)
            {
            case DesktopNotifyId.DesktopInit:    // 桌子初始化
            {
                EbLog.Note("ClientPlayerDesktop.s2cPlayerDesktopNotify() DesktopInit");

                CoPlayer.CoPlayerLobby.hideLobby();

                clearDesktop();

                var desktop_data = EbTool.protobufDeserialize <DesktopData>(desktop_notify.data);

                DesktopConfigData = desktop_data.desktop_cfg_data;
                //UiMbPlayDesktop ui_desk = UiMgr.Instance.createUi<UiMbPlayDesktop>(_eUiLayer.Background);
                //ui_desk.setDeskInfo(this, 60f);

                byte index = 0;
                AllSeat = new SeatInfo[DesktopConfigData.seat_num];
                foreach (var i in AllSeat)
                {
                    SeatInfo seat_info = new SeatInfo();
                    seat_info.index           = index;
                    seat_info.et_playermirror = null;
                    AllSeat[index]            = seat_info;
                    index++;
                }

                EntityData me_data = desktop_data.list_actormirror.Find((EntityData entity_data) =>
                    {
                        return(entity_data.entity_guid.Equals(CoPlayer.Entity.Guid));
                    });

                _initActorMirror(me_data);

                foreach (var i in desktop_data.list_actormirror)
                {
                    if (i.entity_guid.Equals(CoPlayer.Entity.Guid))
                    {
                        continue;
                    }

                    _initActorMirror(i);
                }

                var            co_me    = MeMirror.getComponent <ClientActorMirror <DefActorMirror> >();
                byte           me_id    = co_me.Def.PropActorIdInDesktop.get();
                RenderListener listener = new RenderListener(this);
                Scene = new CRenderScene();
                //var loading = UiMgr.Instance.createUi<UiMbLoading>(_eUiLayer.Loading);
                //Scene.onSceneLoading = loading.setLoadProgress;//null;//ui_mgr.getLoading().setRateOfProgress;
                //Scene.create(mMyPlayerId, mbSingle, false, listener, "RenderSceneConfigure.json",
                //    new JsonPacketReader("Media/Fishing/FishLord/").readJsonPacketList(),
                //    new JsonPacketReader("Media/Fishing/Route/").readRouteJsonPacketList());
            }
            break;

            case DesktopNotifyId.PlayerSceneAction:    // 玩家场景操作
            {
                var vec_param = EbTool.protobufDeserialize <List <string> >(desktop_notify.data);

                if (Scene != null)
                {
                    Scene.sceneOnRecvFromLogic(vec_param);
                }
            }
            break;

            case DesktopNotifyId.PlayerSceneAoIUpdate:    // 玩家场景广播
            {
                var ev_aoi = EbTool.protobufDeserialize <_tAoIEvent>(desktop_notify.data);

                if (Scene != null && Init)
                {
                    Scene.sceneOnRecvAoIFromLogic(ev_aoi.vec_param);
                }
            }
            break;

            case DesktopNotifyId.PlayerChat:    // 玩家聊天广播
            {
                if (string.IsNullOrEmpty(DesktopConfigData.desktop_etguid))
                {
                    return;
                }

                var msg_recv = EbTool.protobufDeserialize <ChatMsgRecv>(desktop_notify.data);

                Entity et_playermirror = null;
                MapEtActorMirrorByGuid.TryGetValue(msg_recv.et_player_guid_send, out et_playermirror);
                if (et_playermirror != null)
                {
                    var co_playermirror = et_playermirror.getComponent <ClientActorMirror <DefActorMirror> >();
                    co_playermirror.desktopChat(msg_recv);
                }
            }
            break;

            case DesktopNotifyId.PlayerEnter:    // 玩家进入桌子
            {
                if (string.IsNullOrEmpty(DesktopConfigData.desktop_etguid))
                {
                    return;
                }

                EntityData et_playermirror_data = EbTool.protobufDeserialize <EntityData>(desktop_notify.data);

                if (MapEtActorMirrorByGuid.ContainsKey(et_playermirror_data.entity_guid))
                {
                    return;
                }

                var et_playermirror = EntityMgr.genEntity <EtPlayerMirror, Entity>(et_playermirror_data, Entity);
                var co_actormirror  = et_playermirror.getComponent <ClientActorMirror <DefActorMirror> >();
                MapEtActorMirrorByGuid[et_playermirror.Guid] = et_playermirror;

                //byte seat_index = co_actormirror.Def.mPropSeatIndex.get();
                //if (isValidSeatIndex(seat_index))
                //{
                //    AllSeat[seat_index].et_playermirror = et_playermirror;
                //}

                EbLog.Note("ClientPlayerDesktop.s2cPlayerDesktopNotify() PlayerEnter PlayerEtGuid=" + et_playermirror.Guid);
            }
            break;

            case DesktopNotifyId.PlayerLeave:    // 玩家离开桌子
            {
                if (string.IsNullOrEmpty(DesktopConfigData.desktop_etguid))
                {
                    return;
                }

                string player_et_guid = EbTool.protobufDeserialize <string>(desktop_notify.data);

                EbLog.Note("ClientPlayerDesktop.s2cPlayerDesktopNotify() PlayerLeave PlayerEtGuid=" + player_et_guid);

                Entity et_playermirror = null;
                if (MapEtActorMirrorByGuid.TryGetValue(player_et_guid, out et_playermirror))
                {
                    var co_actormirror = et_playermirror.getComponent <ClientActorMirror <DefActorMirror> >();
                    MapEtActorMirrorByGuid.Remove(player_et_guid);

                    foreach (var i in AllSeat)
                    {
                        if (i.et_playermirror != null && i.et_playermirror.Guid == player_et_guid)
                        {
                            i.et_playermirror = null;
                            break;
                        }
                    }

                    et_playermirror.close();
                }
            }
            break;

            case DesktopNotifyId.PlayerOb:    // 玩家Ob
            {
                if (string.IsNullOrEmpty(DesktopConfigData.desktop_etguid))
                {
                    return;
                }

                string player_etguid = EbTool.protobufDeserialize <string>(desktop_notify.data);

                EbLog.Note("ClientPlayerDesktop.s2cPlayerDesktopNotify() PlayerOb PlayerEtGuid=" + player_etguid);

                Entity et_playermirror = null;
                if (MapEtActorMirrorByGuid.TryGetValue(player_etguid, out et_playermirror))
                {
                    var co_actormirror = et_playermirror.getComponent <ClientActorMirror <DefActorMirror> >();
                    co_actormirror.playerOb();
                }
            }
            break;

            case DesktopNotifyId.PlayerSitdown:    // 玩家坐下
            {
                if (string.IsNullOrEmpty(DesktopConfigData.desktop_etguid))
                {
                    return;
                }

                var sitdown_data = EbTool.protobufDeserialize <PlayerSitdownData>(desktop_notify.data);

                EbLog.Note("ClientPlayerDesktop.s2cPlayerDesktopNotify() PlayerSitdown PlayerEtGuid=" + sitdown_data.player_etguid);

                Entity et_playermirror = null;
                if (MapEtActorMirrorByGuid.TryGetValue(sitdown_data.player_etguid, out et_playermirror))
                {
                    var co_actormirror = et_playermirror.getComponent <ClientActorMirror <DefActorMirror> >();
                    co_actormirror.playerSitdown(sitdown_data.seat_index, sitdown_data.stack, sitdown_data.state);
                }
            }
            break;

            case DesktopNotifyId.PlayerWaitWhile:    // 玩家暂离
            {
                if (string.IsNullOrEmpty(DesktopConfigData.desktop_etguid))
                {
                    return;
                }

                var waitwhile_data = EbTool.protobufDeserialize <PlayerWaitWhileData>(desktop_notify.data);

                EbLog.Note("ClientPlayerDesktop.s2cPlayerDesktopNotify() PlayerWaitWhile PlayerEtGuid=" + waitwhile_data.player_etguid);

                Entity et_playermirror = null;
                if (MapEtActorMirrorByGuid.TryGetValue(waitwhile_data.player_etguid, out et_playermirror))
                {
                    var co_actormirror = et_playermirror.getComponent <ClientActorMirror <DefActorMirror> >();
                    co_actormirror.playerWaitWhile(waitwhile_data.wait_while_tm);
                }
            }
            break;

            case DesktopNotifyId.PlayerReturn:    // 玩家返回
            {
                if (string.IsNullOrEmpty(DesktopConfigData.desktop_etguid))
                {
                    return;
                }

                var return_data = EbTool.protobufDeserialize <PlayerReturnData>(desktop_notify.data);

                EbLog.Note("ClientPlayerDesktop.s2cPlayerDesktopNotify() PlayerReturn PlayerEtGuid=" + return_data.player_etguid);

                Entity et_playermirror = null;
                if (MapEtActorMirrorByGuid.TryGetValue(return_data.player_etguid, out et_playermirror))
                {
                    var co_actormirror = et_playermirror.getComponent <ClientActorMirror <DefActorMirror> >();
                    co_actormirror.playerReturn(return_data.stack, return_data.state);
                }
            }
            break;

            default:
                break;
            }
        }
コード例 #38
0
ファイル: EbGrid.cs プロジェクト: yinlei/GF.Core
 //---------------------------------------------------------------------
 public EbGrid(EntityMgr entity_mgr)
 {
     mEntityMgr = entity_mgr;
 }
コード例 #39
0
        //---------------------------------------------------------------------
        protected override void Setup()
        {
            // log4net
            string path = Path.Combine(this.BinaryPath, "log4net.config");
            var    file = new FileInfo(path);

            if (file.Exists)
            {
                LogManager.SetLoggerFactory(Log4NetLoggerFactory.Instance);
                XmlConfigurator.ConfigureAndWatch(file);
            }

            EbLog.NoteCallback    = mLog.Info;
            EbLog.WarningCallback = mLog.Warn;
            EbLog.ErrorCallback   = mLog.Error;

            Protocol.AllowRawCustomValues = true;

            EbLog.Note("PhotonApp.Setup()");

            // 获取初始化数据
            EntityMgrListener entitymgr_listener;
            string            servercfg_filename;

            init(out entitymgr_listener, out servercfg_filename);
            _parseServerCfg(servercfg_filename);

            // 创建ZkClient
            string    host_name        = Dns.GetHostName();
            IPAddress ip_addr          = Dns.Resolve(host_name).AddressList[0];//获得当前IP地址
            string    localnode_ipport = ip_addr.ToString() + ":" + NodePort;

            mZkClient    = new ZkClient(mServerNodeZkInfo.ip_port);
            mLocalIpPort = localnode_ipport;

            // 创建服务器zk节点.
            string tempNodeStr = "/" + ProjectName;

            if (!mZkClient.sexists(tempNodeStr, false))
            {
                mZkClient.screate(tempNodeStr, "", ZK_CONST.ZOO_DEFAULT_NODE);
            }
            tempNodeStr = tempNodeStr + "/" + NodeTypeString;
            if (!mZkClient.sexists(tempNodeStr, false))
            {
                mZkClient.screate(tempNodeStr, "", ZK_CONST.ZOO_DEFAULT_NODE);
            }
            tempNodeStr = tempNodeStr + "/" + localnode_ipport + ",";

            // 向ZkServer获取NodeId
            string zk_node  = mZkClient.screate(tempNodeStr, "", ZK_CONST.ZOO_EPHEMERAL | ZK_CONST.ZOO_SEQUENCE);
            string last_str = zk_node.Substring(zk_node.LastIndexOf('/') + 1);

            char[]   char_separators = new char[] { ',', ':' };
            string[] list_str        = last_str.Split(char_separators);
            mNodeId    = uint.Parse(list_str[2]);
            mNodeIdStr = list_str[2];
            EbLog.Note("NodeId=" + mNodeId);

            // 创建EntityMgr
            mEntityMgr = new EntityMgr();
            regComponentFactory(mEntityMgr);
            mEntityMgr.create(NodeType, NodeTypeString, (ushort)NodeId, entitymgr_listener);

            onInit(mEntityMgr);

            mSignDestroy              = false;
            mThreadLogic              = new Thread(new ThreadStart(_threadLogic));
            mThreadLogic.Name         = "ThreadLogic";
            mThreadLogic.IsBackground = true;
            mThreadLogic.Start();
            mStopwatch.Reset();
        }