public Ser RemoveModificador(ModDivideValorMag mod, Ser ser) { PropertyInfo propriedade = ser.GetType().GetProperty(mod.Alvo); if (propriedade.PropertyType == typeof(ValorMag)) { CalculadorNumero calculador = new CalculadorNumero(); ValorMag resultado = new ValorMag(); resultado = calculador.MultiplicaValorMag((ValorMag)propriedade.GetValue(ser, null), mod.Valor); propriedade.SetValue(ser, resultado); return(ser); } else { throw new System.ArgumentException("Propriedade não é ValorMag.", mod.Alvo); } }
public Modificador GerarComOrigem(string origem, int id, Random rnd, char tipo = 'R') { GeradorInteiro rng = new GeradorInteiro(); GeradorValorMag rvmg = new GeradorValorMag(); GeradorPericia genPericia = new GeradorPericia(); GeradorHabilidade genHabilidade = new GeradorHabilidade(); int tipoModificador = rng.GerarEntre(1, 10, rnd); PropertyInfo[] propriedades = typeof(Ser).GetTypeInfo().DeclaredProperties.Where(p => p.PropertyType == typeof(int)).ToArray <PropertyInfo>(); string alvo = propriedades[rng.GerarEntre(0, propriedades.Count() - 1, rnd)].Name; switch (tipoModificador) { case 1: ModSomaValorMag modSomaValorMag = new ModSomaValorMag() { Alvo = alvo, Origem = origem, Valor = rvmg.GerarEntre(new ValorMag(10, 1), new ValorMag(99, 10), rnd) }; return(modSomaValorMag); case 2: ModSubtraiValorMag modSubtraiValorMag = new ModSubtraiValorMag() { Alvo = alvo, Origem = origem, Valor = rvmg.GerarEntre(new ValorMag(10, 1), new ValorMag(99, 10), rnd) }; return(modSubtraiValorMag); case 3: ModSomaNumero modSomaNumero = new ModSomaNumero() { Alvo = alvo, Origem = origem, Valor = rng.GerarEntre(1, 10000, rnd) }; return(modSomaNumero); case 4: ModSubtraiNumero modSubtraiNumero = new ModSubtraiNumero() { Alvo = alvo, Origem = origem, Valor = rng.GerarEntre(1, 10000, rnd) }; return(modSubtraiNumero); case 5: ModMultiplicaNumero modMultiplicaNumero = new ModMultiplicaNumero() { Alvo = alvo, Origem = origem, Valor = rng.GerarEntre(1, 10000, rnd) }; return(modMultiplicaNumero); case 6: ModMultiplicaValorMag modMultiplicaValorMag = new ModMultiplicaValorMag() { Alvo = alvo, Origem = origem, Valor = rvmg.GerarEntre(new ValorMag(10, 1), new ValorMag(99, 10), rnd) }; return(modMultiplicaValorMag); case 7: ModDivideNumero modDivideNumero = new ModDivideNumero() { Alvo = alvo, Origem = origem, Valor = rng.GerarEntre(1, 100, rnd) }; return(modDivideNumero); case 8: ModDivideValorMag modDivideValorMag = new ModDivideValorMag() { Alvo = alvo, Origem = origem, Valor = rvmg.GerarEntre(new ValorMag(10, 1), new ValorMag(99, 5), rnd) }; return(modDivideValorMag); case 9: ModAdicionaHabilidade modAdicionaHabilidade = new ModAdicionaHabilidade() { Alvo = genHabilidade.Gerar(rnd), Origem = origem }; return(modAdicionaHabilidade); case 10: ModAdicionaPericia modAdicionaPericia = new ModAdicionaPericia() { Alvo = genPericia.Gerar(rnd), Origem = origem }; return(modAdicionaPericia); default: return(null); } }