コード例 #1
0
        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;
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
        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>();
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }