Exemple #1
0
 private List <TileStyle> StylesSelector(List <TileCategory> listcat, TileCategory category)
 {
     return((from cat in listcat
             from s in category.Styles
             where cat.FindStyleByName(s.Name) != null
             select s).ToList());
 }
Exemple #2
0
        static void begin_map()
        {
            List <TileCategory> options = new List <TileCategory>();

            if (fCorridorTiles.Count != 0)
            {
                options.Add(TileCategory.Plain);
            }
            if (fTiles[TileCategory.Stairway].Count != 0)
            {
                options.Add(TileCategory.Stairway);
            }

            if (options.Count == 0)
            {
                return;
            }

            int          n      = Session.Random.Next() % options.Count;
            TileCategory option = options[n];

            switch (option)
            {
            case TileCategory.Plain:
                // Start with a corridor
                add_corridor(null, false);
                break;

            case TileCategory.Stairway:
                // Start with a stairway
                add_stairway(null);
                break;
            }
        }
Exemple #3
0
    public void SetTileCategory()
    {
        switch (tileType)
        {
        case TileType.Boots: tileCategory = TileCategory.Armor; break;

        case TileType.Chestplate: tileCategory = TileCategory.Armor; break;

        case TileType.Helmet: tileCategory = TileCategory.Armor; break;

        case TileType.Axe: tileCategory = TileCategory.Weapon; break;

        case TileType.Bow: tileCategory = TileCategory.Weapon; break;

        case TileType.Dagger: tileCategory = TileCategory.Weapon; break;

        case TileType.Hammer: tileCategory = TileCategory.Weapon; break;

        case TileType.Shield: tileCategory = TileCategory.Weapon; break;

        case TileType.Sword: tileCategory = TileCategory.Weapon; break;

        case TileType.Wand: tileCategory = TileCategory.Weapon; break;
        }
    }
Exemple #4
0
        public override void Populate()
        {
            var txtFileLines = File.ReadAllLines(Install.GetPath("floors.txt"));
            var typeNames    = txtFileLines[1].Split(Separators);

            for (int i = 2; i < txtFileLines.Length; i++)
            {
                var infos    = txtFileLines[i].Split('\t');
                var category = new TileCategory();
                category.Name = infos.Last();

                var style = new TileStyle();
                category.AddStyle(style);

                for (int j = 1; j < typeNames.Length - 2; j++)
                {
                    if (infos[j] != "0")
                    {
                        var tile = new TileFloor {
                            Id = short.Parse(infos[j])
                        };
                        style.AddTile(tile);
                        tile.ChangeFloorPosition(j);
                    }
                }
                Categories.Add(category);
            }
        }
