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>(); }
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); }
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; } }
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; } }
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); } }
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); }
public abstract void updateDetails(GameCommander commander);
public override void updateDetails(GameCommander commander) { }