Beispiel #1
0
        public void LoadMap(RdlTagCollection tags)
        {
            _tags = tags;
            this.Tiles.Clear();

            List <RdlPlace> places = tags.GetObjects <RdlPlace>();

            foreach (var place in places)
            {
                Tile tile = new Tile(place);

                //var terrain = Game.Terrain.Where(t => t.ID == place.Properties.GetValue<int>("Terrain")).FirstOrDefault();
                //if (terrain != null)
                //{
                //    Color color = new Color();
                //    color.A = (byte)((terrain.Color & -16777216) >> 0x18);
                //    color.R = (byte)((terrain.Color & 0xff0000) >> 0x10);
                //    color.G = (byte)((terrain.Color & 0xff00) >> 8);
                //    color.B = (byte)(terrain.Color & 0xff);

                //    tile.Fill = Brushes.GetBrush(color);
                //}

                this.Tiles.Add(tile);
            }

            this.RenderMap();
        }
Beispiel #2
0
        public void LoadMap(RdlTagCollection tags)
        {
            _tags = tags;
            this.Tiles.Clear();

            List <RdlPlace> places = tags.GetObjects <RdlPlace>();

            Logger.LogDebug("Loading {0} map tags into the map control.", places.Count);
            foreach (var place in places)
            {
                this.Tiles.Add(new Tile(place));
            }

            this.RenderMap();
        }
Beispiel #3
0
        private static void ProcessTerrain(RdlTagCollection tags)
        {
            List <RdlTerrain> terrain = tags.GetObjects <RdlTerrain>();

            if (terrain.Count > 0)
            {
                Game.Terrain.Clear();
                foreach (var t in terrain)
                {
                    Game.Terrain.Add(new Terrain {
                        ID = t.ID, Name = t.Name, Color = t.Color, ImageUri = t.ImageUrl
                    });
                }
            }
        }
Beispiel #4
0
        private void ProcessTerrain(RdlTagCollection tags)
        {
            List <RdlTerrain> terrain = tags.GetObjects <RdlTerrain>();

            if (terrain.Count > 0)
            {
                Game.Terrain.Clear();
                foreach (var t in terrain)
                {
                    Game.Terrain.Add(new Terrain {
                        ID = t.ID, Name = t.Name, Color = t.Color, ImageUri = t.ImageUrl
                    });
                }
                if (_hasRequiredQuota && StorageManager.RequiresFileUpdate(FileNames.Terrain))
                {
                    StorageManager.WriteTags(FileNames.Terrain, terrain.ToTagCollection());
                }
            }
        }