Exemple #5
0
        public override void Populate()
        {
            var          txtFileLines = File.ReadAllLines(Install.GetPath("misc.txt"));
            var          typeNames    = txtFileLines[1].Split(Separators);
            TileCategory category     = null;

            for (int i = 2; i < txtFileLines.Length; i++)
            {
                var infos = txtFileLines[i].Split('\t');

                if (infos[1] == "0")
                {
                    category      = new TileCategory(Int32.Parse(infos[2]));
                    category.Name = infos.Last();
                    Categories.Add(category);
                }
                var style = new TileStyle();
                category.AddStyle(style);
                style.Name  = infos.Last();
                style.Index = Int32.Parse(infos[1]);
                for (int j = 3; j < typeNames.Length - 2; j++)
                {
                    if (infos[j] != "0")
                    {
                        var tile = new TileMisc {
                            Id = short.Parse(infos[j])
                        };
                        style.AddTile(tile);
                    }
                }
            }
            TilesCategorySDKModule.Supp.PositionCheck(Categories);
        }
        public void MassSubstitue(TileCategory categoryContained, TileCategory categoryOutside)
        {
            var oldTiles = MultiTiles.Select(tile => categoryContained.FindTile(tile.Id)).Where(t => t != null);

            foreach (var oldtile in oldTiles)
            {
                var oldIdDescription = _tileData.GetItemTile(oldtile.Id);
                var tiles = categoryOutside.FindByPosition(oldtile.PositionString);
                var tileDataTiles =
                    tiles.Where(
                        tile =>
                        _tileData.GetItemTile(tile.Id).Height == oldIdDescription.Height &&
                        oldIdDescription.Flags.HasFlag(TileFlag.Window) ==
                        _tileData.GetItemTile(tile.Id).Flags.HasFlag(TileFlag.Window) &&
                        oldIdDescription.Flags.HasFlag(TileFlag.Wall) ==
                        _tileData.GetItemTile(tile.Id).Flags.HasFlag(TileFlag.Wall) &&
                        oldIdDescription.Flags.HasFlag(TileFlag.Roof) ==
                        _tileData.GetItemTile(tile.Id).Flags.HasFlag(TileFlag.Roof) &&
                        oldIdDescription.Flags.HasFlag(TileFlag.Surface) ==
                        _tileData.GetItemTile(tile.Id).Flags.HasFlag(TileFlag.Surface));
                var tmp = tileDataTiles.FirstOrDefault();
                if(tmp!= null)
                MassSet(oldtile.Id,tmp);
            }
            Categories.Remove(categoryContained);
            Categories.Add(categoryOutside);
            UpdateCategories();

            RaisePropertyChanged(() => Categories);
            RaisePropertyChanged(() => MultiTiles);
            RaisePropertyChanged(()=>Text);

        }
        public override void Populate()
        {
            var          txtFileLines = File.ReadAllLines(DataManager.Location.LocalPath + "roofs.txt");
            var          typeNames    = txtFileLines[1].Split(Separators);
            TileCategory category     = null;

            for (int i = 2; i < txtFileLines.Length; i++)
            {
                var infos = txtFileLines[i].Split('\t');

                if (infos[1] == "0")
                {
                    category = new TileCategory(Int32.Parse(infos[2]), TypeTile.Roofs)
                    {
                        Name = infos.Last()
                    };
                    Categories.Add(category);
                }
                var style = new TileStyle();
                category.AddStyle(style);
                style.Name = infos.Last();
                style.Id   = Int32.Parse(infos[1]);
                for (int j = 3; j < typeNames.Length - 3; j++)
                {
                    if (infos[j] != "0")
                    {
                        var tile = new TileRoof {
                            Id = uint.Parse(infos[j])
                        };
                        style.AddTile(tile);
                        tile.Position = (j - 2);
                    }
                }
            }
        }
Exemple #8
0
        public void MassSubstitue(TileCategory categoryContained, TileCategory categoryOutside)
        {
            var oldTiles = MultiTiles.Select(tile => categoryContained.FindTile(tile.Id)).Where(t => t != null);

            foreach (var oldtile in oldTiles)
            {
                var oldIdDescription = _tileData.GetItemTile(oldtile.Id);
                var tiles            = categoryOutside.FindByPosition(oldtile.PositionString);
                var tileDataTiles    =
                    tiles.Where(
                        tile =>
                        _tileData.GetItemTile(tile.Id).Height == oldIdDescription.Height &&
                        oldIdDescription.Flags.HasFlag(TileFlag.Window) ==
                        _tileData.GetItemTile(tile.Id).Flags.HasFlag(TileFlag.Window) &&
                        oldIdDescription.Flags.HasFlag(TileFlag.Wall) ==
                        _tileData.GetItemTile(tile.Id).Flags.HasFlag(TileFlag.Wall) &&
                        oldIdDescription.Flags.HasFlag(TileFlag.Roof) ==
                        _tileData.GetItemTile(tile.Id).Flags.HasFlag(TileFlag.Roof) &&
                        oldIdDescription.Flags.HasFlag(TileFlag.Surface) ==
                        _tileData.GetItemTile(tile.Id).Flags.HasFlag(TileFlag.Surface));
                var tmp = tileDataTiles.FirstOrDefault();
                if (tmp != null)
                {
                    MassSet(oldtile.Id, tmp);
                }
            }
            Categories.Remove(categoryContained);
            Categories.Add(categoryOutside);
            UpdateCategories();

            RaisePropertyChanged(() => Categories);
            RaisePropertyChanged(() => MultiTiles);
            RaisePropertyChanged(() => Text);
        }
        public override void Populate()
        {
            var txtFileLines = File.ReadAllLines(DataManager.Location.LocalPath + "doors.txt");
            var typeNames    = txtFileLines[1].Split(Separators);

            for (int i = 2; i < txtFileLines.Length; i++)
            {
                var infos    = txtFileLines[i].Split('\t');
                var category = new TileCategory();
                category.Name = infos.Last();

                var style = new TileStyle();
                category.AddStyle(style);

                for (int j = 1; j < typeNames.Length - 2; j++)
                {
                    if (infos[j] != "0")
                    {
                        var tile = new TileDoor {
                            Id = uint.Parse(infos[j])
                        };
                        style.List.Add(tile);
                    }
                }
                Categories.Add(category);
            }
            TilesCategorySDKModule.Supp.PositionCheck(Categories);
        }
        private void ChangeDropdownSelection(object sender, SelectionChangedEventArgs e)
        {
            TileCategory category = !(CategorySelector.SelectedItem is string item)
                ? LoadedTileCategories[0]
                : LoadedTileCategories.First(c => c.Name == item.ToLowerInvariant().Replace(' ', '_'));

            _selectorGridCreator.CreateSelectionPanel(category);
        }
        private void ChangeDropdownSelection(object sender, SelectionChangedEventArgs e)
        {
            TileCategory category = !(CategorySelector.SelectedItem is string item)
                ? ResourceHolder.Get.GetFirstTileCategory()
                : ResourceHolder.Get.GetCategoryByName(item);

            _selectorGridCreator.CreateSelectionPanel(category);
        }
