public ScriptControl(MainWindow parent)
        {
            try
            {
                this.parent = parent;
                eventTable["update"] = new List<string>();
                eventTable["interfaceInit"] = new List<string>();
                eventTable["processingFinished"] = new List<string>();
                eventTable["levelUp"] = new List<string>();
                LuaVM = new Lua();
                registerLuaFunctions(this);

                //LuaVM.RegisterFunction("RegisterEvent", this, parent.leagueInfo.GetType().GetMethod("registerEvent"));
                log("-----------------------------------------------------------");
                log("Overlay Init:" + DateTime.Now);
            }
            catch (Exception e)
            {
                log("[ERROR] (" + e.Source + "): " + e.Message + "\n" + e.StackTrace);
                throw;
            }
        }
 public static void setMainWindow(MainWindow mw)
 {
     parent = mw;
 }
 public KeyboardManager(MainWindow mw)
 {
     parent = mw;
 }
        /*
         * Loads all the summoner spell names/images and champion names/images
         * for reference in order to process the load screen
         */
        public LeagueInfo(MainWindow f)
        {
            try
            {
                // Load the backup champion name map
                string[] fileLines = File.ReadAllLines(LeagueUtils.FileFinder.fontConfigFinder());
                foreach (string line in fileLines)
                {
                    //An example of the line we're looking for: tr "game_character_displayname_Akali" = "Akali"
                    if (line.Contains("game_character_displayname"))
                    {
                        string baseName = line.Replace("tr \"game_character_displayname_", "");
                        int i = baseName.LastIndexOf("=") + 3;
                        string mappedname = baseName.Substring(i, baseName.Length - i - 1);
                        baseName = baseName.Substring(0, baseName.IndexOf("\"")).ToLower();
                        championNameMap.Add(baseName, mappedname);
                    }
                }
                form = f;

                //init summoner spell info table
                SummonerSpellInfo ssi = new SummonerSpellInfo();
                ssi.codeName = "Spell_SummonerBoost";
                ssi.name = "Cleanse";
                ssi.cooldown = 130;
                summonerSpellInfo[ssi.codeName] = ssi;

                ssi = new SummonerSpellInfo();
                ssi.codeName = "Spell_SummonerClairvoyance";
                ssi.name = "Clairvoyance";
                ssi.cooldown = 55;
                summonerSpellInfo[ssi.codeName] = ssi;

                ssi = new SummonerSpellInfo();
                ssi.codeName = "Spell_SummonerDot";
                ssi.name = "Ignite";
                ssi.cooldown = 120;
                summonerSpellInfo[ssi.codeName] = ssi;

                ssi = new SummonerSpellInfo();
                ssi.codeName = "Spell_SummonerExhaust";
                ssi.cooldown = 210;
                summonerSpellInfo[ssi.codeName] = ssi;

                ssi = new SummonerSpellInfo();
                ssi.codeName = "Spell_SummonerFlash";
                ssi.name = "Flash";
                ssi.cooldown = 225;
                summonerSpellInfo[ssi.codeName] = ssi;

                ssi = new SummonerSpellInfo();
                ssi.codeName = "Spell_SummonerFortify";
                ssi.name = "Fortify";
                ssi.cooldown = 300;
                summonerSpellInfo[ssi.codeName] = ssi;

                ssi = new SummonerSpellInfo();
                ssi.codeName = "Spell_SummonerHaste";
                ssi.name = "Ghost";
                ssi.cooldown = 210;
                summonerSpellInfo[ssi.codeName] = ssi;

                ssi = new SummonerSpellInfo();
                ssi.codeName = "Spell_SummonerHeal";
                ssi.name = "Heal";
                ssi.cooldown = 270;
                summonerSpellInfo[ssi.codeName] = ssi;

                ssi = new SummonerSpellInfo();
                ssi.codeName = "Spell_SummonerMana";
                ssi.name = "Clarity";
                ssi.cooldown = 180;
                summonerSpellInfo[ssi.codeName] = ssi;

                ssi = new SummonerSpellInfo();
                ssi.codeName = "Spell_SummonerPromote";
                ssi.name = "Promote";
                ssi.cooldown = 300;
                summonerSpellInfo[ssi.codeName] = ssi;

                ssi = new SummonerSpellInfo();
                ssi.codeName = "Spell_SummonerRally";
                ssi.name = "Rally";
                ssi.cooldown = 360;
                summonerSpellInfo[ssi.codeName] = ssi;

                ssi = new SummonerSpellInfo();
                ssi.codeName = "Spell_SummonerRevive";
                ssi.name = "Revive";
                ssi.cooldown = 520;
                summonerSpellInfo[ssi.codeName] = ssi;

                ssi = new SummonerSpellInfo();
                ssi.codeName = "Spell_SummonerSmite";
                ssi.name = "Smite";
                ssi.cooldown = 75;
                summonerSpellInfo[ssi.codeName] = ssi;

                ssi = new SummonerSpellInfo();
                ssi.codeName = "Spell_SummonerTeleport";
                ssi.name = "Teleport";
                ssi.cooldown = 240;
                summonerSpellInfo[ssi.codeName] = ssi;

                // Load the summoner spell images
                foreach (string key in summonerSpellInfo.Keys)
                {
                    summonerSpellInfo[key].image = (Bitmap)Image.FromFile(LeagueUtils.FileFinder.findSummonerSpells() + "\\" + key + ".png");
                }

                // Match strings similar to ""<word(s)>_<word(s)>""=""
                Regex r = new Regex(@"""(\w+)_(\w+)"" = ""([^""]+)");
                foreach (string s in File.ReadAllLines(LeagueUtils.FileFinder.fontConfigFinder()))
                {
                    Match m = r.Match(s);
                    if (m.Success)
                    {
                        string infoType = m.Groups[1].Value;
                        string infoID = m.Groups[2].Value;
                        string infoValue = m.Groups[3].Value;
                        if (infoType == "game_character_displayname" &&
                            File.Exists(LeagueUtils.FileFinder.findChampImageFolder() + "\\" + infoID + "_Square_0.png"))
                            cnames.Add(infoID, infoValue);
                    }
                }

                //get champion images for load screen processing
                foreach (FileInfo fi in new DirectoryInfo(LeagueUtils.FileFinder.findChampImageFolder()).GetFiles("*.jpg"))
                {
                    if (fi.Name.ToLower().Contains("_square_") || fi.Name.ToLower().Contains("_splash_") || fi.Name.Count(c => c == '_') != 1) continue;
                    ChampNameAndImage champ = new ChampNameAndImage();
                    champ.codeName = fi.Name.Split('_')[0];
                    champ.image = (Bitmap)Bitmap.FromFile(fi.FullName);
                    champData.Add(champ);
                }
                fileLines = null;
            }
            catch (Exception e)
            {
                sc.log("[ERROR] (" + e.Source + "): " + e.Message + "\n" + e.StackTrace);
                throw;
            }

        }
 public UIComponents(MainWindow parent)
 {
     activeComponents = new Dictionary<int, UIElement>();
     this.parent = parent;
 }