/// <summary> /// 请求进入场景 /// </summary> public virtual async Task <RoleEnterZoneResponse> RequestEnterZoneAsync(RoleEnterZoneRequest req) { var rd = service.roleModule.GetRoleData(); req.roleUUID = service.roleID; req.roleSessionName = service.sessionName; req.roleSessionNode = service.sessionNode; req.roleLogicName = service.SelfAddress.ServiceName; req.roleLogicNode = service.SelfAddress.ServiceNode; req.roleDisplayName = rd.name; req.roleUnitTemplateID = rd.unit_template_id; req.roleData = ToRoleBattleData(req);//< ---战斗相关数据 req.LastZoneSaveData = rd.last_zone_saved; req.lastPublicMapID = rd.last_public_mapID; req.lastPublicMapUUID = rd.last_public_area_uuid; req.lastPublicPos = rd.last_public_map_pos; req.expectAreaNode = service.SelfAddress.ServiceNode; var result = await this.areaManager.CallAsync <RoleEnterZoneResponse>(req); if (RoleEnterZoneResponse.CheckSuccess(result)) { currentArea = await service.Provider.GetAsync(new RemoteAddress(result.areaName, result.areaNode)); this.service.roleModule.SaveEnterZoneInfo(result); CurZoneChange(req, result); } else { service.log.Error("Enter Zone Error : " + result); } return(result); }
protected virtual void CurZoneChange(RoleEnterZoneRequest req, RoleEnterZoneResponse result) { //变更过场景,场景线缓存失效. mZoneInfoDirtyFlag = true; OnEnterZone?.Invoke(req, result); }