public AplAction(String fullExpression, List <String> comments, ActionPrioriyList aList) { myList = aList; Comments.AddRange(comments); comments.Clear(); _fullExpression = fullExpression; }
public AplAction(String fullExpression, List<String> comments, ActionPrioriyList aList) { myList = aList; Comments.AddRange(comments); comments.Clear(); _fullExpression = fullExpression; }
//hotkey=potion_enabled,alt,e private static object ParseLine(String l, ActionPrioriyList a) { if (l.StartsWith("hotkeys+=")) { var m = hotkeyReg.Match(l); APLHotkey ahk = new APLHotkey(); Keys k; Keys.TryParse(m.Groups["key"].ToString(), out k); ahk.Key = k; ModifierKeys mk = ModifierKeys.NoRepeat; if (m.Groups["mod"].ToString().Equals("alt")) { mk = ModifierKeys.Alt; } if (m.Groups["mod"].ToString().Equals("ctrl")) { mk = ModifierKeys.Control; } if (m.Groups["mod"].ToString().Equals("shift")) { mk = ModifierKeys.Shift; } if (m.Groups["mod"].ToString().Equals("none")) { mk = ModifierKeys.NoRepeat; } ahk.Key = k; ahk.Mod = mk; ahk.Name = m.Groups["name"].ToString(); //SimcraftImpl.Write(ahk.Name+" "+ahk.Mod+" "+ahk.Key); return(ahk); } if (l.StartsWith("talent_")) { return new Comment { Content = l } } ; if (l.StartsWith("#")) { return new Comment { Content = l } } ; if (l.StartsWith("action")) { return(ParseAction(l, a)); } if (items.IsMatch(l)) { return(ParseItem(l)); } return(default(AplExpr)); }
public static ActionPrioriyList FromString(String s) { var lines = s.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None); //if (lines.Length < 2) // lines = s.Split(new string[] { "\r" }, StringSplitOptions.None); var apl = new ActionPrioriyList(); if (!apl.SetAplHeader(s)) { return(apl); } foreach (var l in lines) { var expr = ParseLine(l, apl); if (expr is AplAction) { apl.Actions.Add((AplAction)expr); } else if (expr is EquippedItem) { apl.Items.Add(((EquippedItem)expr).slot, (EquippedItem)expr); } if (expr is Comment) { CommentBuffer.Add(((Comment)expr).Content); } if (expr is APLHotkey) { apl.hotkeys.Add((APLHotkey)expr); } } foreach (var a in apl.Actions) { a.ParseAction(); } return(apl); }
public static ActionPrioriyList FromString(String s) { var lines = s.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None); //if (lines.Length < 2) // lines = s.Split(new string[] { "\r" }, StringSplitOptions.None); var apl = new ActionPrioriyList(); if (!apl.SetAplHeader(s)) return apl; foreach (var l in lines) { var expr = ParseLine(l,apl); if (expr is AplAction) apl.Actions.Add((AplAction)expr); else if (expr is EquippedItem) apl.Items.Add(((EquippedItem)expr).slot,(EquippedItem)expr); if (expr is Comment) CommentBuffer.Add(((Comment)expr).Content); if (expr is APLHotkey) apl.hotkeys.Add((APLHotkey)expr); } foreach (var a in apl.Actions) { a.ParseAction(); } return apl; }
//hotkey=potion_enabled,alt,e private static object ParseLine(String l, ActionPrioriyList a) { if (l.StartsWith("hotkeys+=")) { var m = hotkeyReg.Match(l); APLHotkey ahk = new APLHotkey(); Keys k; Keys.TryParse(m.Groups["key"].ToString(),out k); ahk.Key = k; ModifierKeys mk = ModifierKeys.NoRepeat; if (m.Groups["mod"].ToString().Equals("alt")) mk = ModifierKeys.Alt; if (m.Groups["mod"].ToString().Equals("ctrl")) mk = ModifierKeys.Control; if (m.Groups["mod"].ToString().Equals("shift")) mk = ModifierKeys.Shift; if (m.Groups["mod"].ToString().Equals("none")) mk = ModifierKeys.NoRepeat; ahk.Key = k; ahk.Mod = mk; ahk.Name = m.Groups["name"].ToString(); //SimcraftImpl.Write(ahk.Name+" "+ahk.Mod+" "+ahk.Key); return ahk; } if (l.StartsWith("talent_")) return new Comment { Content = l }; if (l.StartsWith("#")) return new Comment{Content = l}; if (l.StartsWith("action")) return ParseAction(l,a); if (items.IsMatch(l)) return ParseItem(l); return default(AplExpr); }
private static AplAction ParseAction(String l, ActionPrioriyList apl) { return new AplAction(l, CommentBuffer, apl); }
public SimcraftImpl() { //Write("go!"); try { dbc = Serializer.DeSerializeObject(FindDatabase()); } catch (Exception e) { Write(e.ToString()); } spell_data_t[] a = new spell_data_t[dbc.Spells.Values.Count]; dbc.Spells.Values.CopyTo(a, 0); foreach (var v in a) { dbc.Spells[v.id, v.token] = v; } Write("Count "+dbc.Spells.Count); Directory.CreateDirectory(SimcraftProfilePath); try { RoutineManager.Current = null; SimcNames.Populate(); MainCache = new ProxyCacheEntry(); inst = this; active_dot = new ActiveDot(); //trinket = new TrinketProxy(() => StyxWoW.Me.ToUnit(), this); health = new HealthProxy(() => StyxWoW.Me.ToUnit()); energy = new EnergyProxy(() => StyxWoW.Me.ToUnit()); focus = new FocusProxy(() => StyxWoW.Me.ToUnit()); chi = new ChiProxy(() => StyxWoW.Me.ToUnit()); rage = new RageProxy(() => StyxWoW.Me.ToUnit()); buff = new BuffProxy(() => StyxWoW.Me.ToUnit(), PlayerAuras); debuff = new DebuffProxy(() => conditionUnit); talent = new TalentProxy(() => StyxWoW.Me.ToUnit()); cooldown = new CooldownProxy(() => StyxWoW.Me.ToUnit()); spell = new SpellProxy(() => StyxWoW.Me.ToUnit()); combo_points = new ComboPointProxy(() => StyxWoW.Me.ToUnit()); target = new TargetProxy(() => conditionUnit); runic_power = new RunicPowerProxy(() => StyxWoW.Me.ToUnit()); disease = new DiseaseProxy(this); blood = new RuneProxy(() => StyxWoW.Me.ToUnit(), RuneType.Blood); unholy = new RuneProxy(() => StyxWoW.Me.ToUnit(), RuneType.Unholy); frost = new RuneProxy(() => StyxWoW.Me.ToUnit(), RuneType.Frost); death = new RuneProxy(() => StyxWoW.Me.ToUnit(), RuneType.Death); glyph = new GlyphProxy(() => StyxWoW.Me.ToUnit()); set_bonus = new SetBonusProxy(); prev_gcd = new PrevGcdProxy(); prev = new PrevGcdProxy(); pet = new PetProxy("def"); eclipse_energy = new EclipseProxy(() => StyxWoW.Me.ToUnit()); mana = new ManaProxy(() => StyxWoW.Me.ToUnit()); holy_power = new HolyPowerProxy(() => StyxWoW.Me.ToUnit()); seal = new SealProxy(); actions = new ActionProxy(); stat = new StatProxy(); obliterate = new ObliterateProxy(); MainCache["gcd"].SetRetrievalDelegate(() => { var rem = (Decimal)SpellManager.GlobalCooldownLeft.TotalSeconds; var g = BaseGcd(); g = g / ((100+spell_haste)/ 100); return new Gcd((Decimal)_conditionSpell.gcd, Math.Max(g, 1), rem); }); MainCache["GlobalCooldown"].SetRetrievalDelegate(() => { return SpellManager.GlobalCooldownLeft.TotalMilliseconds > 1000/15; }); MainCache["WoWTime"].SetRetrievalDelegate(() => { return Lua.GetReturnVal<double>("return GetTime()",0); }); var s = new spell_data_t(); s.name = "Storm, Earth, and Fire"; s.token = "storm_earth_and_fire"; s.id = 138130; dbc.Spells.Add(138130, s); GenerateApls(SimcraftProfilePath); var settings = SimCSettings.currentSettings; if (settings.Specs.ContainsKey(Me.Specialization)) { var aplFileName = settings.Specs[Me.Specialization]; try { var apl = apls[aplFileName]; apl.CreateBehavior(); apl.PrintResolutionTable(); current_action_list = apl; } catch (KeyNotFoundException) { throw new ApplicationException( string.Format("settings are incorrect for current spec {0}, it reference unexistent file {1}", Me.Specialization, aplFileName)); } } else { try { var apl = apls.Values.First(o => o.Class == Me.Class); var filename = apls.Keys.First(k => apls[k] == apl); settings.Specs[Me.Specialization] = filename; SimCSettings.Save(); Write(string.Format("Settings does not tell which *.simc " + "use for current spec({0}) so picking most appropriate: {1}", Me.Specialization, filename)); apl.CreateBehavior(); apl.PrintResolutionTable(); current_action_list = apl; } catch (Exception) { throw new ApplicationException( string.Format("There's not *.simc for current spec({0})", Me.Specialization)); } } } catch (Exception e) { Write(e.ToString()); } }
private static AplAction ParseAction(String l, ActionPrioriyList apl) { return(new AplAction(l, CommentBuffer, apl)); }