public Location(City _city) { InitializeComponent(); city = _city; idTag.Text = city.Id.ToString(); idCityName.Text = city.Name; }
public Location(City _city, uint location, TcpClient client, Character _character, long _timeDifference, Map _map) { InitializeComponent(); city = _city; currentLocation = location; socket = client.Client; character = _character; timeDifference = _timeDifference; map = _map; if (character.Level < city.AccessLevel) { BtnTravel.IsEnabled = false; } CityTag.Text = city.Id.ToString(); CityName.Text = city.Name; AccessLevel.Text = city.AccessLevel.ToString(); _travelTime = GetShortestPath(); travelTime.Text = _travelTime.ToString(); }
public Map(TcpClient clientSocket) { socket = clientSocket.Client; uint citiesNumber = 0; string[] citiesData; Command request = new Command(); request.Request(ClientCmd.GET_CITIES); citiesData = request.Apply(socket, true); //obliczenie liczby miast citiesNumber = uint.Parse(citiesData[1]); for (int i = 2; i < citiesData.Length; i += 6) { City city = new City( uint.Parse(citiesData[i]), //id citiesData[i + 1], //name uint.Parse(citiesData[i + 2]), //accessLevel uint.Parse(citiesData[i + 3]), //leftCoordinate uint.Parse(citiesData[i + 4]), //topCoordinate citiesData[i + 5] //icon ); cityData.Add(city); } //tworzenie buttonów na podstawie danych z bazki foreach (City city in cityData) { //najpierw sam button Button btn = new Button(); //potem stackpanel przechowujący jego zawartość StackPanel btnContent = new StackPanel(); //obrazek, który będzie jego zawartością Image btnImage = new Image(); //i jego źródło btnImage.Source = new BitmapImage(new Uri("pack://application:,,,/Images/" + city.Icon + ".png")); btnImage.Width = 44; btnImage.Height = 60; //oraz textblock, który będzie wyświetlał nazwę miasta TextBlock btnText = new TextBlock(); //przypisanie do texblocka nazwy miasta btnText.Text = city.Name; //szerokość stała na 50 px btnText.Width = 50; //nazwa kontrolki aby można było dynamicznie zmieniać kolor tekstu w buttonie btnText.Name = "city" + city.Id + "Name"; //wyśrodkowanie tekstu btnText.TextAlignment = TextAlignment.Center; //ustawienie stackpanelu na 40 szerokości i 75 wysokości (obrazek wtedy sam się zeskaluje) btnContent.Width = 50; btnContent.Height = 75; btnContent.Margin = new Thickness(3, 3, 3, 3); //wyśrodkowanie zawartości w pionie do środka btnContent.VerticalAlignment = VerticalAlignment.Center; //dodanie obrazka i texblocka z nazwą miasta do stackpanelu btnContent.Children.Add(btnImage); btnContent.Children.Add(btnText); //nazwanie buttona miasta btn.Name = "city" + city.Id; //jego szerokość na 55 px btn.Width = 55; //cały content wyśrodkowany btn.HorizontalAlignment = HorizontalAlignment.Center; //przypisanie stackpanelu jako zawartości buttona btn.Content = btnContent; //dodanie tagu z identyfikatorem miasta btn.Tag = city.Id; //określenie położenia na mapie Canvas.SetLeft(btn, city.LeftCoordinate); Canvas.SetTop(btn, city.TopCoordinate); //dodanie do listy buttonów mapy cityButtons.Add(btn); } }