示例#1
0
    void SetMainInfo()
    {
        WordPicture.SetBool(words[CurrentWord].ID, false);
        CurrentWord++;
        if (CurrentWord < words.Count)
        {
            CurrentStage = Stage.PreGuess;
            if (PracticeKanjis != null)
            {
                for (int i = 0; i < PracticeKanjis.Count; i++)
                {
                    PracticeKanjis[i].Kill();
                }
                PracticeKanjis.Clear();
            }
            if (PracticeSlots != null)
            {
                for (int i = 0; i < PracticeSlots.Count; i++)
                {
                    Destroy(PracticeSlots[i].gameObject);
                }
                PracticeSlots.Clear();
            }
            PracticeKanjis    = new List <PracticeKanji>();
            PracticeSlots     = new List <Slot>();
            SlotsAtTheirPlace = 0;

            float R = Random.Range(0.0f, 1.0f);
            Debug.Log(R);
            if (R < GameController.instance.ChanceOfFuriganaChallenge)
            {
                CurrentMode = Mode.Furigana;
            }
            else
            {
                CurrentMode = Mode.Picture;
            }

            Reading.text = words[CurrentWord].Reading;
            Meaning.text = words[CurrentWord].Meaning;
            float StartingPosition = SlotsPart.rect.width / (words[CurrentWord].Syllables.Count * 2);
            float StepWidth        = SlotsPart.rect.width / words[CurrentWord].Syllables.Count;
            if (CurrentMode == Mode.Picture)
            {
                WordPicture.gameObject.SetActive(true);
                WordPicture.SetBool(words[CurrentWord].ID, true);
                Reading.gameObject.SetActive(false);
            }
            else
            {
                WordPicture.gameObject.SetActive(false);
                Reading.gameObject.SetActive(true);
            }

            List <Kanji> MixKanjis = new List <Kanji>();
            Slot         PS;
            for (int i = 0; i < words[CurrentWord].KanjiIDs.Count; i++)
            {
                Kanji TK = GameController.instance.GetKanji(words[CurrentWord].KanjiIDs[i]);
                MixKanjis.Add(TK);
                PS = Instantiate(PrefabSlot, new Vector3(0, 0, 100), SlotsPart.rotation, SlotsPart);
                PS.rectT.anchoredPosition = new Vector3(StartingPosition + StepWidth * i, SlotY, 0.0f);
                PS.SetInfo(words[CurrentWord].Syllables[i], TK.ID);
                PS.Reading.gameObject.SetActive(false);
                PracticeSlots.Add(PS);
            }

            StartingPosition = KanjisPart.rect.width / (GameController.instance.AllKanjisForPractice * 2);
            StepWidth        = KanjisPart.rect.width / GameController.instance.AllKanjisForPractice;
            for (int i = 0; i < GameController.instance.AllKanjisForPractice - words[CurrentWord].KanjiIDs.Count; i++)
            {
                MixKanjis.Add(GameController.instance.GetRandomKanji());
            }
            MixKanjis = ShuffleKanjiList(MixKanjis);
            int   k          = 0; // this is kanji's position per line
            float StepHeight = 0.0f;
            for (int i = 0; i < MixKanjis.Count; i++)
            {
                PracticeKanji PK = Instantiate(PrefabKanji, new Vector3(0, 0, 100), KanjisPart.rotation, KanjisPart);
                if (StartingPosition + StepWidth * k >= KanjisPart.rect.width)
                {
                    k           = 0;
                    StepHeight += PK.rectTransform.rect.height + 5.0f;
                }
                PK.rectTransform.anchoredPosition = new Vector3(StartingPosition + StepWidth * k, KanjiY - StepHeight, 0.0f);
                PK.SetInfo(MixKanjis[i]);
                PracticeKanjis.Add(PK);
                k++;
            }
        }
        else
        {
            GameController.instance.MoveToScene("MainMenu");
        }
    }