Esempio n. 1
0
    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);
    }
Esempio n. 2
0
    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);
    }