Rusz Głową C# ;D polecam już nty raz ;P
Wersja do druku
Rusz Głową C# ;D polecam już nty raz ;P
ok zaraz kupię ebooka :D
@szulak ; jutro wejdę na irc
Szkoda mi trochę zakładać nowy temat a nadal problem z C# więc odkopię ten. Miałem sporą przerwę z C# i mam mały problem.
Mam 3 praktycznie identyczne funkcje zwracające 3 różne wartości ale nie mam pomysłu jak zrobić z tych trzech jedną która będzie zwracała tablice z 3 różnymi wartościami. Bo bez sensu robić 3x to samo przy późniejszym ustawianiu tych spelli skoro można krócej. Z góry dzięki za pomoc.
Kod:static float SPELL_TIME(ATTACKS attacks)
{
switch(attacks)
{
case ATTACKS.ATTACK_MELEE:
case ATTACKS.BLUE_BALL:
case ATTACKS.NIGHTMARE_BALL:
case ATTACKS.THUNDERSTORM:
return 5.0f;
default:
return 1.0f;
}
}
static float SPELL_SLIDER_SPEED(ATTACKS attacks)
{
switch (attacks)
{
case ATTACKS.ATTACK_MELEE:
case ATTACKS.BLUE_BALL:
case ATTACKS.NIGHTMARE_BALL:
case ATTACKS.THUNDERSTORM:
return 3.0f;
default:
return 1.0f;
}
}
static int SPELL_BASE_DMG(ATTACKS attacks)
{
switch (attacks)
{
case ATTACKS.ATTACK_MELEE:
case ATTACKS.BLUE_BALL:
case ATTACKS.NIGHTMARE_BALL:
case ATTACKS.THUNDERSTORM:
default:
return 100;
}
}
lepiej zebys w enumie/klasie przy okazji przetrzymywał takie dane jak baseDmg, sliderSpeed itd
Kod:using System;
using System.Collections.Generic;
using System.Reflection;
public enum AttackType
{
Melee,
BlueBall,
NightmareBall,
Thunderstorm
};
public struct Spell
{
public AttackType attackType;
public double time;
public double sliderSpeed;
public int baseDmg;
public Spell(AttackType attackType, double time, double sliderSpeed, int baseDmg)
{
this.attackType = attackType;
this.time = time;
this.sliderSpeed = sliderSpeed;
this.baseDmg = baseDmg;
}
}
public class Test
{
static T GetSpellProperty<T>(String name, Spell spell)
{
FieldInfo field = typeof(Spell).GetField(name);
return (T)(field.GetValue(spell));
}
public static void Main()
{
List<Spell> knownSpells = new List<Spell>();
knownSpells.Add(new Spell(AttackType.Melee, 1.0f, 0.5f, 20));
knownSpells.Add(new Spell(AttackType.BlueBall, 2.0f, 0.5f, 40));
knownSpells.Add(new Spell(AttackType.NightmareBall, 4.0f, 0.5f, 50));
Console.WriteLine(GetSpellProperty<int>("baseDmg", knownSpells[0]));
}
}
@Mickey Mouse ;
Tutaj masz live: https://ideone.com/k75KtV