Example #1
0
        public void UpdateSheetFromGameFile(string gameFileRootPath)
        {
            string gameFilePath = gameFileRootPath + Path.DirectorySeparatorChar + "Achievement.bytes";

            //Getting all current entries
            Dictionary <string, AchievementEntry> achievementEntries = new Dictionary <string, AchievementEntry>();

            Console.WriteLine("Getting Achievement Spreadsheet content");
            GoogleSheetConnector gsc = GoogleSheetConnector.GetInstance();
            string talkSpreadsheetId = gsc.SpreadsheetIDs["Achievement"];

            SpreadsheetsResource.ValuesResource.GetRequest request = gsc.Service.Spreadsheets.Values.Get(talkSpreadsheetId, SheetRange);
            ValueRange             response = request.Execute();
            List <IList <object> > values   = (List <IList <object> >)response.Values;
            int rowC = 1;

            if (values != null && values.Count > 0)
            {
                foreach (var row in values)
                {
                    AchievementEntry ae = new AchievementEntry(row);
                    ae.row = rowC;
                    achievementEntries[ae.ID] = ae;
                    rowC++;
                }
            }

            //UpdatingRequests
            var updateRequests = new List <Request>();

            Console.WriteLine("Comparing with games version and calculating updates...");
            //Parse every line in the game file
            System.IO.StreamReader reader = new System.IO.StreamReader(gameFilePath);
            string line;

            while ((line = reader.ReadLine()) != null)
            {
                //Splitting
                string[] data = line.Split('\t');

                //Parsing data
                string ID = data[0];
                string ShortOriginalText = data[1];
                string LongOriginalText  = data[2];
                string D = data[3];

                string StandardizedTerm_Short = StandardizedTermManager.GetInstance().GetTermLocatorText(ShortOriginalText);
                string StandardizedTerm_Long  = StandardizedTermManager.GetInstance().GetTermLocatorText(LongOriginalText);

                if (achievementEntries.ContainsKey(ID))
                {
                    //Compare and update
                    AchievementEntry existingEntry = achievementEntries[ID];
                    bool             needsUpdate   = false;

                    if (!string.IsNullOrEmpty(ShortOriginalText) && existingEntry.ShortOriginalText != ShortOriginalText)
                    {
                        existingEntry.ShortOriginalText = ShortOriginalText;
                        existingEntry.ShortTextChanged  = true;
                        needsUpdate = true;
                    }

                    if (!string.IsNullOrEmpty(LongOriginalText) && existingEntry.LongOriginalText != LongOriginalText)
                    {
                        existingEntry.LongOriginalText = LongOriginalText;
                        existingEntry.LongTextChanged  = true;
                        needsUpdate = true;
                    }

                    if (!string.IsNullOrEmpty(StandardizedTerm_Short) && existingEntry.StandardizedTerm_Short != StandardizedTerm_Short)
                    {
                        existingEntry.StandardizedTerm_Short = StandardizedTerm_Short;
                        needsUpdate = true;
                    }

                    if (!string.IsNullOrEmpty(StandardizedTerm_Long) && existingEntry.StandardizedTerm_Long != StandardizedTerm_Long)
                    {
                        existingEntry.StandardizedTerm_Long = StandardizedTerm_Long;
                        needsUpdate = true;
                    }

                    if (existingEntry.D != D)
                    {
                        existingEntry.D = D;
                        needsUpdate     = true;
                    }

                    if (needsUpdate)
                    {
                        updateRequests.Add(existingEntry.ToGoogleSheetUpdateRequest());
                    }
                }
                else
                {
                    //New one
                    AchievementEntry newEntry = new AchievementEntry();
                    newEntry.ID = ID;
                    newEntry.ShortOriginalText = ShortOriginalText;
                    newEntry.ShortText         = TranslationManager.GetInstance().Translate(StandardizedTerm_Short);
                    newEntry.ShortTextChanged  = true;
                    newEntry.LongOriginalText  = LongOriginalText;
                    newEntry.LongText          = TranslationManager.GetInstance().Translate(StandardizedTerm_Long);
                    newEntry.D = D;
                    newEntry.LongTextChanged        = true;
                    newEntry.MLTranslated           = true;
                    newEntry.StandardizedTerm_Short = StandardizedTerm_Short;
                    newEntry.StandardizedTerm_Long  = StandardizedTerm_Long;

                    updateRequests.Add(newEntry.ToGoogleSheetUpdateRequest());
                }
            }

            Console.WriteLine("Updating spreadsheet...");
            BatchUpdateSpreadsheetRequest batchUpdate = new BatchUpdateSpreadsheetRequest();

            batchUpdate.Requests = new List <Request>();
            int reqHandled = 0;

            //updateRequests.RemoveRange(2, updateRequests.Count - 2);
            foreach (var req in updateRequests)
            {
                batchUpdate.Requests.Add(req);
                reqHandled++;
                if (batchUpdate.Requests.Count >= 500 || reqHandled >= updateRequests.Count)
                {
                    var updateRequest = gsc.Service.Spreadsheets.BatchUpdate(batchUpdate, talkSpreadsheetId);
                    updateRequest.Execute();
                    //Resetting batch update
                    batchUpdate          = new BatchUpdateSpreadsheetRequest();
                    batchUpdate.Requests = new List <Request>();
                }
            }

            Console.WriteLine("Done!");
        }