Beispiel #1
0
        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()
            });
        }
Beispiel #2
0
        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);
        }
Beispiel #4
0
        public override string ToString()
        {
            RdlTagCollection tags = new RdlTagCollection();

            tags.AddRange(this.ToRdl());
            return(tags.ToString());
        }
Beispiel #5
0
        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();
            }
        }
Beispiel #6
0
        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);
            }
        }