public static T LoadUsingKey <T>(string key) where T : new() { SpreadsheetListFeed listFeed = GDocService.GetSpreadsheetContents(key); if (listFeed == null) { Debug.LogWarning("GameConfig spreadsheet was not loaded. Loading gameconfig.txt instead."); return(LoadFromResources <T>()); } Hashtable tableRows = listFeed.GetRows(); T config = new T(); PropertyInfo[] properties = config.GetType().GetProperties(); for (int i = 0; i < properties.Length; ++i) { PropertyInfo property = properties[i]; if (tableRows.ContainsKey(property.Name)) { Hashtable tableColumns = tableRows[property.Name] as Hashtable; if (tableColumns.Contains("value")) { Log("Value of " + property.Name + " : " + tableColumns["value"]); Log("Before: " + property.GetValue(config, null)); property.SetValue(config, Convert.ChangeType(tableColumns["value"], property.PropertyType), null); Log("After: " + property.GetValue(config, null)); } } } return(config); }
public static SpreadsheetListFeed GetSpreadsheetContents(string spreadsheetID, string sheetID) { InsecureSecurityCertificatePolicy.Instate(); SpreadsheetListFeed listFeed = null; string json = ""; string url = "https://spreadsheets.google.com/feeds/list/" + spreadsheetID + "/" + sheetID + "/public/basic?alt=json"; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); try { using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { using (StreamReader reader = new StreamReader(response.GetResponseStream())) { json = reader.ReadToEnd(); } } // Debug.Log(string.Format("Response from {0}\n{1}", url, json)); listFeed = JsonMapper.ToObject <SpreadsheetListFeed>(json); }catch (Exception e) { Debug.LogWarning("Failed to read spreadsheet: " + spreadsheetID + " " + e.Message); listFeed = null; } return(listFeed); }