示例#1
0
        public void GivenMatchTilesDataLoadedWithExistingNullMatchTokenData_WhenExecute_ThenCreateFourRandomMatchTile()
        {
            MatchTileType type = MatchTileType.Null;

            GameObject gameObject = new GameObject();

            gameObject.name = type.ToString();

            MatchTileData data = new MatchTileData();

            data.position   = Vector2.zero;
            data.gameObject = gameObject;

            List <MatchTileData> matchTilesData = new List <MatchTileData> ();

            matchTilesData.Add(data);

            MatchTilesData layout = ScriptableObject.CreateInstance <MatchTilesData> ();

            layout.matchTilesData = matchTilesData;

            matchTileGridModel.matchTilesData.Returns(layout);
            matchTileGridModel.GetMatchTileType(gameObject.name).Returns(type);
            matchTileGridModel.gridSize = new Vector2(2, 2);

            createMatchTileGridCommand.Execute();

            matchTileFactory.Received(4).CreateRandomMatchTile(Arg.Any <Vector2> ());
        }
示例#2
0
        public void AddTileTouched(Vector2 pos, MatchTile matchTile)
        {
            if (tilesTouched.Count == 0)
            {
                selectedMatchTileType = matchTile.type;
            }

            tilesTouched.Add(matchTile);
            lastMatchTileAddedPos = pos;
        }
示例#3
0
        private MatchTile CreateMatchTile(MatchTileType type, Vector2 position)
        {
            MatchTile tile = new MatchTile();

            tile.canMove  = true;
            tile.type     = type;
            tile.position = position;

            return(tile);
        }
示例#4
0
        public bool ValidMatchTile(MatchTileType type)
        {
            if (type == MatchTileType.RemainingClearance ||
                type == MatchTileType.Blank ||
                type == MatchTileType.Null)
            {
                return(false);
            }

            return(true);
        }
示例#5
0
        private GameObject CreateTileGameObject(MatchTileType type, Vector2 position)
        {
            GameObject tile = objectPoolModel.GetObjectForType(type.ToString());

            float scale = matchTileGridModel.matchTileOriginalScale;

            tile.transform.localScale    = new Vector3(scale, scale, scale);
            tile.transform.parent        = matchTileGridModel.gridParent.transform;
            tile.transform.localPosition = new Vector3(position.x, position.y, 0);

            return(tile);
        }
示例#6
0
        public MatchTile Create(MatchTileType type, Vector2 position)
        {
            MatchTile matchTile = new MatchTile();

            matchTile.position   = position;
            matchTile.type       = type;
            matchTile.canMove    = matchTileGridModel.CanMove(matchTile);
            matchTile.canTouch   = matchTileGridModel.ValidMatchTile(matchTile.type);
            matchTile.tileObject = CreateTileGameObject(type, position);
            matchTileGridModel.AddNewTile(matchTile);

            return(matchTile);
        }
示例#7
0
        public MatchTile Create(Vector2 position)
        {
            MatchTileType[] matchTilesAvailable = (MatchTileType[])Enum.GetValues(typeof(MatchTileType));

            int           ran  = UnityEngine.Random.Range(0, matchTilesAvailable.Length);
            MatchTileType type = matchTilesAvailable [ran];

            while (!matchTileGridModel.ValidMatchTile(type))
            {
                ran  = UnityEngine.Random.Range(0, matchTilesAvailable.Length);
                type = matchTilesAvailable [ran];
            }

            return(matchTileFactory.CreateMatchTile(type, position));
        }
示例#8
0
        public List <MatchTile> GetAllMatchTilesNotOfType(MatchTileType type)
        {
            List <MatchTile> tiles = new List <MatchTile> ();

            foreach (KeyValuePair <Vector2, MatchTile> entry in GetMatchTiles())
            {
                MatchTile tile = entry.Value;

                if (!tile.type.Equals(type) && tile.canTouch)
                {
                    tiles.Add(tile);
                }
            }

            return(tiles);
        }
示例#9
0
        private void CreateGrid()
        {
            MatchTilesData layout = matchTileGridModel.matchTilesData;

            float yMax = matchTileGridModel.gridSize.y;
            float xMax = matchTileGridModel.gridSize.x;

            for (int y = 0; y < yMax; y++)
            {
                for (int x = 0; x < xMax; x++)
                {
                    Vector2 position = new Vector2(x, y);

                    if (layout.matchTiles.ContainsKey(position))
                    {
                        MatchTileData data = layout.matchTiles [position];
                        MatchTileType type = matchTileGridModel.GetMatchTileType(data.gameObject.name);

                        if (type != MatchTileType.Null)
                        {
                            matchTileFactory.CreateMatchTile(type, position);
                        }
                        else
                        {
                            matchTileFactory.CreateRandomMatchTile(position);
                        }
                    }
                    else
                    {
                        matchTileFactory.CreateRandomMatchTile(position);
                    }
                }
            }

            GridCreationComplete();
        }
示例#10
0
 private void HideInvalidTiles(MatchTileType type)
 {
     hideInvalidTilesCommand.type     = type;
     hideInvalidTilesCommand.hideType = HideType.NotValidTiles;
     hideInvalidTilesCommand.Execute();
 }
示例#11
0
 public MatchTile CreateMatchTile(MatchTileType type, Vector2 position)
 {
     return(createMatchTile.Create(type, position));
 }