Exemple #1
0
        private IProp GenerateProp(IDropTableRecordSubScheme record)
        {
            try
            {
                var scheme    = _schemeService.GetScheme <IPropScheme>(record.SchemeSid);
                var propClass = GetPropClass(scheme);

                switch (propClass)
                {
                case PropClass.Equipment:
                    var equipment = _propFactory.CreateEquipment(scheme);
                    return(equipment);

                case PropClass.Resource:
                    var rolledCount = _randomSource.RollResourceCount(record.MinCount, record.MaxCount);
                    var resource    = _propFactory.CreateResource(scheme, rolledCount);
                    return(resource);

                case PropClass.Concept:

                    var propScheme = _schemeService.GetScheme <IPropScheme>("record.Concept");

                    return(new Concept(scheme, propScheme));

                default:
                    throw new ArgumentException($"Неизвестный класс {propClass} объекта {scheme}.");
                }
            }
            catch (Exception exception)
            {
                //TODO Оборачивать в доменное исключение. Создать собственный тип.
                throw new Exception($"Ошибка при обработке записи дропа {record.SchemeSid}", exception);
            }
        }
        private IProp GenerateProp(IDropTableRecordSubScheme record)
        {
            var scheme    = _schemeService.GetScheme <IPropScheme>(record.SchemeSid);
            var propClass = GetPropClass(scheme);

            switch (propClass)
            {
            case PropClass.Equipment:
                var equipment = _propFactory.CreateEquipment(scheme);
                return(equipment);

            case PropClass.Resource:
                var rolledCount = _randomSource.RollResourceCount(record.MinCount, record.MaxCount);
                var resource    = _propFactory.CreateResource(scheme, rolledCount);
                return(resource);

            case PropClass.Concept:

                throw new ArgumentException($"Пока концепты не поддерживаются.");

                var propScheme = _schemeService.GetScheme <IPropScheme>("record.Concept");

                return(new Concept(scheme, propScheme));

            default:
                throw new ArgumentException($"Неизвестный класс {propClass} объекта {scheme}.");
            }
        }