/// <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); }
/// <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); }