Exemple #12
0
        private TileStyle Selector(TileCategory tileCategory, TileStyle s)
        {
            var style = from sh in tileCategory.List
                        where sh.Name.Split(Separator, StringSplitOptions.RemoveEmptyEntries).Last() == s.Name.Split(Separator, StringSplitOptions.RemoveEmptyEntries).Last()
                        select sh;

            return(style.FirstOrDefault());
        }
Exemple #13
0
 public TileType(string codeName, Int2 gridSize, string toolboxIconSprite, TileCategory category, ITileTypeData data)
 {
     DebugEx.Assert(Sprite.IsValidElmFunctionName(codeName));
     CodeName          = codeName;
     GridSize          = gridSize;
     ToolboxIconSprite = toolboxIconSprite;
     Category          = category;
     Data = data;
 }
Exemple #14
0
 public TileSelectForm(System.Drawing.Size tilesize, TileCategory category)
 {
     this.InitializeComponent();
     Application.Idle     += new EventHandler(this.Application_Idle);
     this.fTileSize        = tilesize;
     this.fCategory        = category;
     this.MatchCatBtn.Text = string.Concat("Show only tiles in category: ", this.fCategory);
     this.update_tiles();
 }
Exemple #15
0
        private TileCategory RemoveDuplicates(IEnumerable <TileCategory> listcat, TileCategory cat)
        {
            var styles = StylesSelector(listcat, cat);

            foreach (TileStyle tileStyle in styles)
            {
                cat.List.Remove(tileStyle);
            }
            return(cat);
        }
        public void CreateSelectionPanel(TileCategory tileCategory)
        {
            ClearSelectorGrid();
            int gridRowIndex = 0;

            IEnumerable <string>     groups       = GetGroups(tileCategory);
            IEnumerable <TileObject> otherObjects = GetStandaloneObjects(tileCategory);

            CreateGroups(groups, tileCategory.TileObjects, ref gridRowIndex);
            CreateStandaloneObjects(otherObjects, ref gridRowIndex);
        }
Exemple #17
0
        public void MassRemove(TileCategory categoryToRemove)
        {
            var tiletoremove = new List <MultiTile>(MultiTiles.Where(t => categoryToRemove.FindTile(t.Id) != null));

            foreach (var multiTile in tiletoremove)
            {
                _multiTiles.Remove(multiTile);
            }
            RaisePropertyChanged(() => Text);
            UpdateCategories();
        }
        private void UpdateSelectorComboBox(ResourceType type)
        {
            ResourceHolder.Get.ChangeResourceType(type);
            List <TileCategory> categories = ResourceHolder.Get.GetSelectedCategories();
            TileCategory        category   = ResourceHolder.Get.GetFirstTileCategory();

            IEnumerable <string> strings = ResourceHolder.Get.GetCategoryName();

            CategorySelector.ItemsSource   = strings;
            CategorySelector.SelectedIndex = 0;
            _selectorGridCreator.UpdateTileGroup(categories);
            _selectorGridCreator.CreateSelectionPanel(category);
        }
 public void MiscSubstitue(TileCategory misc)
 {
     var miscTiles =
         from mt in MultiTiles
         where Misc.Contains(mt.Tile.GetStyle().GetCategory())
         select mt;
     foreach (var multiTile in miscTiles)
     {
         var misctile = multiTile.Tile;
         var miscs = misc.FindByPosition(misctile.Position);
         multiTile.SetTile(miscs.First());
     }
 }
