private static BattlerActionEffectFlags ParseListOfFlags(string[] flagsList) { const int firstTermThatsActuallyAFlag = 8; BattlerActionEffectFlags flags = 0; for (int i = firstTermThatsActuallyAFlag; i < flagsList.Length; i++) { bool isValidFlag = false; for (ulong b = 1; b < (ulong)1 << 63;) { if (flagsList[i] == ((BattlerActionEffectFlags)b).ToString()) { flags |= (BattlerActionEffectFlags)b; isValidFlag = true; break; } b = b << 1; } if (isValidFlag == false) { throw new System.NotSupportedException("BattlerActionData entry has a bad flag: " + flagsList[i]); } } return(flags); }
private BattlerActionData(int index, string line) { actionID = (BattlerAction)index; string[] terms = line.Split(','); name = terms[0]; cooldownTurns = int.Parse(terms[1]); effectPower = int.Parse(terms[2]); interruptType = ParseInterruptType(terms[3]); anim = ParseAnim(terms[4]); target = ParseTarget(terms[5]); baseDamage = int.Parse(terms[6]); numberOfSubtargets = int.Parse(terms[7]); flags = ParseListOfFlags(terms); if ((flags & BattlerActionEffectFlags.Healing) == BattlerActionEffectFlags.Healing) { baseDamage = baseDamage * -1; } }
/// <summary> /// Checks to see if the flag is set in the action data. /// Pass a flag, get a bool. /// </summary> public bool HasEffectFlag(BattlerActionEffectFlags flag) { return((flags & flag) == flag); }