public void ShowFirstCard(string currentDeck)
        {
            var spreadsheetConnector = new SpreadsheetConnector();
            var deck = spreadsheetConnector.GetDeck(currentDeck);

            View.ShowCard(deck.CurrentCard.Question, deck.CurrentCard.Answer);
        }
        public string AddNewDeck(string newDeckName)
        {
            if (InvalidData(newDeckName))
            {
                return(null);
            }
            var spreadsheetConnector = new SpreadsheetConnector();

            spreadsheetConnector.AppendData(new List <Card> {
                new Card(newDeckName, "Sample Question: 1+1 = ?", "Sample Answer: 1+1 = 2")
            });
            return(newDeckName);
        }
        public void GetPreviousCard(string currentDeck, string question, string answer)
        {
            if (!DeckLoaded(currentDeck))
            {
                return;
            }
            var spreadsheetConnector = new SpreadsheetConnector();
            var deck = spreadsheetConnector.GetDeck(currentDeck);

            deck.GetPreviousCard(question, answer);
            View.HideAnswer();
            View.ShowCard(deck.CurrentCard.Question, deck.CurrentCard.Answer);
        }
 public void DeleteDeck(string currentDeck)
 {
     if (!DeckLoaded(currentDeck))
     {
         return;
     }
     if (MessageBox.Show("Delete this deck?", "Delete", MessageBoxButtons.OK) == DialogResult.OK)
     {
         var spreadsheetConnector = new SpreadsheetConnector();
         spreadsheetConnector.DeleteDeck(currentDeck);
         View.Reset();
     }
 }
        private bool DuplicateData(string currentDeck, string question, string answer)
        {
            var spreadsheetConnector = new SpreadsheetConnector();
            var deck = spreadsheetConnector.GetDeck(currentDeck);

            foreach (var card in deck.Cards)
            {
                if (card.Question == question && card.Answer == answer)
                {
                    return(true);
                }
            }
            return(false);
        }
        public void AddCardToDeck(string currentDeck, string question, string answer)
        {
            if (InvalidData(currentDeck, question, answer))
            {
                return;
            }
            var spreadsheetConnector = new SpreadsheetConnector();

            spreadsheetConnector.AppendData(new List <Card>()
            {
                new Card(currentDeck, question, answer)
            });
            View.ClearAddCardContents();
        }
        public void UpdateEditedCard(string deckName, string question, string answer, string newQuestion, string newAnswer)
        {
            if (InvalidData(deckName, newQuestion, newAnswer))
            {
                return;
            }
            var spreadsheetConnector = new SpreadsheetConnector();

            spreadsheetConnector.DeleteCard(deckName, question, answer);
            spreadsheetConnector.AppendData(new List <Card>()
            {
                new Card(deckName, newQuestion, newAnswer)
            });
        }
        private bool DuplicateData(string newDeckName)
        {
            var spreadsheetConnector = new SpreadsheetConnector();
            var allCards             = spreadsheetConnector.GetAllData();

            foreach (var card in allCards)
            {
                if (card.DeckName == newDeckName)
                {
                    return(true);
                }
            }
            return(false);
        }
        public void DeleteCurrentCard(string currentDeck, string question, string answer)
        {
            if (!DeckLoaded(currentDeck))
            {
                return;
            }
            var spreadsheetConnector = new SpreadsheetConnector();

            if (MessageBox.Show("Delete this card from the deck?", "Delete", MessageBoxButtons.OK) == DialogResult.OK)
            {
                spreadsheetConnector.DeleteCard(currentDeck, question, answer);
                ShowFirstCard(currentDeck);
            }
        }
        public void PresentComboBox()
        {
            var spreadsheetConnector = new SpreadsheetConnector();
            var data = spreadsheetConnector.GetAllData();

            var deckNames = new List <string>();

            foreach (var card in data)
            {
                if (deckNames.Contains(card.DeckName))
                {
                    continue;
                }
                deckNames.Add(card.DeckName);
            }

            View.LoadComboBox(deckNames);
        }
Пример #11
0
        public static void Generate(SpreadsheetConnector connector, GameTextGenerateInfo generateInfo)
        {
            if (generateInfo == null)
            {
                return;
            }

            var progressTitle   = "Generate Progress";
            var progressMessage = string.Empty;

            var gameTextConfig = GameTextConfig.Instance;

            progressMessage = "Connection Spreadsheet.";
            EditorUtility.DisplayProgressBar(progressTitle, progressMessage, 0f);

            var asset = LoadAsset(gameTextConfig.ScriptableObjectFolderPath, generateInfo.AssetPath);

            progressMessage = "Load GameText form Spreadsheet.";
            EditorUtility.DisplayProgressBar(progressTitle, progressMessage, 0f);

            // Spreadsheetに接続しデータを取得 (同期通信).
            var spreadsheets = connector.GetSpreadsheet(gameTextConfig.SpreadsheetId).ToArray();

            EditorUtility.DisplayProgressBar(progressTitle, progressMessage, 1f);

            if (spreadsheets.Any())
            {
                // 全更新するので最も最近編集されたシート情報から最終更新日を取得.
                var spreadsheetsUpdateDate = spreadsheets.Select(x => x.LastUpdateDate).Max().ToUnixTime();

                var lastUpdateDate = asset.updateTime.HasValue ? asset.updateTime.Value : DateTime.MinValue.ToUnixTime();

                // ローカルデータが最新なら更新処理は行わない.
                if (lastUpdateDate < spreadsheetsUpdateDate)
                {
                    AssetDatabase.StartAssetEditing();

                    progressMessage = "Generating GameTextScript.";
                    EditorUtility.DisplayProgressBar(progressTitle, progressMessage, 0f);

                    GameTextScriptGenerator.Generate(spreadsheets, gameTextConfig, generateInfo.TextColumn);

                    EditorUtility.DisplayProgressBar(progressTitle, progressMessage, 0.2f);

                    progressMessage = "Generating GameTextAsset.";
                    EditorUtility.DisplayProgressBar(progressTitle, progressMessage, 0.5f);

                    GameTextAssetGenerator.Build(asset, spreadsheets, gameTextConfig, generateInfo.TextColumn);

                    EditorUtility.DisplayProgressBar(progressTitle, progressMessage, 0.8f);

                    EditorUtility.DisplayProgressBar(progressTitle, progressMessage, 1f);

                    UnityConsole.Info("GameTextを出力しました");

                    SaveLastUpdateDate(asset, spreadsheetsUpdateDate);

                    AssetDatabase.SaveAssets();

                    AssetDatabase.StopAssetEditing();
                }
                else
                {
                    UnityConsole.Info("GameTextは最新の状態です");
                }
            }
            else
            {
                Debug.LogError("Spreadsheetにデータがありません.");
            }

            EditorUtility.ClearProgressBar();
        }