Exemple #20
0
        public TileCategory GetFirstTileCategory()
        {
            TileCategory nullPlaceholder = new TileCategory("", new List <TileObject>());

            switch (CurrentType)
            {
            case ResourceType.Terrain: return(Get.Terrain.ElementAtOrDefault(0) ?? nullPlaceholder);

            case ResourceType.Structure: return(Get.Structures.ElementAtOrDefault(0) ?? nullPlaceholder);

            default: return(Get.Foliage.ElementAtOrDefault(0) ?? nullPlaceholder);
            }
        }
        public TileSelectForm(Size tilesize, TileCategory category)
        {
            InitializeComponent();

            Application.Idle += new EventHandler(Application_Idle);

            fTileSize = tilesize;
            fCategory = category;

            MatchCatBtn.Text = "Show only tiles in category: " + fCategory;

            update_tiles();
        }
Exemple #22
0
        public void RoofsSubstitue(TileCategory roof)
        {
            var miscTiles =
                from mt in MultiTiles
                where Roofs.Contains(mt.Tile.GetStyle().GetCategory())
                select mt;

            foreach (var multiTile in miscTiles)
            {
                var rooftile = multiTile.Tile as TileRoof;
                var roofs    = roof.FindByPosition(rooftile.PosRoof);
                multiTile.SetTile(roofs.First());
            }
        }
Exemple #23
0
        public void MiscSubstitue(TileCategory misc)
        {
            var miscTiles =
                from mt in MultiTiles
                where Misc.Contains(mt.Tile.GetStyle().GetCategory())
                select mt;

            foreach (var multiTile in miscTiles)
            {
                var misctile = multiTile.Tile;
                var miscs    = misc.FindByPosition(misctile.Position);
                multiTile.SetTile(miscs.First());
            }
        }
Exemple #24
0
        public async static Task <string> SaveUIElementToFile(UIElement element, TileCategory cate)
        {
            try
            {
                string filename = "";
                switch (cate)
                {
                case TileCategory.Small: filename = "smallTile.png"; break;

                case TileCategory.Medium: filename = "mediumTile.png"; break;

                case TileCategory.Wide: filename = "wideTile.png"; break;

                case TileCategory.Large: filename = "largeTile.png"; break;

                default: filename = "largeTile.png"; break;
                }

                var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(filename, CreationCollisionOption.GenerateUniqueName);

                CachedFileManager.DeferUpdates(file);
                using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
                {
                    var bitmap = new RenderTargetBitmap();
                    await bitmap.RenderAsync(element);

                    var pixels = await bitmap.GetPixelsAsync();

                    var logicalDpi = DisplayInformation.GetForCurrentView().LogicalDpi;
                    var encoder    = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);

                    encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied, (uint)bitmap.PixelWidth, (uint)bitmap.PixelHeight, logicalDpi, logicalDpi, pixels.ToArray());

                    await encoder.FlushAsync();
                }
                await CachedFileManager.CompleteUpdatesAsync(file);

                return(file.Name);
            }
            catch (Exception e)
            {
                return(null);
            }
        }
Exemple #25
0
        public void SubStitueWallCat(TileCategory wallIn, TileCategory WallOut)
        {
            List <MultiTile> multi = new List <MultiTile>();

            foreach (var multiTile in MultiTiles.Where(multiTile => WallOut.FindTile(multiTile.ID) != null))
            {
                multi.Add(multiTile);
            }

            var tiles = wallIn.AllTiles();

            foreach (var multitile in multi)
            {
                foreach (var tIn in from tile in tiles select tile as TileWall into tIn let tOut = multitile.Tile as TileWall where tIn.Position == tOut.Position && tIn.PositionW == tOut.PositionW select tIn)
                {
                    multitile.SetTile(tIn);
                }
            }
        }
 public void WallSubstitue(TileCategory wallCat)
 {
     var wallTiles =
         from mt in MultiTiles
         where Walls.Contains(mt.Tile.GetStyle().GetCategory())
         select mt;
     foreach (var multiTile in wallTiles)
     {
         var wall = multiTile.Tile as TileWall;
         var walls = wallCat.FindByPosition(wall.Position);
         if(wall.PositionW!= PositionWallWindow.None)
         {
             walls =
                 from w in walls
                 where ((TileWall) w).WallPos == wall.WallPos
                 select w;
         }
         multiTile.SetTile(walls.First());
     }
 }
Exemple #27
0
        public void WallSubstitue(TileCategory wallCat)
        {
            var wallTiles =
                from mt in MultiTiles
                where Walls.Contains(mt.Tile.GetStyle().GetCategory())
                select mt;

            foreach (var multiTile in wallTiles)
            {
                var wall  = multiTile.Tile as TileWall;
                var walls = wallCat.FindByPosition(wall.Position);
                if (wall.PositionW != PositionWallWindow.None)
                {
                    walls =
                        from w in walls
                        where ((TileWall)w).WallPos == wall.WallPos
                        select w;
                }
                multiTile.SetTile(walls.First());
            }
        }
