static public BitArray AffinityBitsFromAffinity(Affinities a) { BitArray ret = new BitArray(2); switch (a) { case Affinities.complete: ret[0] = true; ret[1] = true; break; case Affinities.dontCare: ret[0] = false; ret[1] = false; break; case Affinities.first: ret[0] = true; ret[1] = false; break; case Affinities.last: ret[0] = false; ret[1] = true; break; } return(ret); }
public AttackSkill(string name, Affinities affinity, float power) : base(name, affinity, power) { if (power >= 1 && power <= 10) { Power = power; } else { Power = 1; } }
public Data_Actor(Data_Actor actor) { Id = actor.Id; Name = actor.Name; Description = actor.Description; ClassId = actor.ClassId; Level = actor.Level; BaseStats = new List <int>(actor.BaseStats); Growths = new List <int>(actor.Growths); WLvl = new List <int>(actor.WLvl); Gender = actor.Gender; Affinity = actor.Affinity; Items = new List <int[]>(); foreach (int[] item_data in actor.Items) { int[] ary = new int[item_data.Length]; Array.Copy(item_data, ary, item_data.Length); Items.Add(ary); } Supports = new List <string>(actor.Supports); Skills = new List <int>(actor.Skills); }
/// <summary> /// Passes the reset on to the list of cells /// </summary> /// <summary> /// Implements the following table for affinities: /// Affinity table- Affinity A, B, result (new affinity, Chromosome, conj. Chromosome) /// 00 00 00 A and[not] B /// 00 01 01 A and[not] B /// 00 10 10 B and[not] A /// 00 11 Chromosomes laid out vertically /// 01 00 01 B and[not] A /// 01 01 Chromosomes laid out vertically /// 01 10 11 B and[not] A /// 01 11 Chromosomes laid out vertically /// 10 00 10 A and[not] B /// 10 01 11 A and[not] B /// 10 10 Chromosomes laid out vertically /// 10 11 Chromosomes laid out vertically /// 11 00 Chromosomes laid out vertically /// 11 01 Chromosomes laid out vertically /// 11 10 Chromosomes laid out vertically /// 11 11 Chromosomes laid out vertically /// </summary> /// <param name="a">Chromosome A(above)</param> /// <param name="b">Chromosome B(above)</param> /// <returns></returns> public static Chromosome[] Merge(Chromosome a, Chromosome b) { Affinities aAffinity = (Affinities)a.affinityBits.BitsToString().BinaryStringToInt(); Affinities bAffinity = (Affinities)b.affinityBits.BitsToString().BinaryStringToInt(); BitArray result = AffinityBitsFromAffinity(aAffinity | bAffinity); Affinities order = aAffinity | bAffinity; Chromosome[] ret; if (aAffinity == Affinities.complete || bAffinity == Affinities.complete || (aAffinity == bAffinity && bAffinity != Affinities.dontCare)) {//if both are competing for the same position, vertical ret = new Chromosome[2]; ret[0] = a.deepCopy(); ret[1] = b.deepCopy(); } else if (bAffinity == Affinities.first || aAffinity == Affinities.last) { //B and [not] A ret = new Chromosome[1]; ret[0] = new Chromosome(b.cells); ret[0] = JoinCells(ret[0], a); ret[0].affinityBits = AffinityBitsFromAffinity(bAffinity); ret[0].classBits = b.classBits; ret[0].updateCellNum(); } else { ret = new Chromosome[1]; ret[0] = new Chromosome(a.cells); ret[0] = JoinCells(ret[0], b); ret[0].affinityBits = AffinityBitsFromAffinity(aAffinity); ret[0].classBits = a.classBits; ret[0].updateCellNum(); //A and [not] B } return(ret); }
static public float Compare(Affinities player, Affinities enemy) { float affinityMultiplier = 1.0f; switch (player) { case Affinities.fire: { switch (enemy) { case Affinities.fire: { affinityMultiplier = 0.5f; return(affinityMultiplier); } case Affinities.wind: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.water: { affinityMultiplier = 2.0f; return(affinityMultiplier); } case Affinities.earth: { affinityMultiplier = 0.0f; return(affinityMultiplier); } case Affinities.dark: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.light: { affinityMultiplier = 1.0f; return(affinityMultiplier); } } break; } case Affinities.wind: { switch (enemy) { case Affinities.fire: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.wind: { affinityMultiplier = 0.5f; return(affinityMultiplier); } case Affinities.water: { affinityMultiplier = 0.5f; return(affinityMultiplier); } case Affinities.earth: { affinityMultiplier = 0.5f; return(affinityMultiplier); } case Affinities.dark: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.light: { affinityMultiplier = 1.0f; return(affinityMultiplier); } } break; } case Affinities.water: { switch (enemy) { case Affinities.fire: { affinityMultiplier = 0.5f; return(affinityMultiplier); } case Affinities.wind: { affinityMultiplier = 2.0f; return(affinityMultiplier); } case Affinities.water: { affinityMultiplier = 0.5f; return(affinityMultiplier); } case Affinities.earth: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.dark: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.light: { affinityMultiplier = 1.0f; return(affinityMultiplier); } } break; } case Affinities.earth: { switch (enemy) { case Affinities.fire: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.wind: { affinityMultiplier = 2.0f; return(affinityMultiplier); } case Affinities.water: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.earth: { affinityMultiplier = 0.5f; return(affinityMultiplier); } case Affinities.dark: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.light: { affinityMultiplier = 1.0f; return(affinityMultiplier); } } break; } case Affinities.dark: { switch (enemy) { case Affinities.fire: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.wind: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.water: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.earth: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.dark: { affinityMultiplier = 0.5f; return(affinityMultiplier); } case Affinities.light: { affinityMultiplier = 2.0f; return(affinityMultiplier); } } break; } case Affinities.light: { switch (enemy) { case Affinities.fire: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.wind: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.water: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.earth: { affinityMultiplier = 1.0f; return(affinityMultiplier); } case Affinities.dark: { affinityMultiplier = 2.0f; return(affinityMultiplier); } case Affinities.light: { affinityMultiplier = 0.5f; return(affinityMultiplier); } } break; } } return(affinityMultiplier); }
protected Skill(string name, Affinities affinity, float power) { Name = name; this.Affinity = affinity; Power = power; }