Ejemplo n.º 1
0
    static void OnChangeMatch3TileIcon(string GUID, Rect iconRect)
    {
        string assetpath = AssetDatabase.GUIDToAssetPath(GUID);
        string extension = System.IO.Path.GetExtension(assetpath);

        if (extension == ".asset")
        {
            Sprite   sprite = null;
            MineTile tile   = AssetDatabase.LoadAssetAtPath <MineTile>(assetpath);
            if (!tile)
            {
                return;
            }

            sprite = tile.sprite;

            if (!sprite)
            {
                return;
            }

            iconRect = CalculateOffsetOfIcon(iconRect);

            Texture2D icon = sprite.texture;
            iconRect.width  = iconRect.height;
            iconRect.height = iconRect.height;
            if (icon)
            {
                GUI.DrawTexture(iconRect, icon);
            }
        }
    }
Ejemplo n.º 2
0
    private Vector3 placeConer(MineTile tile, Vector3 pos)
    {
        if (tile.Position.x == 0 && tile.Position.y == m_GameManager.m_BoardWidth - 1)
        {
            pos = new Vector3(tile.Position.x - 0.5f, tile.Position.y + 0.5f);
            PlaceBorder(m_BorderEdgeCorner, pos);
        }
        if (tile.Position.x == m_GameManager.m_BoardHieght - 1 && tile.Position.y == 0)
        {
            pos = new Vector3(tile.Position.x + 0.5f, tile.Position.y - 0.5f);
            PlaceBorder(m_BorderEdgeCorner, pos);
        }
        if (tile.Position.x == m_GameManager.m_BoardHieght - 1 && tile.Position.y == m_GameManager.m_BoardWidth - 1)
        {
            pos = new Vector3(tile.Position.x + 0.5f, tile.Position.y + 0.5f);
            PlaceBorder(m_BorderEdgeCorner, pos);
        }
        if (tile.Position.x == 0 && tile.Position.y == 0)
        {
            pos = new Vector3(tile.Position.x - 0.5f, tile.Position.y - 0.5f);
            PlaceBorder(m_BorderEdgeCorner, pos);
        }

        return(pos);
    }
Ejemplo n.º 3
0
            public void Unflagging_an_untouched_tile_should_do_nothing()
            {
                var tile = new MineTile();

                tile.GetStatus().Should().Be(TileStatus.Untouched);

                tile.UnFlag();

                tile.GetStatus().Should().Be(TileStatus.Untouched);
            }
Ejemplo n.º 4
0
            public void Flagging_an_untouched_tile_should_flag_it()
            {
                var tile = new MineTile();

                tile.GetStatus().Should().Be(TileStatus.Untouched);

                tile.Flag();

                tile.GetStatus().Should().Be(TileStatus.Flagged);
            }
Ejemplo n.º 5
0
            public void Revealing_an_untouched_tile_should_set_status_to_clicked()
            {
                var tile = new MineTile();

                tile.GetStatus().Should().Be(TileStatus.Untouched);

                tile.Reveal();

                tile.GetStatus().Should().Be(TileStatus.Revealed);
            }
Ejemplo n.º 6
0
            public void Clicking_a_mine_tile_should_mark_it_clicked()
            {
                var tile = new MineTile();

                tile.GetStatus().Should().Be(TileStatus.Untouched);

                tile.Click();

                tile.GetStatus().Should().Be(TileStatus.Revealed);
            }
Ejemplo n.º 7
0
    public override void OnInspectorGUI()
    {
        MineTile e = (MineTile)target;

        serializedObject.Update();

        DrawSpritePreview(sprite, tile.sprite);
        EditorGUILayout.PropertyField(colliderType);

        serializedObject.ApplyModifiedProperties();
    }
Ejemplo n.º 8
0
            public void Flagging_a_clicked_tile_should_throw_an_error()
            {
                var tile = new MineTile();

                tile.Click();
                tile.GetStatus().Should().Be(TileStatus.Revealed);

                var ex = Assert.Throws <InvalidOperationException>(() => tile.Flag());

                ex.Message.Should().Be("Cannot flag a clicked tile.");
            }
Ejemplo n.º 9
0
            public void Flagging_a_flagged_tile_should_do_nothing()
            {
                var tile = new MineTile();

                tile.Flag();
                tile.GetStatus().Should().Be(TileStatus.Flagged);

                tile.Flag();

                tile.GetStatus().Should().Be(TileStatus.Flagged);
            }