Exemple #28
0
        public void GenerateCandidates(MultiTile multiTile, TileCategory category)
        {
            var oldTileDescription = _tileData.GetItemTile(multiTile.Id);
            var tileinfo           = Categories.Select(c => c.FindTile(multiTile.Id)).FirstOrDefault(t => t != null);


            var candidates = category.AllTiles().Where(tile =>
                                                       tileinfo != null && (_tileData.GetItemTile(tile.Id).Height == oldTileDescription.Height &&
                                                                            oldTileDescription.Flags.HasFlag(TileFlag.Window) ==
                                                                            _tileData.GetItemTile(tile.Id).Flags.HasFlag(TileFlag.Window) &&
                                                                            oldTileDescription.Flags.HasFlag(TileFlag.Wall) ==
                                                                            _tileData.GetItemTile(tile.Id).Flags.HasFlag(TileFlag.Wall) &&
                                                                            oldTileDescription.Flags.HasFlag(TileFlag.Roof) ==
                                                                            _tileData.GetItemTile(tile.Id).Flags.HasFlag(TileFlag.Roof) &&
                                                                            oldTileDescription.Flags.HasFlag(TileFlag.Surface) ==
                                                                            _tileData.GetItemTile(tile.Id).Flags.HasFlag(TileFlag.Surface) &&
                                                                            tile.PositionString == tileinfo.PositionString)
                                                       );

            Candidates = new ObservableCollection <Tile>(candidates);
        }
Exemple #29
0
 public void GenerateCandidates(ITile multiTile, TileCategory category)
 {
     if (multiTile is MultiTile)
     {
         GenerateCandidates(multiTile, category);
     }
     else
     {
         var newtile = _multiTiles.FirstOrDefault(t => t.Id == multiTile.Id);
         if (newtile != null)
         {
             GenerateCandidates(newtile, category);
         }
         else
         {
             if (Candidates != null)
             {
                 Candidates.Clear();
             }
         }
     }
 }