Beispiel #5
0
        private void ProcessCharacters(RdlTagCollection tags)
        {
            List <RdlPlayer> players = tags.GetObjects <RdlPlayer>();

            if (players.Count > 0)
            {
                // Load the player's character avatar panels.
                var avatars = new List <Avatar>();
                for (int i = 0; i < players.Count; i++)
                {
                    avatars.Add(new Avatar(players[i]));
                }
                lstAvatars.ItemsSource = avatars;
            }
            else
            {
                // Display the new player dialog.
                var win = new NewPlayerIntroWindow();
                win.Closed += (o, args) =>
                {
                    if (win.DialogResult == true)
                    {
                        ScreenManager.SetScreen(new CreateCharacterWizardScreen());
                    }
                };
                win.Show();
            }

            // Get a USER tag that contains the max number of characters available to this user.
            RdlUser user = tags.Where(t => t.TagName == "USER").FirstOrDefault() as RdlUser;

            if (user != null)
            {
                if (players.Count >= user.MaxCharacters)
                {
                    btnCreateCharacter.IsEnabled = false;
                }
                // TODO: Purchase Button
            }
        }
        private void ProcessPlayCommandResponse(RdlTagCollection tags)
        {
            this.ProcessTags(tags);

            // Player
            var player = tags.GetObjects <RdlPlayer>().Where(p => p.ID == _playerId).FirstOrDefault();

            if (player != null)
            {
                this.Player = new Avatar(player);

                // Start Admin Mode
                ServerManager.Instance.SendUserCommand("ADMINBUILD");

                // Load Maps
                ServerManager.Instance.SendUserCommand("ADMINGETMAPS");

                // Place Types
                ServerManager.Instance.SendUserCommand("ADMINGETPLACETYPES");

                // Terrain
                ddlTerrain.ItemsSource = Game.Terrain;

                // Templates
                this.ItemTemplates     = new List <RdlActor>();
                this.CreatureTemplates = new List <RdlActor>();
                this.NpcTemplates      = new List <RdlActor>();
                this.QuestTemplates    = new List <RdlActor>();
                ServerManager.Instance.SendUserCommand("ADMINGETITEMTEMPLATES", this.OnGetItemTemplatesResponse);
                ServerManager.Instance.SendUserCommand("ADMINGETCREATURETEMPLATES", this.OnGetCreatureTemplatesResponse);
                ServerManager.Instance.SendUserCommand("ADMINGETNPCTEMPLATES", this.OnGetNpcTemplatesResponse);
                ServerManager.Instance.SendUserCommand("ADMINGETQUESTTEMPLATES", this.OnGetQuestTemplatesResponse);

                // Map
                ServerManager.Instance.SendCommand("MAP", this.Player.X, this.Player.Y, this.Player.Z, 15, 15);
            }
        }
        private void ProcessTags(RdlTagCollection tags)
        {
            // AuthKey tags
            this.UpdateAuthKeys(tags.Where(t => t.TagName == "AUTH").Select(t => t as RdlAuthKey));

            // Place Types
            var placeTypes = tags.Where(t => t.TagName == "PLACETYPE" && t.TypeName == "PLACETYPE");

            if (placeTypes.Count() > 0)
            {
                List <string> types = new List <string>();
                foreach (var pt in placeTypes)
                {
                    types.Add(pt.GetArg <string>(0));
                }
                ddlPlaceTypes.ItemsSource = types;
            }

            // Properties
            if (this.Player != null)
            {
                var properties = tags.GetProperties(_playerId);
                if (properties != null && properties.Count > 0)
                {
                    // Location
                    Point3 location = new Point3(this.Player.X, this.Player.Y, this.Player.Z);

                    // Loop through all of the properties.
                    foreach (var item in properties)
                    {
                        // All other properties.
                        this.Player.Properties.SetValue(item.Name, item.Value);
                    }

                    Point3 playerLoc = new Point3(this.Player.X, this.Player.Y, this.Player.Z);
                    if (location != playerLoc)
                    {
                        ctlMap.SetView(playerLoc);
                    }
                }
            }

            int count = tags.GetObjects <RdlPlace>().Count;

            if (count == 1)
            {
                // Place
                RdlPlace place = tags.GetObjects <RdlPlace>().FirstOrDefault();
                if (place != null)
                {
                    _placeId                   = place.ID;
                    _currentLocation           = new Point3(place.X, place.Y, place.Z);
                    txtPlaceName.Text          = place.Name;
                    txtPlaceDesc.Text          = place.Properties.GetValue <string>("Description") ?? String.Empty;
                    ddlPlaceTypes.SelectedItem = place.Properties.GetValue <string>("RuntimeType");
                    ddlTerrain.SelectedItem    = Game.Terrain.Where(t => t.ID == place.Properties.GetValue <int>("Terrain")).FirstOrDefault();
                    ctlMap.Tiles.Add(new Tile(place));
                    ctlMap.SetView(new Point3(this.Player.X, this.Player.Y, this.Player.Z));
                    ctlMap.HideLoading();
                }
                List <RdlActor> actors = tags.GetActors();
                if (actors.Count > 0)
                {
                    lstActors.ItemsSource = actors;
                }
            }
            else if (count > 1)
            {
                // Map
                ctlMap.LoadMap(tags);
                ctlMap.SetView(new Point3(this.Player.X, this.Player.Y, this.Player.Z));
                ctlMap.HideLoading();
            }

            // Chat Messages
            ctlChat.WriteMessages(tags);
        }