Esempio n. 1
0
        /// <summary> Метод добавляет новый шаблон в менеджер шаблонов </summary>
        /// <param name="templateFigureArg"> Ссылка на шаблон фигуры</param>
        public TemplateFigureManager AddTemplate(TemplateGroupFigures templateFigureArg)
        {
            if (_chancesSum + templateFigureArg.Chance > 100)
            {
                throw new TetrisException("Сумма вероятностей выпадения фигур не может быть больше 100%");
            }

            _chancesSum += templateFigureArg.Chance;
            _rangesChance.Add(_chancesSum);
            _listFigures.Add(templateFigureArg);

            return(this);
        }
Esempio n. 2
0
        /// <summary> Генерация новой фигуры </summary>
        /// <returns> Возвращает новую фигуру</returns>
        public IFigure NewFigure(IFactoryFigure factoryArg)
        {
            byte randomTemplate               = (byte)Random.Range(1, 101);
            TemplateGroupFigures template     = _managerTemplates.GetTemplateByRandom(randomTemplate);
            Vector3Int           sizeTemplate = template.Size;
            int     posX   = Random.Range(0, _sizeMap.x - sizeTemplate.x);
            int     posY   = _sizeMap.y - sizeTemplate.y;
            int     posZ   = Random.Range(0, _sizeMap.z - sizeTemplate.z);
            IFigure figure = new GroupFigures(template, new Vector3Int(posX, posY, posZ), factoryArg);

            if (sizeTemplate.x >= _sizeMap.x ||
                sizeTemplate.y >= _sizeMap.y ||
                sizeTemplate.z > _sizeMap.z)
            {
                throw new TetrisException("Попытка сгенерировать фигуру, которая больше игрового поля (карты)!");
            }

            return(figure);
        }