Esempio n. 1
0
        private static void loadConstants(GameCommander commander)
        {
            JObject tok = commander.exec <JObject>("PropertiesInterface", "getData");
            //Debug.Print(tok["properties"]["const_trains"].ToString());
            JObject const_trains = tok["properties"]["const_trains"] as JObject;

            if (const_trains != null)
            {
                JEnumerable <JProperty> children = const_trains.Children <JProperty>();
                foreach (JProperty child in children)
                {
                    TrainStats.addStats(child);
                }
            }

            //Debug.Print(tok["properties"]["const_train_upgrades"].ToString());
            JObject const_train_upgrades = tok["properties"]["const_train_upgrades"] as JObject;

            if (const_train_upgrades != null)
            {
                JEnumerable <JProperty> children = const_train_upgrades.Children <JProperty>();
                foreach (JProperty child in children)
                {
                    TrainUpgrade.addUpgrade(child);
                }
            }

            seedForTowns_ = tok["client"]["seedForTowns"].ToObject <int>();
        }
Esempio n. 2
0
 public Train(GameCommander commander, JToken tok)
 {
     commander_      = commander;
     id_             = tok["ID"].ToString();
     type_           = (EngineType)int.Parse(tok["type"].ToString());
     baseNumWaggons_ = int.Parse(tok["max_num_waggons_base"].ToString());
     refresh(tok);
 }
Esempio n. 3
0
        public void Clear()
        {
            lock (this)
            {
                Trace.TraceInformation("Reset login data for {0}", UserName);
                browser_     = new WebBrowser();
                commander_   = null;
                sam_session_ = "";
                id_          = "";

                trains_.Clear();
                waggons_.Clear();
                rails_.Clear();

                LoginState = State.NotLoggedIn;
            }
        }
Esempio n. 4
0
 public static void init(GameCommander commander)
 {
     lock (lock_)
     {
         if (state_ != State.NotInitialized)
         {
             return;
         }
         state_ = State.Initializing;
     }
     loadConstants(commander);
     loadLocations(commander);
     lock (lock_)
     {
         state_ = State.Initialized;
     }
 }
Esempio n. 5
0
        private static void loadLocations(GameCommander commander)
        {
            JArray tok = commander.exec <JArray>("LocationInterface", "get");

            if (tok != null)
            {
                JEnumerable <JToken> children = tok.Children();
                int   cityCount    = 0;
                int   factoryCount = 0;
                Regex nameRe       = new Regex("^Factory_.*");
                foreach (JToken locTok in children)
                {
                    JToken nameTok = locTok["name"];
                    if (nameTok != null)
                    {
                        LocationInfo loc = null;
                        if (nameRe.IsMatch(nameTok.ToString()))
                        {
                            ++factoryCount;
                            Factory fac = new Factory(locTok);
                            addFactory(fac);
                            loc = fac;
                        }
                        else
                        {
                            ++cityCount;
                            City city = new City(locTok);
                            cityList_.Add(city);
                            loc = city;
                        }
                        locationsById_.Add(loc.Id, loc);
                    }
                }
                Trace.TraceInformation("{0} cities {1} factories", cityCount, factoryCount);
            }
        }
Esempio n. 6
0
        public bool selectWorld(string serverName)
        {
            try
            {
                if (!LoggedToTravian)
                {
                    login();
                }
                if (LoggedToTravian)
                {
                    Trace.TraceInformation("{0} loading initial data", email_);
                    browser_.get(Config.START_URL + "#world");
                    string page = browser_.get(Config.WorldListUrl);
                    Regex  re   = new Regex("var\\s+server\\s*=\\s*(.*?);");
                    Match  m    = re.Match(page);
                    if (m.Success)
                    {
                        string  src     = m.Groups[1].Value;
                        JObject srvList = JObject.Parse(src);
                        JToken  avatars = srvList[Config.REGION_ID][Config.COUNTRY_ID]["avatars"];
                        if (avatars != null)
                        {
                            JToken srv = avatars[Config.SERVER_ID];
                            re = new Regex("class=\"loginAvatarForm\".*?action=\"([^\"]+)\"");
                            m  = re.Match(page);
                            if (m.Success)
                            {
                                string actionUrl = m.Groups[1].Value;
                                page = browser_.post(actionUrl,
                                                     new Dictionary <string, string> {
                                    { "world", srv["consumers_id"].ToString() },
                                    { "sam_sess", sam_session_ }
                                });
                                avatarName_ = srv["avatar"]["avatar_name"].ToString();
                                re          = new Regex("document.location.href=\"([^\"]+\\?key=([^\"]+))");
                                m           = re.Match(page);
                                if (m.Success)
                                {
                                    string gameUrl = m.Groups[1].Value;
                                    string gameKey = m.Groups[2].Value;

                                    page = browser_.get(gameUrl);

                                    re = new Regex("load_swf\\([^)]*\"assets\\/([^\"]+)\",\\s+\"[^\"]+\",\\s+\"([^\"]+)\",\\s+\"([^\"]+)");
                                    m  = re.Match(page);
                                    if (m.Success)
                                    {
                                        string checksum = m.Groups[1].Value;
                                        string api      = m.Groups[3].Value;
                                        commander_ = new GameCommander(this, browser_, gameKey, checksum, api);
                                        JValue tok = commander_.exec <JValue>("AccountInterface", "is_logged_in", gameKey);
                                        if (tok != null)
                                        {
                                            id_ = tok.ToString();

                                            LoginState = State.LoggedIn;
                                            Trace.TraceInformation("{0} logged into RN game with avatar {1}", email_, avatarName_);
                                            refresh(true);
                                            return(true);
                                        }
                                        else
                                        {
                                            refreshData(true);
                                            if (!String.IsNullOrEmpty(id_))
                                            {
                                                LoginState = State.LoggedIn;
                                                Trace.TraceInformation("{0} logged into RN game with avatar {1}", email_, avatarName_);
                                                refresh();
                                                return(true);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    Trace.TraceWarning("{0} Can't select world: not logged in", email_);
                }
                Trace.TraceError("{0} Failed to load game initial data", email_);
                LoginState = State.NotLoggedIn;
            }
            catch (Exception e)
            {
                Trace.TraceError("{0} Exception while trying to load game initial data: {1}", email_, e);
            }
            return(false);
        }
Esempio n. 7
0
 public abstract void updateDetails(GameCommander commander);
Esempio n. 8
0
 public override void updateDetails(GameCommander commander)
 {
 }