public static bool TryConvertToArmElement(object value, out ArmElement armElement) { if (value is PSObject psObj) { value = psObj.BaseObject; } if (TryConvertToArmExpression(value, out ArmExpression armExpression)) { armElement = armExpression; return(true); } switch (value) { case ArmElement element: armElement = element; return(true); case IDictionary dictionary: return(TryConvertDictionaryToArmObject(dictionary, out armElement)); case IEnumerable enumerable: return(TryConvertEnumerableToArmArray(enumerable, out armElement)); } armElement = null; return(false); }
protected void WriteArmValueEntry( IArmString key, ArmElement value, bool isArrayElement = false) { WriteObject(new ArmEntry(key, value, isArrayElement)); }
private void WritePropertyInvocation(IArmString keyword, ArmElement value) { if (value is ArmArray arrayBody) { bool needSeparator = false; foreach (ArmElement element in arrayBody) { if (needSeparator) { WriteLine(); } // TODO: Work out how nested arrays work... WritePropertyInvocation(keyword, element); needSeparator = true; } return; } WriteKeyword(keyword); Write(" "); value.RunVisit(this); }
public void SetElement(ArmElement element, byte value) { ArmActiveElement = element; ArmElementDefValue = value; if (ArmElementDefValue > 100) { ArmElementDefValue = 100; } }
private void WriteExpression(ArmElement value, bool useParens = true) { if (useParens) { _expressionWriter.EnterParens(); } value.RunVisit(_expressionWriter); if (useParens) { _expressionWriter.ExitParens(); } }
private void WriteDefaultValue(ArmElement defaultValue) { if (defaultValue == null) { return; } Write(" = "); _expressionWriter.EnterParens(); WriteExpression(defaultValue); _expressionWriter.ExitParens(); }
public ArmBuilder <TObject> AddSingleElement(IArmString key, ArmElement value) { if (!_armObject.TryGetValue(key, out ArmElement existingValue)) { _armObject[key] = value; } else if (existingValue is ArmObject existingObject && value is ArmObject newObject) { foreach (KeyValuePair <IArmString, ArmElement> newEntry in newObject) { existingObject.Add(newEntry); } }
private static bool TryConvertEnumerableToArmArray(IEnumerable enumerable, out ArmElement armArray) { var array = new ArmArray(); foreach (object element in enumerable) { if (!TryConvertToArmElement(element, out ArmElement armElement)) { armArray = null; return(false); } array.Add(armElement); } armArray = array; return(true); }
private static bool TryConvertDictionaryToArmObject(IDictionary dictionary, out ArmElement armObject) { var obj = new ArmObject(); foreach (DictionaryEntry entry in dictionary) { if (!TryConvertToArmString(entry.Key, out IArmString key) || !TryConvertToArmElement(entry.Value, out ArmElement value)) { armObject = null; return(false); } obj[key] = value; } armObject = obj; return(true); }
public virtual void PostVisit(ArmElement element) { // Do nothing -- for override }
protected virtual VisitAction DefaultVisit(ArmElement element) { return(VisitAction.Continue); }
public ArmEntry(IArmString key, ArmElement value) : this(key, value, isArrayElement : false) { }
public ArmEntry(IArmString key, ArmElement value, bool isArrayElement) { Key = key; Value = value; IsArrayElement = isArrayElement; }
public ArmVariable(IArmString name, ArmElement value) { Name = name; Value = value; }
public Armor() { ItemLevel = 1; ArmDef = 1; ArmEvade = 0; ArmRes = 0; ArmActiveElement = 0; ArmActiveAilment = 0; ItemName = ""; ItemRank = 0; ItemType = "Armor"; ArmElementDefValue = 0; ArmAilmentDefValue = 0; ArmActiveElement = ArmElement.None; ArmActiveAilment = ArmAilment.None; ArmDefMod = 1; ArmResMod = 1; /* Set up names. Prefixes are always status effects, while suffixes are always an element. The second value in the dictionary is the * max percentage the weapon can have in a given tier. */ for (int i = 0; i < Enum.GetNames(typeof(ArmAilment)).Length; i++) { armAilmentNames.Add(new Dictionary <string, byte>()); } for (int i = 0; i < Enum.GetNames(typeof(ArmElement)).Length; i++) { armElementNames.Add(new Dictionary <string, byte>()); } /****Ailments. These are prefixes, which means armor names can begin with these names. *****/ //Poison tiers armAilmentNames[(int)ArmAilment.Poison].Add("Asp's", 10); armAilmentNames[(int)ArmAilment.Poison].Add("Cobra's", 20); armAilmentNames[(int)ArmAilment.Poison].Add("Anaconda's", 30); armAilmentNames[(int)ArmAilment.Poison].Add("Viper's", 40); armAilmentNames[(int)ArmAilment.Poison].Add("Boa's", 50); armAilmentNames[(int)ArmAilment.Poison].Add("Rattlesnake's", 60); armAilmentNames[(int)ArmAilment.Poison].Add("Bushmaster's", 70); armAilmentNames[(int)ArmAilment.Poison].Add("Copperhead's", 80); armAilmentNames[(int)ArmAilment.Poison].Add("Sidewinder's", 90); armAilmentNames[(int)ArmAilment.Poison].Add("Death Adder's", 100); //Console.WriteLine(armAilmentNames[(int)ArmAilment.Poison].Keys); //Stun tiers armAilmentNames[(int)ArmAilment.Stun].Add("Wasp's", 10); armAilmentNames[(int)ArmAilment.Stun].Add("Jellyfish's", 20); armAilmentNames[(int)ArmAilment.Stun].Add("Scorpion's", 30); armAilmentNames[(int)ArmAilment.Stun].Add("Basilisk's", 40); armAilmentNames[(int)ArmAilment.Stun].Add("Spore's", 50); armAilmentNames[(int)ArmAilment.Stun].Add("Parasite's", 60); armAilmentNames[(int)ArmAilment.Stun].Add("Frog's", 70); armAilmentNames[(int)ArmAilment.Stun].Add("Spider's", 80); armAilmentNames[(int)ArmAilment.Stun].Add("Ghoul's", 90); armAilmentNames[(int)ArmAilment.Stun].Add("Banshee's", 100); //Freezing tiers armAilmentNames[(int)ArmAilment.Freeze].Add("Chilling", 10); armAilmentNames[(int)ArmAilment.Freeze].Add("Frosty", 20); armAilmentNames[(int)ArmAilment.Freeze].Add("Icy", 30); armAilmentNames[(int)ArmAilment.Freeze].Add("Biting", 40); armAilmentNames[(int)ArmAilment.Freeze].Add("Polar", 50); armAilmentNames[(int)ArmAilment.Freeze].Add("Glacial", 60); armAilmentNames[(int)ArmAilment.Freeze].Add("Wintry", 70); armAilmentNames[(int)ArmAilment.Freeze].Add("Frigid", 80); armAilmentNames[(int)ArmAilment.Freeze].Add("Shivering", 90); armAilmentNames[(int)ArmAilment.Freeze].Add("Icicle", 100); //Death tiers armAilmentNames[(int)ArmAilment.Death].Add("Dim", 10); armAilmentNames[(int)ArmAilment.Death].Add("Shadow", 20); armAilmentNames[(int)ArmAilment.Death].Add("Sinister", 30); armAilmentNames[(int)ArmAilment.Death].Add("Blackened", 40); armAilmentNames[(int)ArmAilment.Death].Add("Death", 50); armAilmentNames[(int)ArmAilment.Death].Add("Disastrous", 60); armAilmentNames[(int)ArmAilment.Death].Add("Calamitous", 70); armAilmentNames[(int)ArmAilment.Death].Add("Obliterating", 80); armAilmentNames[(int)ArmAilment.Death].Add("Nihil", 90); armAilmentNames[(int)ArmAilment.Death].Add("Void", 100); //Sleep tiers armAilmentNames[(int)ArmAilment.Sleep].Add("Fairy's", 10); armAilmentNames[(int)ArmAilment.Sleep].Add("Cricket's", 20); armAilmentNames[(int)ArmAilment.Sleep].Add("Pesanta's", 30); armAilmentNames[(int)ArmAilment.Sleep].Add("Adarna's", 40); armAilmentNames[(int)ArmAilment.Sleep].Add("Bakhtak's", 50); armAilmentNames[(int)ArmAilment.Sleep].Add("Owl's", 60); armAilmentNames[(int)ArmAilment.Sleep].Add("Alp's", 70); armAilmentNames[(int)ArmAilment.Sleep].Add("Incubus's", 80); armAilmentNames[(int)ArmAilment.Sleep].Add("Mare's", 90); armAilmentNames[(int)ArmAilment.Sleep].Add("Succubus's", 100); /*****Elements. These are suffixes, which means they are added at the end of weapon names****/ //Fire tiers armElementNames[(int)ArmElement.Fire].Add("of the Salamander", 10); armElementNames[(int)ArmElement.Fire].Add("of the Drake", 20); armElementNames[(int)ArmElement.Fire].Add("of the Kiln", 30); armElementNames[(int)ArmElement.Fire].Add("of Magma", 40); armElementNames[(int)ArmElement.Fire].Add("of Basalt", 50); armElementNames[(int)ArmElement.Fire].Add("of the Furnace", 60); armElementNames[(int)ArmElement.Fire].Add("of the Volcano", 70); armElementNames[(int)ArmElement.Fire].Add("of the Firebird", 80); armElementNames[(int)ArmElement.Fire].Add("of the Ifrit", 90); armElementNames[(int)ArmElement.Fire].Add("of the Seraphim", 100); //Water tiers armElementNames[(int)ArmElement.Water].Add("of the Goldfish", 10); armElementNames[(int)ArmElement.Water].Add("of the Otter", 20); armElementNames[(int)ArmElement.Water].Add("of the Penguin", 30); armElementNames[(int)ArmElement.Water].Add("of the Floe", 40); armElementNames[(int)ArmElement.Water].Add("of Waterfalls", 50); armElementNames[(int)ArmElement.Water].Add("of Snow", 60); armElementNames[(int)ArmElement.Water].Add("of the Polar Bear", 70); armElementNames[(int)ArmElement.Water].Add("of the Yeti", 80); armElementNames[(int)ArmElement.Water].Add("of Ice", 90); armElementNames[(int)ArmElement.Water].Add("of Storms", 100); //Earth tiers armElementNames[(int)ArmElement.Earth].Add("of Mud", 10); armElementNames[(int)ArmElement.Earth].Add("of Granite", 20); armElementNames[(int)ArmElement.Earth].Add("of Topaz", 30); armElementNames[(int)ArmElement.Earth].Add("of Garnet", 40); armElementNames[(int)ArmElement.Earth].Add("of the Ruby", 50); armElementNames[(int)ArmElement.Earth].Add("of Silver", 60); armElementNames[(int)ArmElement.Earth].Add("of Gold", 70); armElementNames[(int)ArmElement.Earth].Add("of Platinum", 80); armElementNames[(int)ArmElement.Earth].Add("of Diamond", 90); armElementNames[(int)ArmElement.Earth].Add("of Obsidian", 100); //Wind tiers armElementNames[(int)ArmElement.Wind].Add("of the Gull", 10); armElementNames[(int)ArmElement.Wind].Add("of the Windmill", 20); armElementNames[(int)ArmElement.Wind].Add("of the Blue Jay", 30); armElementNames[(int)ArmElement.Wind].Add("of the Cloud", 40); armElementNames[(int)ArmElement.Wind].Add("of the Sky", 50); armElementNames[(int)ArmElement.Wind].Add("of Calm", 60); armElementNames[(int)ArmElement.Wind].Add("of the Egret", 70); armElementNames[(int)ArmElement.Wind].Add("of the Peacock", 80); armElementNames[(int)ArmElement.Wind].Add("of the Eagle", 90); armElementNames[(int)ArmElement.Wind].Add("of the Albatross", 100); //Light tiers armElementNames[(int)ArmElement.Light].Add("of Dawn", 10); armElementNames[(int)ArmElement.Light].Add("of Luminance", 20); armElementNames[(int)ArmElement.Light].Add("of Daybreak", 30); armElementNames[(int)ArmElement.Light].Add("of Brilliance", 40); armElementNames[(int)ArmElement.Light].Add("of Splendor", 50); armElementNames[(int)ArmElement.Light].Add("of Resplendence", 60); armElementNames[(int)ArmElement.Light].Add("of Starlight", 70); armElementNames[(int)ArmElement.Light].Add("of Radiance", 80); armElementNames[(int)ArmElement.Light].Add("of Scintillation", 90); armElementNames[(int)ArmElement.Light].Add("of the Sun", 100); //Dark tiers armElementNames[(int)ArmElement.Dark].Add("of Dusk", 10); armElementNames[(int)ArmElement.Dark].Add("of Gloom", 20); armElementNames[(int)ArmElement.Dark].Add("of Shade", 30); armElementNames[(int)ArmElement.Dark].Add("of Eventide", 40); armElementNames[(int)ArmElement.Dark].Add("of Midnight", 50); armElementNames[(int)ArmElement.Dark].Add("of the Umbra", 60); armElementNames[(int)ArmElement.Dark].Add("of Spirits", 70); armElementNames[(int)ArmElement.Dark].Add("of Sin", 80); armElementNames[(int)ArmElement.Dark].Add("of Twilight", 90); armElementNames[(int)ArmElement.Dark].Add("of the End", 100); }