public static MapChunk GetMapChunk(string mapName, int startX, int startY, bool includeActors) { RdlTagCollection tags = new RdlTagCollection(); List <Place> places = Game.Server.World.Map.GetMap(mapName, startX, startY, Game.Server.World.Map.DefaultWidth, Game.Server.World.Map.DefaultHeight); if (places.Count > 0) { for (int i = 0; i < places.Count; i++) { tags.AddRange(places[i].ToRdl()); if (includeActors) { // Send down actors in the places as well. foreach (var actor in places[i].Children) { if (actor.ObjectType != ObjectType.Player) { tags.AddRange(actor.ToRdl()); } } } } } return(new MapChunk { MapName = mapName, StartX = startX, StartY = startY, Tags = tags.ToString() }); }
private void ProcessSkillGroups(RdlTagCollection tags) { List <RdlActor> groups = tags.GetTags <RdlActor>(RdlTagName.OBJ.ToString(), RdlObjectTypeName.ACTOR.ToString()); List <RdlProperty> skills = tags.GetTags <RdlProperty>(RdlTagName.OBJ.ToString(), RdlObjectTypeName.PROP.ToString()); if (groups.Count > 0) { Game.SkillGroups.Clear(); foreach (var group in groups) { List <Skill> list = new List <Skill>(); foreach (var skill in skills.Where(s => s.ID == group.ID)) { list.Add(new Skill { Name = skill.Name, Value = Convert.ToInt32(skill.Value) }); } Game.SkillGroups.Add(group.Name, list); } if (_hasRequiredQuota && StorageManager.RequiresFileUpdate(FileNames.SkillGroups)) { RdlTagCollection groupTags = new RdlTagCollection(); groupTags.AddRange(groups.ToTagCollection()); groupTags.AddRange(skills.ToTagCollection()); StorageManager.WriteTags(FileNames.SkillGroups, groupTags); } } }
private void btnSavePlace_Click(object sender, RoutedEventArgs e) { RdlPlace place = new RdlPlace(_placeId, txtPlaceName.Text, _currentLocation.X, _currentLocation.Y, _currentLocation.Z); List <RdlProperty> props = new List <RdlProperty>(); props.Add(new RdlProperty(place.ID, "Description", txtPlaceDesc.Text)); props.Add(new RdlProperty(place.ID, "RuntimeType", ddlPlaceTypes.SelectedItem)); props.Add(new RdlProperty(place.ID, "Terrain", ((Terrain)ddlTerrain.SelectedItem).ID)); RdlTagCollection tags = new RdlTagCollection(); tags.Add(place); tags.AddRange(props.ToArray()); string cmdName = "ADMINCREATE"; if (_placeId > 0) { cmdName = "ADMINSAVE"; } RdlCommand cmd = new RdlCommand(cmdName); if (_placeId > 0) { cmd.Args.Add(_placeId); } else { cmd.Args.Add("place"); } //ServerManager.Instance.SendCommand(Settings.UserAuthKey, "User", cmd, null, tags); }
public override string ToString() { RdlTagCollection tags = new RdlTagCollection(); tags.AddRange(this.ToRdl()); return(tags.ToString()); }
private void btnSave_Click(object sender, RoutedEventArgs e) { ctlWait.Show("Saving map informations..."); var places = _tiles.Where(t => t.Place.ID == 0 || t.IsModified).Select(t => t.Place); RdlTagCollection tags = new RdlTagCollection(); _placesToSaveCount = places.Count(); _placesSavedCount = 0; foreach (var place in places) { tags.Add(place); tags.AddRange(place.Properties.ToArray()); //BuilderServiceClient client = ServiceManager.CreateBuilderServiceClient(); //client.SavePlacesCompleted += new EventHandler<SavePlacesCompletedEventArgs>(client_SavePlacesCompleted); //client.SavePlacesAsync(_token, tags.ToString(), place); tags = new RdlTagCollection(); } }
private void tile_ActorDrop(object sender, ActorEventArgs e) { Tile tile = sender as Tile; if (tile != null) { ctlWait.Show("Saving actor information..."); e.Actor.OwnerID = tile.Place.ID; tile.Place.Actors.Add(e.Actor); this.PlaceChanged(new PlaceEventArgs(tile.Place)); RdlTagCollection tags = new RdlTagCollection(); tags.Add(e.Actor); tags.AddRange(e.Actor.Properties.ToArray()); //BuilderServiceClient client = ServiceManager.CreateBuilderServiceClient(); //client.SaveActorCompleted += new EventHandler<SaveActorCompletedEventArgs>(client_SaveActorCompleted); //client.SaveActorAsync(_token, tags.ToString()); this.TileClick(tile); } }