Ejemplo n.º 10
0
            public void Clicking_a_mine_tile_should_remove_the_flag()
            {
                var tile = new MineTile();

                tile.Flag();
                tile.GetStatus().Should().Be(TileStatus.Flagged);

                tile.Click();

                tile.GetStatus().Should().Be(TileStatus.Untouched);
            }
Ejemplo n.º 11
0
            public void Revealing_a_flagged_tile_should_set_status_to_clicked()
            {
                var tile = new MineTile();

                tile.Flag();
                tile.GetStatus().Should().Be(TileStatus.Flagged);

                tile.Reveal();

                tile.GetStatus().Should().Be(TileStatus.Revealed);
            }
Ejemplo n.º 12
0
            public void Revealing_a_clicked_tile_should_do_nothing()
            {
                var tile = new MineTile();

                tile.Click();
                tile.GetStatus().Should().Be(TileStatus.Revealed);

                tile.Reveal();

                tile.GetStatus().Should().Be(TileStatus.Revealed);
            }
Ejemplo n.º 13
0
    public StructureTile CreateStructureFromType(StructureType type, BaseTileData data)
    {
        StructureTile newTile = null;

        StructureBinding structureBinding = BuildingManager.Instance.StructuresTemplates.GetStructureBindingFromType(type);

        if (structureBinding != null)
        {
            switch (type)
            {
            case StructureType.PowerPlant:
                newTile = new PowerPlantTile();
                break;

            case StructureType.Sawmill:
                newTile = new SawmillTile();
                break;

            case StructureType.PumpingStation:
                newTile = new PumpingStationTile();
                WaterClusterManager.Instance.RegisterPumpingStation(data);
                break;

            case StructureType.Village:
                newTile = new VillageTile();
                break;

            case StructureType.Mine:
                newTile = new MineTile();
                break;

            case StructureType.Relay:
                newTile = new RelayTile();
                break;

            case StructureType.MainRelay:
                newTile = new MainRelayTile();
                break;

            default:
                throw new MissingStructureTypeDefinitionException();
            }
            data.structureTile = newTile;
            BuildingView building = Instantiate(structureBinding.building, data.worldPosition, Quaternion.identity, transform);
            building.dataTile    = newTile;
            newTile._building    = building;
            newTile.GridPosition = data.GridPosition;
            ResourcesManager.Instance.RegisterStructure(newTile);
            RelayManager.Instance.RegisterStructure(data);
        }
        return(newTile);
    }
Ejemplo n.º 14
0
    void PlaceFlagOrQuestionMark(Vector3Int cursorPosition)
    {
        MineTile actualTile = markingArea.GetTile <MineTile>(cursorPosition);

        if (actualTile == container.empty)
        {
            markingArea.SetTile(cursorPosition, container.flag);
            flagsPositions.Add(cursorPosition);
        }
        else if (actualTile == container.flag)
        {
            markingArea.SetTile(cursorPosition, container.questionMark);
            flagsPositions.Remove(cursorPosition);
        }
        else if (actualTile == container.questionMark)
        {
            markingArea.SetTile(cursorPosition, container.empty);
        }
    }
    public void Init()
    {
        empty   = Resources.Load <MineTile>(path + "Empty");
        mine    = Resources.Load <MineTile>(path + "Mine");
        hitMine = Resources.Load <MineTile>(path + "hitMine");

        notMine = Resources.Load <MineTile>(path + "notMine");

        flag         = Resources.Load <MineTile>(path + "flag");
        questionMark = Resources.Load <MineTile>(path + "questionMark");
        numbers[0]   = Resources.Load <MineTile>(path + "zero");
        numbers[1]   = Resources.Load <MineTile>(path + "one");
        numbers[2]   = Resources.Load <MineTile>(path + "two");
        numbers[3]   = Resources.Load <MineTile>(path + "tree");
        numbers[4]   = Resources.Load <MineTile>(path + "four");
        numbers[5]   = Resources.Load <MineTile>(path + "five");
        numbers[6]   = Resources.Load <MineTile>(path + "six");
        numbers[7]   = Resources.Load <MineTile>(path + "seven");
        numbers[8]   = Resources.Load <MineTile>(path + "eight");
    }
Ejemplo n.º 16
0
        private void AddMine(Point mine, string mineDescription)
        {
            if (_tiles == null)
            {
                return;
            }

            int x = mine.X ?? 0;
            int y = mine.Y ?? 0;

            if (!IsInsideBoard(x, y))
            {
                throw new IndexOutOfBoardException(mineDescription, x, y);
            }

            if (!IsEmptySpace(x, y))
            {
                throw new IndexOcupiedException(mineDescription, x, y);
            }

            _tiles[x, y] = new MineTile();
        }