Exemple #30
0
        private void update_tiles()
        {
            List <Masterplan.Data.Tile> tiles = new List <Masterplan.Data.Tile>();

            foreach (Library library in Session.Libraries)
            {
                foreach (Masterplan.Data.Tile tile in library.Tiles)
                {
                    if (this.fMatchCategory && this.fCategory != tile.Category)
                    {
                        continue;
                    }
                    bool flag = false;
                    if (this.fTileSize == System.Drawing.Size.Empty)
                    {
                        flag = true;
                    }
                    else
                    {
                        if (tile.Size.Width == this.fTileSize.Width && tile.Size.Height == this.fTileSize.Height)
                        {
                            flag = true;
                        }
                        if (tile.Size.Width == this.fTileSize.Height && tile.Size.Height == this.fTileSize.Width)
                        {
                            flag = true;
                        }
                    }
                    if (!flag)
                    {
                        continue;
                    }
                    tiles.Add(tile);
                }
            }
            this.TileList.Groups.Clear();
            switch (this.fGroupBy)
            {
            case TileSelectForm.GroupBy.Library:
            {
                List <Library> .Enumerator enumerator = Session.Libraries.GetEnumerator();
                try
                {
                    while (enumerator.MoveNext())
                    {
                        Library current = enumerator.Current;
                        this.TileList.Groups.Add(current.Name, current.Name);
                    }
                    break;
                }
                finally
                {
                    ((IDisposable)enumerator).Dispose();
                }
            }

            case TileSelectForm.GroupBy.Category:
            {
                IEnumerator enumerator1 = Enum.GetValues(typeof(TileCategory)).GetEnumerator();
                try
                {
                    while (enumerator1.MoveNext())
                    {
                        TileCategory tileCategory = (TileCategory)enumerator1.Current;
                        this.TileList.Groups.Add(tileCategory.ToString(), tileCategory.ToString());
                    }
                    break;
                }
                finally
                {
                    IDisposable disposable = enumerator1 as IDisposable;
                    if (disposable != null)
                    {
                        disposable.Dispose();
                    }
                }
            }
            }
            this.TileList.BeginUpdate();
            this.TileList.LargeImageList = new ImageList()
            {
                ColorDepth = ColorDepth.Depth32Bit,
                ImageSize  = new System.Drawing.Size(64, 64)
            };
            List <ListViewItem> listViewItems = new List <ListViewItem>();

            foreach (Masterplan.Data.Tile tile1 in tiles)
            {
                ListViewItem listViewItem = new ListViewItem(tile1.ToString())
                {
                    Tag = tile1
                };
                switch (this.fGroupBy)
                {
                case TileSelectForm.GroupBy.Library:
                {
                    Library library1 = Session.FindLibrary(tile1);
                    listViewItem.Group = this.TileList.Groups[library1.Name];
                    break;
                }

                case TileSelectForm.GroupBy.Category:
                {
                    listViewItem.Group = this.TileList.Groups[tile1.Category.ToString()];
                    break;
                }
                }
                Image  image  = (tile1.Image != null ? tile1.Image : tile1.BlankImage);
                Bitmap bitmap = new Bitmap(64, 64);
                if (tile1.Size.Width <= tile1.Size.Height)
                {
                    System.Drawing.Size size  = tile1.Size;
                    System.Drawing.Size size1 = tile1.Size;
                    int       width           = size.Width * 64 / size1.Height;
                    Rectangle rectangle       = new Rectangle((64 - width) / 2, 0, width, 64);
                    Graphics.FromImage(bitmap).DrawImage(image, rectangle);
                }
                else
                {
                    System.Drawing.Size size2 = tile1.Size;
                    System.Drawing.Size size3 = tile1.Size;
                    int       height          = size2.Height * 64 / size3.Width;
                    Rectangle rectangle1      = new Rectangle(0, (64 - height) / 2, 64, height);
                    Graphics.FromImage(bitmap).DrawImage(image, rectangle1);
                }
                this.TileList.LargeImageList.Images.Add(bitmap);
                listViewItem.ImageIndex = this.TileList.LargeImageList.Images.Count - 1;
                listViewItems.Add(listViewItem);
            }
            this.TileList.Items.Clear();
            this.TileList.Items.AddRange(listViewItems.ToArray());
            this.TileList.EndUpdate();
        }
        public void SubStitueWallCat(TileCategory wallIn, TileCategory WallOut)
        {
            List<MultiTile> multi = new List<MultiTile>();
            foreach (var multiTile in MultiTiles.Where(multiTile => WallOut.FindTile(multiTile.ID)!=null))
            {
                multi.Add(multiTile);
            }

            var tiles = wallIn.AllTiles();

            foreach (var multitile in multi)
            {
                foreach (var tIn in from tile in tiles select tile as TileWall into tIn let tOut = multitile.Tile as TileWall where tIn.Position == tOut.Position && tIn.PositionW == tOut.PositionW select tIn)
                {
                    multitile.SetTile(tIn);
                }
            }

        }
Exemple #32
0
        private void FullEmptyCategoriesTxTChecked(IEnumerable <TileCategory> list, IEnumerable <ModelItemData> datalist, TileCategory tileCategory)
        {
            var style = new TileStyle();

            foreach (var itemData in datalist)
            {
                Tile tile;
                uint number = itemData.EntryId;

                var tiles = from cat in list
                            let t = cat.FindTile(number)
                                    where t != null
                                    select t;
                tile = tiles.FirstOrDefault();
                if (tile == null)
                {
                    string name = string.Format("{0}-{1}", tileCategory.Name,
                                                itemData.Name.Replace(tileCategory.Name, "").Split(Separator2,
                                                                                                   StringSplitOptions
                                                                                                   .
                                                                                                   RemoveEmptyEntries)
                                                .FirstOrDefault());

                    if (string.IsNullOrEmpty(style.Name) || style.Name != name)
                    {
                        if (style.List.Count > 0 && tileCategory.FindStyleByName(style.Name) == null)
                        {
                            tileCategory.AddStyle(style);
                        }


                        var st2 = tileCategory.FindStyleByName(name);
                        style = st2 ?? new TileStyle {
                            Name = name
                        };
                    }
                    switch (tileCategory.TypeTile)
                    {
                    case TypeTile.Wall:
                    {
                        style.AddTile(new TileWall()
                            {
                                Id = number, Name = itemData.Name
                            });
                        break;
                    }

                    case TypeTile.Roofs:
                    {
                        style.AddTile(new TileRoof()
                            {
                                Id = number, Name = itemData.Name
                            });
                        break;
                    }

                    case TypeTile.Floor:
                    {
                        style.AddTile(new TileFloor()
                            {
                                Id = number, Name = itemData.Name
                            });
                        break;
                    }

                    default:
                    {
                        style.AddTile(new Tile {
                                Id = number, Name = itemData.Name
                            });
                        break;
                    }
                    }
                }
            }
            tileCategory.AddStyle(style);
        }
