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(); }
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(); }
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 }); } } }
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()); } } }
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); }