private void AddChain(Vector2Int position, Vector2Int direction, int size) { var chainEntity = _ecsWorld.NewEntity(); ChainEvent chain = new ChainEvent() { Size = size, Direction = direction, Position = position }; chainEntity.Set <ChainEvent>() = chain; }
public void Run() { foreach (var index in _filter) { ChainEvent chain = _filter.Get1(index); Vector2Int currentPosition = chain.Position; for (int i = 0; i < chain.Size; i++) { EcsEntity cellEntity = _gameField.Cells[currentPosition]; currentPosition += chain.Direction; MarkCells(cellEntity); } } }
public void Run() { foreach (int index in _filter) { int reward = 0; ChainEvent chain = _filter.Get1(index); for (int i = 0; i < chain.Size; i++) { Vector2Int position = chain.Position + i * chain.Direction; reward += GetCellReward(position); } _playerState.Score += reward; _world.NewEntity().Set <RewardRequest>(); } }
private static List <ChainEvent> GetCellChains(Dictionary <Vector2Int, EcsEntity> cells, Configuration _configuration, Vector2Int position) { List <ChainEvent> result = new List <ChainEvent>(); Vector2Int direction = new Vector2Int(0, 1); ChainEvent horisontal = GetChain(position, direction, cells); if (horisontal.Size >= _configuration.MinRewardableChain) { result.Add(horisontal); } direction = new Vector2Int(1, 0); ChainEvent vertical = GetChain(position, direction, cells); if (vertical.Size >= _configuration.MinRewardableChain) { result.Add(vertical); } return(result); }
public static bool CheckCellInChain(Dictionary <Vector2Int, EcsEntity> cells, Configuration _configuration, Vector2Int position) { Vector2Int direction = new Vector2Int(0, 1); ChainEvent horisontalRight = GetChain(position, direction, cells); if (horisontalRight.Size >= _configuration.MinRewardableChain) { return(true); } direction = new Vector2Int(0, -1); ChainEvent horisontalLeft = GetChain(position, direction, cells); if (horisontalLeft.Size >= _configuration.MinRewardableChain) { return(true); } direction = new Vector2Int(1, 0); ChainEvent verticalUp = GetChain(position, direction, cells); if (verticalUp.Size >= _configuration.MinRewardableChain) { return(true); } direction = new Vector2Int(-1, 0); ChainEvent verticalDown = GetChain(position, direction, cells); if (verticalDown.Size >= _configuration.MinRewardableChain) { return(true); } return(false); }