bool MoveGem(GemSprite gem) { if (gem == null) { return(false); } var col = gem.Col; var row = gem.Row; // Check if gem place corresponds its cell place // if not - it should move if (gem.Cell.Col != gem.Col || gem.Cell.Row != gem.Row) { var newPlace = places[gem.Cell.Col, gem.Cell.Row]; var target = new CCPoint(newPlace.PositionX, newPlace.PositionY); gem.Col = gem.Cell.Col; gem.Row = gem.Cell.Row; var moveAction = new CCMoveTo(CellAnimationDuration, target); var ease = new CCEaseIn(moveAction, 4); gem.AddAction(ease); return(true); } return(false); }
private void Spawn() { #region Stones // Amount of stones spawned, ServicesHelper.RandomGeneratorom number betwenn 2 and 5 int stones = ServicesHelper.RandomGenerator.Next(2, 6); int stoneType = 0; for (int i = 0; i < stones; i++) { Sprite stone; // One chance on 8 of being a diamond stoneType = ServicesHelper.RandomGenerator.Next(1, 9); // Random speed Vector2 stoneSpeed, stonePosition; if (stoneType == 1) { // Is a diamond stonePosition = new Vector2(ServicesHelper.RandomGenerator.Next(0, Game.Window.ClientBounds.Width + 1 - diamond.Width), 0); stoneSpeed = new Vector2(0, ServicesHelper.RandomGenerator.Next(3, 9)); stone = new DiamondSprite(diamond, stonePosition, stoneSpeed); } else { // Is a gem stonePosition = new Vector2(ServicesHelper.RandomGenerator.Next(0, Game.Window.ClientBounds.Width + 1 - (gem.Width / 5)), 0); stoneSpeed = new Vector2(0, ServicesHelper.RandomGenerator.Next(1, 6)); stone = new GemSprite(gem, 1, 5, stonePosition, stoneSpeed); } // Add newly created stone to the list preciousStones.Add(stone); } #endregion #region Enemies // Amount of enemies spawned, ServicesHelper.RandomGeneratorom number between 0 and 7 int numberOfEnemies = ServicesHelper.RandomGenerator.Next(0, 8); for (int i = 0; i < numberOfEnemies; i++) { // Random number for the texture of the enemy to spawn int textureIndex = ServicesHelper.RandomGenerator.Next(0, texEnnemies.Count); // Random position Vector2 enemyPosition = new Vector2(ServicesHelper.RandomGenerator.Next(0, Game.Window.ClientBounds.Width - (int)(texEnnemies[textureIndex].Width * ENEMY_SCALE)), 0); // Random speed Vector2 enemySpeed = new Vector2(0, ServicesHelper.RandomGenerator.Next(2, 8)); EnnemiSprite enemy = new EnnemiSprite(texEnnemies[textureIndex], 1, 1, enemyPosition, enemySpeed, 1, 35, ENEMY_SCALE); enemies.Add(enemy); } #endregion }
public override void SetGemType(GemType type) { if (spriteRenderer == null) { Debug.LogError("SpriteRenderer of " + gameObject.name + " is null"); } GemSprite gemSprite = gemSprites.FirstOrDefault(g => g.type == type); if (gemSprite == null) { Debug.LogError("Failed to find sprite of type " + type); return; } spriteRenderer.sprite = gemSprite.sprite; }
GemSprite CreateGem(CellType type, int col, int row) { var gem = new GemSprite(new CCTexture2D(), new CCRect(0, 0, GemSize, GemSize)) { Color = GetColor(type), PositionX = places[col, row].PositionX, PositionY = places[col, row].PositionY, Cell = GameCore.GetCell(col, row), Col = col, Row = row }; gems.Add(gem); return(gem); }