public AreaZoneNode(AreaService svc, CreateZoneNodeRequest create, MapTemplateData map_temp) { Alloc.RecordConstructor(GetType().ToVisibleName() + ":" + map_temp.id); this.log = LoggerFactory.GetLogger(string.Format("{0}-{1}", GetType().Name, create.managerZoneUUID)); this.service = svc; this.create = create; this.map_temp = map_temp; this.uuid = create.managerZoneUUID; this.node = CreateZoneNode(create); }
/// <summary> /// 从地图配置表,重新构建场景传送点 /// </summary> /// <param name="from_sd"></param> /// <param name="from_map"></param> protected virtual void FillSceneTransport(SceneData from_sd, MapTemplateData from_map) { if (from_map.connect == null) { log.ErrorFormat("from_map connect = null : FromMap={0}", from_map.name); return; } foreach (var link in from_map.connect) { var from_flag = from_sd.Regions.Find(region => { return(region.Name == link.from_flag_name); }); if (from_flag == null) { log.ErrorFormat("Transport From Flag Not Found : FromMap={0} FromScene={1} >>>FromFlag={2}<<<", from_map, from_sd, link.from_flag_name); continue; } var to_map = RPGServerTemplateManager.Instance.GetMapTemplate(link.to_map_id); if (to_map == null) { log.ErrorFormat("Transport Target Map Not Found : FromMap={0} >>>ToMap={1}<<<", from_map, link.to_map_id); continue; } var to_zone = GetSceneAsCache(to_map.zone_template_id); if (to_zone == null) { log.ErrorFormat("Transport Target Scene Not Found : FromMap={0} ToMap={1} >>>ToZone={2}<<<", from_map, to_map, to_map.zone_template_id); continue; } var to_flag = to_zone.Regions.Find(region => { return(region.Name == link.to_flag_name); }); if (to_flag == null) { log.ErrorFormat("Transport Target Flag Not Found : FromMap={0} ToMap={1} ToScene={2} >>>ToFlag={2}<<<", from_map, to_map, to_zone, link.to_flag_name); continue; } var tp = from_flag.GetAbilityOf <SceneTransportAbilityData>(); if (tp != null) { log.ErrorFormat("Transport Already Exist : FromMap={0} FromZone={1} FromFlag={2} >>>Ability={3}<<<", from_map, from_sd, from_flag.Name, tp); } else { tp = new SceneTransportAbilityData() { AcceptForceForAll = true, Name = "fill with " + from_map, NextSceneID = to_map.id, NextScenePosition = link.to_flag_name, }; from_flag.Abilities.Add(tp); log.InfoFormat("Fill Scene Transport : FromMap={0} FromZone={1} FromFlag={2} ToMap={3} Ability={4}", from_map, from_sd, from_flag.Name, to_map, tp); } } }
protected virtual AreaZoneNode CreateZoneNode(CreateZoneNodeRequest create, MapTemplateData map) { return(new AreaZoneNode(this, create, map)); }
public virtual bool AllowChangeLine(MapTemplateData data) { return(false); }
/// <summary> /// 一次性地图,每次都重新分配. /// </summary> /// <param name="data"></param> /// <returns></returns> public virtual bool IsDisposableMap(MapTemplateData data) { return(false); }
/// <summary> /// 是否是连服场景. /// </summary> /// <param name="data"></param> /// <returns></returns> public virtual bool IsCrossServerMap(MapTemplateData data) { return(false); }
//-------------------------------------------------------------------------------------- /// <summary> /// 野外. /// </summary> /// <param name="data"></param> /// <returns></returns> public virtual bool IsPublicMap(MapTemplateData data) { return(true); }