public AnkimonState(EPuzzleWindow window, Ankimon ankimon) : base(window) { Ankimon = ankimon; _shomonStateHelper = new ShomonStateHelper(this); _ankimonBox = new AnkimonBox() { MarginLeft = 100f, MarginTop = 100f, MarginRight = 100f, }; Items.Add(_ankimonBox); foreach (var container in ankimon.AnkimonItems.Select(ankimonItem => { var ankimonRowContainer = new AnkimonRowContainer() { MarginLeft = 10f, MarginTop = 0f, AnkimonItem = ankimonItem, }; ankimonRowContainer.Label.Text = ankimonItem.Name; var collection = ankimonRowContainer.WordCardContainer.Items; foreach (var word in ankimonItem.MondaiWords) { collection.Add(new WordCard(word)); } ((DrawingObjectContainer.DrawingObjectCollection)collection).CollectionChanged += Handler0; return ankimonRowContainer; })) { _ankimonBox.Items.Add(container); } int i = 0; do { Shuffle(); if (i++ > 100) { throw new ApplicationException("指定された回数を超えても問題がシャッフルできません: " + Ankimon.Id); } } while (正解判定()); Action0 += (sender, e) => { _subState.Action0((WindowState)sender); }; Action1 += (sender, e) => { _subState.Action1((WindowState)sender); }; Action3 += (sender, e) => { Window.State = new PauseState(Window, this); }; CurrentItem = GetAllItems().First(x => x is WordCard); }
public static EmpElement Create(Ankimon ankimon) { var ankimonElement = new EmpElement("ankimon"); ankimonElement.Items.Add(new EmpElement("id", ankimon.Id)); ankimonElement.Items.AddRange(ankimon.AnkimonItems.Select(ankimonItem => { var ankimonItemElement = new EmpElement("item"); ankimonItemElement.Items.Add(new EmpElement("name", ankimonItem.Name)); ankimonItemElement.Items.Add(new EmpElement("split", MondaiWord.相互変換可能なテキスト形式を取得する(ankimonItem.MondaiWords))); // ankimonItemElement.Items.AddRange(ankimonItem.MondaiWords.Select(mondaiWord => new EmpElement("word", mondaiWord.Text))); return ankimonItemElement; })); return ankimonElement; }
protected abstract TimeSpan GetTimeLimit(Ankimon ankimon);
protected override TimeSpan GetTimeLimit(Ankimon ankimon) { int a = ankimon.AnkimonItems.Select(ankimonItem => ankimonItem.MondaiWords.Count()).Sum(); return TimeSpan.FromSeconds((a - 1) * 2); }