Exemple #33
0
        public void Populate()
        {
            if (CheckFromTxt)
            {
                foreach (var factory in Factories)
                {
                    factory.Populate();
                }
            }
            foreach (var fact in Factories)
            {
                Categories.Add(fact.Categories);
            }


            var walls        = DataManager.GetItemTile().Where(itemData => itemData.Flags.HasFlag(TileFlag.Wall) && itemData.Height >= 15 && !itemData.Name.Contains("arc") && !itemData.Flags.HasFlag(TileFlag.Window) && !itemData.Flags.HasFlag(TileFlag.Door)).ToList();
            var windows      = DataManager.GetItemTile().Where(itemData => itemData.Flags.HasFlag(TileFlag.Wall) && itemData.Height >= 15 && itemData.Flags.HasFlag(TileFlag.Window)).ToList();
            var halfWalls    = DataManager.GetItemTile().Where(itemData => itemData.Flags.HasFlag(TileFlag.Wall) && itemData.Height >= 10 && itemData.Height < 15 && !itemData.Flags.HasFlag(TileFlag.Window)).ToList();
            var quarterWalls = DataManager.GetItemTile().Where(itemData => itemData.Flags.HasFlag(TileFlag.Wall) && itemData.Height >= 5 && itemData.Height < 10 && !itemData.Flags.HasFlag(TileFlag.Window)).ToList();
            var archs        = DataManager.GetItemTile().Where(itemData => itemData.Flags.HasFlag(TileFlag.Wall) && itemData.Name.Contains("arc")).ToList();
            var roof         = DataManager.GetItemTile().Where(itemData => itemData.Flags.HasFlag(TileFlag.Roof)).ToList();
            var floors       = DataManager.GetItemTile().Where(itemData => itemData.Flags.HasFlag(TileFlag.Surface)).ToList();

            var wallCategory = new TileCategory()
            {
                Name = "wall", TypeTile = TypeTile.Wall
            };
            var windowCategory = new TileCategory()
            {
                Name = "window", TypeTile = TypeTile.Wall
            };
            var halfCategory = new TileCategory()
            {
                Name = "half", TypeTile = TypeTile.Wall
            };
            var quarterCategory = new TileCategory()
            {
                Name = "quarter", TypeTile = TypeTile.Wall
            };
            var arcsCategory = new TileCategory()
            {
                Name = "arch", TypeTile = TypeTile.Wall
            };
            var roofCategory = new TileCategory()
            {
                Name = "roof", TypeTile = TypeTile.Roofs
            };
            var floorcategory = new TileCategory()
            {
                Name = "floor", TypeTile = TypeTile.Floor
            };

            var lists = Misc.Categories.Union(Walls.Categories).Union(Roofs.Categories).Union(Floors.Categories).ToList();

            if (!CheckFromTxt)
            {
                lists.Clear();
            }

            var listcat = new ObservableCollection <TileCategory>();

            FullEmptyCategoriesTxTChecked(lists, walls, wallCategory);
            FullEmptyCategoriesTxTChecked(lists, quarterWalls, quarterCategory);
            FullEmptyCategoriesTxTChecked(lists, halfWalls, halfCategory);
            FullEmptyCategoriesTxTChecked(lists, windows, windowCategory);
            FullEmptyCategoriesTxTChecked(lists, archs, arcsCategory);
            FullEmptyCategoriesTxTChecked(lists, roof, roofCategory);
            FullEmptyCategoriesTxTChecked(lists, floors, floorcategory);

            foreach (var s in wallCategory.List)
            {
                var category = new TileCategory()
                {
                    Name = s.Name
                };
                category.AddStyle(s);

                var half    = Selector(halfCategory, s);
                var quarter = Selector(quarterCategory, s);
                var window  = Selector(windowCategory, s);
                var arch    = Selector(arcsCategory, s);
                var r       = Selector(roofCategory, s);

                if (half != null)
                {
                    category.AddStyle(half);
                }
                if (quarter != null)
                {
                    category.AddStyle(quarter);
                }
                if (window != null)
                {
                    category.AddStyle(window);
                }
                if (arch != null)
                {
                    category.AddStyle(arch);
                }
                if (r != null)
                {
                    category.AddStyle(r);
                }

                listcat.Add(category);
            }

            listcat.Add(RemoveDuplicates(listcat, windowCategory));
            listcat.Add(RemoveDuplicates(listcat, roofCategory));
            listcat.Add(RemoveDuplicates(listcat, halfCategory));
            listcat.Add(RemoveDuplicates(listcat, quarterCategory));
            listcat.Add(RemoveDuplicates(listcat, arcsCategory));

            Categories.Add(listcat);
        }
 public void RoofsSubstitue(TileCategory roof)
 {
     var miscTiles =
         from mt in MultiTiles
         where Roofs.Contains(mt.Tile.GetStyle().GetCategory())
         select mt;
     foreach (var multiTile in miscTiles)
     {
         var rooftile = multiTile.Tile as TileRoof;
         var roofs = roof.FindByPosition(rooftile.PosRoof);
         multiTile.SetTile(roofs.First());
     }
 }
