private static void CreatePuzzleRotorCombo(GameEntity puzzleCombo, Color puzzleColor, Vector2Int pos) { puzzleCombo.AddPuzzleCombo(PuzzleComboType.PuzzleRotor); puzzleCombo.AddGridPosition(pos); puzzleCombo.AddColor(puzzleColor); puzzleCombo.isActivated = true; puzzleCombo.AddComboType(ComboType.PuzzleCombo); }
public static int CreatePositiveItem(PositiveItem itemType, Vector2Int pos, Color color = Color.Blue) { var contexts = Contexts.sharedInstance; var posItem = contexts.game.CreateEntity(); var itemTypeInBoard = ItemTypeInBoard.Tnt; if (itemType == PositiveItem.Rotor) { var axis = Random.Range(0, 2); itemTypeInBoard = axis == 0 ? ItemTypeInBoard.RotorHorizontal : ItemTypeInBoard.RotorVertical; } else if (itemType == PositiveItem.Tnt) { itemTypeInBoard = ItemTypeInBoard.Tnt; } else if (itemType == PositiveItem.Puzzle) { switch (color) { case Color.Blue: itemTypeInBoard = ItemTypeInBoard.BluePuzzle; break; case Color.Green: itemTypeInBoard = ItemTypeInBoard.GreenPuzzle; break; case Color.Orange: itemTypeInBoard = ItemTypeInBoard.OrangePuzzle; break; case Color.Purple: itemTypeInBoard = ItemTypeInBoard.PurplePuzzle; break; case Color.Red: itemTypeInBoard = ItemTypeInBoard.RedPuzzle; break; case Color.Yellow: itemTypeInBoard = ItemTypeInBoard.YellowPuzzle; break; default: itemTypeInBoard = ItemTypeInBoard.BluePuzzle; break; } } posItem.AddWillSpawnItem(itemTypeInBoard, pos, pos.y); posItem.AddId(IdHelper.GetNewId()); return(posItem.id.Value); }
private void CreateColorCube(GameEntity entity, MatchType matchType, Color color) { entity.AddColor(color); entity.AddHint(HintType.None); entity.AddMatchType(matchType); entity.AddMatchGroup(-1, 0); entity.isCanBeActivatedByTouch = true; entity.isCanFall = true; entity.isRemoverSensitive = true; entity.isInnerMatchItem = true; entity.isCanBeTargetedByGenerator = true; entity.isCollectedAtEnd = true; }
private bool ShouldChangeColor(Dictionary <Color, int> colors, out Color color) { foreach (var entry in colors) { if (entry.Value < 2) { continue; } color = entry.Key; return(false); } color = Color.Blue; return(true); }
private static bool ReduceColorSensitivityWithNearMatch(GameEntity item, Color color) { var colors = item.colorSensitive.colors; bool reduced = false; if (colors.ContainsKey(color) && colors[color] > 0) { colors[color]--; reduced = true; } if (reduced) { item.ReplaceColorSensitive(colors); } return(reduced); }
private GoalType GetGoalType(Color color) { switch (color) { case Color.Blue: return(GoalType.BlueCube); case Color.Green: return(GoalType.GreenCube); case Color.Red: return(GoalType.RedCube); case Color.Yellow: return(GoalType.YellowCube); } return(GoalType.BlueCube); }
private MatchType GetMatchType(Color color) { switch (color) { case Color.Blue: return(MatchType.BlueCube); case Color.Green: return(MatchType.GreenCube); case Color.Red: return(MatchType.RedCube); case Color.Yellow: return(MatchType.YellowCube); } return(MatchType.Invalid); }
private List <int> GetColorCubes(Color color) { var cubes = new List <int>(); foreach (var item in _itemGroup.GetEntities()) { var entitySet = _contexts.game.GetEntitiesWithGridPosition(item.gridPosition.value); GameEntity cellItem = null; foreach (var entity in entitySet) { if (entity.isCellItem) { cellItem = entity; } } if (!Equals(item.itemType.Value, ItemType.ColorCube)) { continue; } if (cellItem != null && cellItem.isCanStopItemActivation) { continue; } Color itemColor = item.color.Value; if (color != itemColor) { continue; } cubes.Add(item.id.Value); } return(cubes); }
public static void TryActivateItemWithNear(Contexts contexts, Vector2Int pos, int removerId, Color color) { if (!InBounds(contexts, pos)) { return; } var entitySet = contexts.game.GetEntitiesWithGridPosition(pos); GameEntity cellItem = null; GameEntity item = null; foreach (var entity in entitySet) { if (entity.isEnabled && entity.isCellItem) { cellItem = entity; } if (entity.isEnabled && entity.isItem) { item = entity; } if (entity.isEnabled && entity.hasFakeItem) { item = contexts.game.GetEntityWithId(entity.fakeItem.RealItemId); } } var hasCellItem = cellItem != null; var hasItem = item != null; if (hasCellItem && cellItem.isCanBeActivatedByNearMatch) { cellItem.isWillBeDestroyed = true; return; } if (hasCellItem && cellItem.isCanStopItemActivation) { return; } if (item == null || !item.isEnabled) { return; } if (item.isCantBeActivated) { return; } if (!item.isCanBeActivatedByNearMatch) { return; } var removerSet = item.removers.Set; if (removerSet.Contains(removerId)) { return; } if (item.isRemoverSensitive) { removerSet.Add(removerId); item.ReplaceRemovers(removerSet); } if (item.hasColorSensitive) { var reduced = ReduceColorSensitivityWithNearMatch(item, color); if (!reduced) { return; } } if (item.isColorCopying && !item.hasColorSensitive) { var colors = new Dictionary <Color, int> { [color] = 1 }; item.AddColorSensitive(colors); item.AddColor(color); } ActivateItem(item, ActivationReason.NearMatch); }
private void CreateCombo(Vector2Int pos, int rotorCount, int tntCount, int puzzleCount, Color puzzleColor) { var comboEntity = _contexts.game.CreateEntity(); comboEntity.isCreatedFromMatch = true; if (puzzleCount > 0) { if (puzzleCount > 1) { CreatePuzzlePuzzleCombo(comboEntity, pos); } else if (tntCount > 0) { CreatePuzzleTntCombo(comboEntity, puzzleColor, pos); } else if (rotorCount > 0) { CreatePuzzleRotorCombo(comboEntity, puzzleColor, pos); } } else if (tntCount > 0) { if (tntCount > 1) { CreateTntTntCombo(comboEntity, pos); } else if (rotorCount > 0) { CreateTntRotorCombo(comboEntity, pos); } } else if (rotorCount > 1) { CreateRotorRotorCombo(comboEntity, pos); } }