//--------------------------------------------------------------------- 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); } }
//--------------------------------------------------------------------- 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); } }
//------------------------------------------------------------------------- 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>(); }
//------------------------------------------------------------------------- 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>(); }
//--------------------------------------------------------------------- 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; }
//--------------------------------------------------------------------- public EntityRpcSessionSuperSocketS(EntityMgr entity_mgr, SuperSocketSession socket) { mEntityMgr = entity_mgr; mSocket = socket; mSocket.OnSocketClosed = _onSocketClose; mSocket.OnSocketReceive = _onSocketReceive; mSocket.OnSocketError = _onSocketError; socket.IsConnected = true; }
//--------------------------------------------------------------------- public EntityRpcSessionSuperSocketC(EntityMgr entity_mgr) { mEntityMgr = entity_mgr; mSocket = new SuperSocketClient(); mSocket.OnSocketReceive += _onSocketReceive; mSocket.OnSocketConnected += _onSocketConnected; mSocket.OnSocketClosed += _onSocketClosed; mSocket.OnSocketError += _onSocketError; }
//------------------------------------------------------------------------- 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); }
//--------------------------------------------------------------------- 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>(); }
//--------------------------------------------------------------------- public void close() { // 通知业务层销毁 if (mListener != null) { mListener.release(); } if (mEntityMgr != null) { mEntityMgr.destroy(); mEntityMgr = null; } }
//--------------------------------------------------------------------- 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); } }
//------------------------------------------------------------------------- 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>(); }
//------------------------------------------------------------------------- // 玩家进入桌子 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)); }
//--------------------------------------------------------------------- public T genEvent <T>() where T : EntityEvent, new() { var publisher = EntityMgr.getDefaultEventPublisher(); return(publisher.genEvent <T>()); }
//------------------------------------------------------------------------- //------------------------------------------------------------------------- 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); }
//--------------------------------------------------------------------- public ClientSession(EntityMgr entity_mgr) { }
//--------------------------------------------------------------------- protected abstract void onInit(EntityMgr entity_mgr);
//--------------------------------------------------------------------- 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); }
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; } }
//--------------------------------------------------------------------- public GatewaySession(EntityMgr entity_mgr) { }
//--------------------------------------------------------------------- public override RpcSession createRpcSession(EntityMgr entity_mgr) { return(new GatewaySession(entity_mgr)); }
private void Awake() { inst = this; }
// Use this for initialization void Start() { target = EntityMgr.Instance().GetEnttiyById(CommonEnum.hero_id).transform; _offset = transform.position - target.position; }
//------------------------------------------------------------------------- public void init(EntityMgr entity_mgr, Entity et_node) { EbLog.Note("EsEngineListener.init()"); }
//--------------------------------------------------------------------- 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; }
//------------------------------------------------------------------------- void _onPropGoldChanged(IProp prop, object param) { EntityMgr.getDefaultEventPublisher().genEvent <EvEntityGoldCoinChanged>().send(null); }
//--------------------------------------------------------------------- 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; }
//--------------------------------------------------------------------- protected abstract void regComponentFactory(EntityMgr entity_mgr);
//--------------------------------------------------------------------- public void close() { // 通知业务层销毁 if (mListener != null) { mListener.release(); mListener = null; } EbLog.Note("-----------EsEngine销毁开始--------------"); if (mEntityMgr != null) { mEntityMgr.destroy(); mEntityMgr = null; } EbLog.Note("-----------EsEngine销毁完成--------------"); }
//------------------------------------------------------------------------- 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); }
//--------------------------------------------------------------------- public override RpcSession createRpcSession(EntityMgr entity_mgr) { return new GatewaySession(entity_mgr); }
//------------------------------------------------------------------------- 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; } }
//_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(); }
//--------------------------------------------------------------------- public EbGridRegion(EntityMgr entity_mgr) { Publisher = new EntityEventPublisher(entity_mgr); SetEntity = new HashSet<Entity>(); }
//--------------------------------------------------------------------- public override RpcSession createRpcSession(EntityMgr entity_mgr) { return new RpcSessionTcpClient(entity_mgr); }
//------------------------------------------------------------------------- // 桌子通知 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; } }
//--------------------------------------------------------------------- public EbGrid(EntityMgr entity_mgr) { mEntityMgr = entity_mgr; }
//--------------------------------------------------------------------- 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(); }