Exemple #35
0
 public void SubstitueWallCat(TileCategory InWalls, TileCategory OutWalls)
 {
     _multi.SubStitueWallCat(InWalls, OutWalls);
 }
        public void GenerateCandidates(MultiTile multiTile, TileCategory category)
        {
            var oldTileDescription = _tileData.GetItemTile(multiTile.Id);
            var tileinfo = Categories.Select(c=>c.FindTile(multiTile.Id)).FirstOrDefault(t => t!=null);
            

            var candidates = category.AllTiles().Where(tile =>
                                                       tileinfo != null && (_tileData.GetItemTile(tile.Id).Height == oldTileDescription.Height &&
                                                                            oldTileDescription.Flags.HasFlag(TileFlag.Window) ==
                                                                            _tileData.GetItemTile(tile.Id).Flags.HasFlag(TileFlag.Window) &&
                                                                            oldTileDescription.Flags.HasFlag(TileFlag.Wall) ==
                                                                            _tileData.GetItemTile(tile.Id).Flags.HasFlag(TileFlag.Wall) &&
                                                                            oldTileDescription.Flags.HasFlag(TileFlag.Roof) ==
                                                                            _tileData.GetItemTile(tile.Id).Flags.HasFlag(TileFlag.Roof) &&
                                                                            oldTileDescription.Flags.HasFlag(TileFlag.Surface) ==
                                                                            _tileData.GetItemTile(tile.Id).Flags.HasFlag(TileFlag.Surface)
                                                                            && tile.PositionString == tileinfo.PositionString)
                                                       );
            
            Candidates= new ObservableCollection<Tile>(candidates);
        }
        public void GenerateCandidates(ITile multiTile, TileCategory category)
        {
            if(multiTile is MultiTile)
                GenerateCandidates(multiTile,category);
            else
            {
               var newtile= _multiTiles.FirstOrDefault(t => t.Id == multiTile.Id);
                if(newtile!=null) GenerateCandidates(newtile,category);
                else
                {
                    if(Candidates!=null)
                    Candidates.Clear();
                }
            }

        }
 public void MassRemove(TileCategory categoryToRemove)
 {
     var tiletoremove = new List<MultiTile>(MultiTiles.Where(t => categoryToRemove.FindTile(t.Id) != null));
     foreach (var multiTile in tiletoremove)
     {
         _multiTiles.Remove(multiTile);
     }
     RaisePropertyChanged(()=>Text);
     UpdateCategories();
 }
        public async static Task<string> SaveUIElementToFile(UIElement element, TileCategory cate)
        {

            try
            {
                string filename = "";
                switch (cate)
                {
                    case TileCategory.Small: filename = "smallTile.png"; break;
                    case TileCategory.Medium: filename = "mediumTile.png"; break;
                    case TileCategory.Wide: filename = "wideTile.png"; break;
                    case TileCategory.Large: filename = "largeTile.png"; break;
                    default: filename = "largeTile.png"; break;
                }

                var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(filename, CreationCollisionOption.GenerateUniqueName);

                CachedFileManager.DeferUpdates(file);
                using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
                {
                    var bitmap = new RenderTargetBitmap();
                    await bitmap.RenderAsync(element);
                    var pixels = await bitmap.GetPixelsAsync();

                    var logicalDpi = DisplayInformation.GetForCurrentView().LogicalDpi;
                    var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
                    encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied, (uint)bitmap.PixelWidth, (uint)bitmap.PixelHeight, logicalDpi, logicalDpi, pixels.ToArray());

                    await encoder.FlushAsync();
                }
                await CachedFileManager.CompleteUpdatesAsync(file);

                return file.Name;
            }
            catch (Exception e)
            {

                return null;
            }

        }