Example #1
0
        private void DrawTile(Graphics g, Tile tile)
        {
            int id = tile.Type != null ? tile.Type.Id : -1;

            if (!_images.ContainsKey(id))
            {
                Bitmap copy;
                using (Image img = Image.FromFile("tiles/" + tile.Type.Name + ".png"))
                {
                    copy = new Bitmap(_tileImage);
                    Graphics.FromImage(copy).DrawImage(img, new Rectangle(0, 0, DRAWWIDTH, DRAWHEIGHT));
                    _images.Add(id, copy);
                }
            }

            Image      texture = _images[id];
            RectangleF rect    = TileRectangle(tile);

            rect.X     -= 5;
            rect.Y     -= 5 + 5 * tile.Z;
            rect.Width  = DRAWWIDTH;
            rect.Height = DRAWHEIGHT;
            g.DrawImage(texture, rect);

            if (_showMoveable && !_field.CanMove(tile))
            {
                g.DrawImage(_disImage, rect);
            }

            if (_showHint && (tile == _hint1 || tile == _hint2))
            {
                g.DrawImage(_hintImage, rect);
            }

            if (tile == _selected)
            {
                g.DrawImage(_selImage, rect);
            }
        }
Example #2
0
        private List<Tile> ExtractRemovableTiles(Field field)
        {
            List<Tile> removables = new List<Tile>();

            int[] keys = new int[field.Tiles.Count];
            field.Tiles.Keys.CopyTo(keys, 0);

            foreach (int key in keys)
                if (field.CanMove(field.Tiles[key]))
                    removables.Add(field.Tiles[key]);

            foreach (Tile tile in removables)
                field.Remove(tile);

            return removables;
        }
Example #3
0
        private string BuildFieldJson()
        {
            TilePair hintPair = null;

            if (_showHint)
            {
                hintPair = _field.GetHint();
            }

            Tile[]        tiles     = _field.GetSortedTiles();
            List <string> tilesJson = new List <string>();

            foreach (Tile tile in tiles)
            {
                string selected = (tile == _selected) ? "true" : "false";
                string disabled = !_field.CanMove(tile) && _showMoveable ? "true" : "false";
                string hint     = _showHint && hintPair != null && (tile == hintPair.Tile1 || tile == hintPair.Tile2) ? "true" : "false";
                string type     = (tile != null) ? tile.Type.Name : "empty";
                string tileJson = "          {\n";
                tileJson += "              \"x\": " + tile.X + ",\n";
                tileJson += "              \"y\": " + tile.Y + ",\n";
                tileJson += "              \"z\": " + tile.Z + ",\n";
                tileJson += "              \"type\": \"" + type + "\",\n";
                tileJson += "              \"selected\": " + selected + ",\n";
                tileJson += "              \"hint\": " + hint + ",\n";
                tileJson += "              \"disabled\": " + disabled + "\n";
                tileJson += "          }";
                tilesJson.Add(tileJson);
            }

            return
                ("{\n" +
                 "   \"field\": {\n" +
                 "       \"fieldwidth\": " + Field.WIDTH + ",\n" +
                 "       \"fieldheight\": " + Field.HEIGHT + ",\n" +
                 "       \"tilewidth\": " + Tile.WIDTH + ",\n" +
                 "       \"tileheight\": " + Tile.HEIGHT + ",\n" +
                 "       \"tiles\": [\n" +
                 string.Join(",\n", tilesJson.ToArray()) + "\n" +
                 "       ]\n" +
                 "   }\n" +
                 "}\n");
        }
        private List <Tile> ExtractRemovableTiles(Field field)
        {
            List <Tile> removables = new List <Tile>();

            int[] keys = new int[field.Tiles.Count];
            field.Tiles.Keys.CopyTo(keys, 0);

            foreach (int key in keys)
            {
                if (field.CanMove(field.Tiles[key]))
                {
                    removables.Add(field.Tiles[key]);
                }
            }

            foreach (Tile tile in removables)
            {
                field.Remove(tile);
            }

            return(removables);
        }