public void AnyPropertyOfCardsChangedTest() { var container = new DrawingObjectContainer() { Position = DrawingObjectPosition.Relative, Left = 1, Top = 10, Width = 300, Height = 3000, }; var button0 = new EigoTestButtonItem() { Position = DrawingObjectPosition.Absolute, Left = 1, Top = 10, Width = 200, Height = 100, }; var button1 = new EigoTestButtonItem() { Position = DrawingObjectPosition.Static, Left = 1, Top = 10, Width = 200, Height = 100, }; container.Items.Add(button0); container.Items.Add(button1); container.AnyPropertyOfAnyChildChanged += (sender, e) => { Assert.AreSame(e.Child, button0); Assert.AreEqual("IsClickable", e.PropertyName); Assert.Pass(); }; button0.IsClickable = !button0.IsClickable; Assert.Fail(); }
public AnkimonRowContainer() { Position = DrawingObjectPosition.Relative; Height = WordCard.WordCardHeight; var label = new EigoTestLabelItem() { Width = 100, Height = WordCard.WordCardHeight, }; Items.Add(label); var wordCardContainer = new DrawingObjectContainer() { Position = DrawingObjectPosition.Absolute, Left = label.OuterWidth, }; var wordCardCollection = (DrawingObjectCollection)wordCardContainer.Items; wordCardCollection.CollectionChanged += (sender, e) => { PropertyChangedEventHandler propertyChanged = (xx, x) => { if ("Width" != x.PropertyName) return; WordCardの整列((IList<EigoTestDrawingObject>)sender); }; if (null != e.NewItems) { foreach (var newItem in e.NewItems.Cast<WordCard>()) { newItem.Position = DrawingObjectPosition.Absolute; newItem.MarginLeft = WordCardMarginLeft; newItem.MarginTop = 0; newItem.MarginRight = 0; newItem.MarginBottom = 0; newItem.PropertyChanged += propertyChanged; } } if (null != e.OldItems) { foreach (var oldItem in e.OldItems.Cast<WordCard>()) { oldItem.PropertyChanged -= propertyChanged; } } WordCardの整列((IList<EigoTestDrawingObject>)sender); }; Items.Add(wordCardContainer); ((DrawingObjectCollection)Items).CollectionChanged += (sender, e) => { throw new InvalidOperationException("AnkimonRowContainerの構成要素は変更できません。"); }; }
public InformationState(EPuzzleWindow window, WindowState parentState, string text) : base(window) { _parentState = parentState; var container = new DrawingObjectContainer() { Position = DrawingObjectPosition.Absolute, Width = DrawingObjectRoot.Width / 2f, Height = DrawingObjectRoot.Height / 2f, // BackColor = }; Items.Add(container); _textLabel = new EigoTestLabelItem() { Text = text, // Width = container.Width, Height = container.Height * 0.8f, BackColor = EPuzzleColors.ColorAlpha01, }; container.Items.Add(_textLabel); var okButton = new EigoTestButtonItem() { Text = "OK", Name = "ok", // Width = 100, Height = 60, }; container.Items.Add(okButton); container.水平方向に中央揃え(); container.垂直方向に中央揃え(); Action0 += (sender, e) => { if (null == CurrentItem) return; if ("ok" == CurrentItem.Name) { Window.State = parentState; } }; }
public void AttachedDettachedTest() { var container = new DrawingObjectContainer() { Left = 1, Top = 10, Width = 300, Height = 3000, }; var button0 = new EigoTestButtonItem() { Position = DrawingObjectPosition.Absolute, Left = 1, Top = 10, Width = 200, Height = 100, }; var flag0 = false; var flag1 = false; button0.Attached += (sender, e) => { flag0 = true; }; button0.Detached += (sender, e) => { flag1 = true; }; flag0 = false; container.Items.Add(button0); Assert.True(flag0); flag1 = false; container.Items.Remove(button0); Assert.True(flag1); flag1 = false; container.Items.Add(button0); container.Items.Clear(); Assert.True(flag1); }
public void GetAllItemsTest() { var testState = new Fish.eigotest.TestState(null); var drawingObjectContainer1 = new DrawingObjectContainer(); var drawingObjectContainer2 = new DrawingObjectContainer(); var eigoTestLabelItem = new EigoTestLabelItem(); drawingObjectContainer2.Items.Add(eigoTestLabelItem); drawingObjectContainer1.Items.Add(drawingObjectContainer2); testState.Items.Add(drawingObjectContainer1); Assert.AreEqual(3, testState.GetAllItems().Count()); }
public void 資格のなくなったCurrentItemを変更する() { var window = new EPuzzleWindow(); var testState = new Fish.eigotest.TestState(window); Assert.Null(testState.CurrentItem); var b0 = new EigoTestButtonItem() { Position = DrawingObjectPosition.Absolute, Left = 100, Top = 100, Width = 10, Height = 10, }; Assert.Null(b0.GetState()); testState.Items.Add(b0); window.State = testState; Assert.AreSame(b0, testState.CurrentItem); Assert.Null(testState.DrawingObjectRoot.Parent); Assert.AreSame(testState, testState.DrawingObjectRoot.GetState()); Assert.AreSame(testState, b0.GetState()); testState.Items.RemoveAt(0); Assert.AreEqual(0, testState.Items.Count()); Assert.Null(testState.CurrentItem); var b1 = new EigoTestButtonItem() { Position = DrawingObjectPosition.Absolute, Left = 200, Top = 100, Width = 10, Height = 10, }; testState.Items.Add(b0); testState.Items.Add(b1); Assert.AreSame(b0, testState.CurrentItem); b0.IsClickable = false; Assert.AreSame(b1, testState.CurrentItem); testState.Items.Remove(b1); Assert.Null(testState.CurrentItem); // 同じコレクション内のアイテムを優先する b0.IsClickable = true; var b2 = new EigoTestButtonItem() { Position = DrawingObjectPosition.Absolute, Left = 300, Top = 100, Width = 10, Height = 10, }; var container = new DrawingObjectContainer() { Position = DrawingObjectPosition.Absolute, Left = 200, Top = 100, Width = 500, Height = 500, }; container.Items.Add(b1); container.Items.Add(b2); testState.Items.Add(container); Assert.AreSame(b0, testState.CurrentItem); testState.CurrentItem = b1; b1.IsClickable = false; Assert.AreSame(b2, testState.CurrentItem); // 同じコレクション内のアイテムで座標が近いものを優先する b1.IsClickable = true; b2.IsClickable = true; var b3 = new EigoTestButtonItem() { Position = DrawingObjectPosition.Absolute, Left = 301, Top = 100, Width = 10, Height = 10, }; container.Items.Add(b3); testState.CurrentItem = b2; b2.IsClickable = false; Assert.AreSame(b3, testState.CurrentItem); // 同じコレクション内になければすべての先頭から選択する b1.IsClickable = false; b2.IsClickable = false; b3.IsClickable = false; Assert.AreSame(b0, testState.CurrentItem); }
public void DrawingObjectの位置交換() { var window = new EPuzzleWindow(); var state = new WindowState(window); window.State = state; var container0 = new DrawingObjectContainer() { Position = DrawingObjectPosition.Relative, MarginLeft = 1f, MarginTop = 10f, Height = 100, }; state.Items.Add(container0); var container1 = new DrawingObjectContainer() { Position = DrawingObjectPosition.Relative, MarginLeft = 1f, MarginTop = 10f, Height = 100, }; state.Items.Add(container1); var a = new EigoTestLabelItem() { Position = DrawingObjectPosition.Absolute, Width = 10, Height = 100, Name = "a", }; container0.Items.Add(a); var b = new EigoTestLabelItem() { Position = DrawingObjectPosition.Absolute, Left = 0, Top = 0, Width = 20, Height = 100, Name = "b", }; container1.Items.Add(b); var c = new EigoTestLabelItem() { Position = DrawingObjectPosition.Absolute, Left = 21, Top = 0, Width = 10, Height = 100, Name = "c", }; container1.Items.Add(c); // container0 Assert.AreEqual(1, container0.BorderLeft); Assert.AreEqual(10, container0.BorderTop); Assert.AreEqual(100, container0.Height); CollectionAssert.AreEqual(new [] { a, }, container0.Items); // container1 Assert.AreEqual(1, container1.BorderLeft); Assert.AreEqual(120, container1.BorderTop); Assert.AreEqual(100, container1.Height); CollectionAssert.AreEqual(new [] { b, c, }, container1.Items); // a Assert.AreEqual("a", a.Name); Assert.AreEqual(1, a.OuterLeft); Assert.AreEqual(10, a.OuterTop); Assert.AreEqual(11, a.OuterRight); Assert.AreEqual(110, a.OuterBottom); // b Assert.AreEqual("b", b.Name); Assert.AreEqual(1, b.OuterLeft); Assert.AreEqual(120, b.OuterTop); Assert.AreEqual(21, b.OuterRight); Assert.AreEqual(220, b.OuterBottom); // c Assert.AreEqual("c", c.Name); Assert.AreEqual(22, c.OuterLeft); Assert.AreEqual(120, c.OuterTop); Assert.AreEqual(32, c.OuterRight); Assert.AreEqual(220, c.OuterBottom); WindowState.NowObject = new TestNowObject(); WindowState.NowObject.Now = DateTime.MinValue; var idouJikan = TimeSpan.FromSeconds(1d); state.場所の入れ換え(a, c, idouJikan); var aa = state.Items.Single(x => "a" == x.Name); var cc = state.Items.Single(x => "c" == x.Name); Assert.False(a.IsClickable); Assert.False(a.IsVisible); Assert.False(c.IsClickable); Assert.False(c.IsVisible); Assert.False(aa.IsClickable); Assert.True(aa.IsVisible); Assert.AreEqual(DrawingObjectPosition.Absolute, aa.Position); Assert.AreSame(state.DrawingObjectRoot, aa.Parent); Assert.AreEqual(a.OuterLeft, aa.OuterLeft); Assert.AreEqual(a.OuterTop, aa.OuterTop); Assert.AreEqual(a.OuterWidth, aa.OuterWidth); Assert.False(cc.IsClickable); Assert.True(cc.IsVisible); Assert.AreEqual(DrawingObjectPosition.Absolute, cc.Position); Assert.AreSame(state.DrawingObjectRoot, cc.Parent); Assert.AreEqual(c.OuterLeft, cc.OuterLeft); Assert.AreEqual(c.OuterTop, cc.OuterTop); Assert.AreEqual(c.OuterWidth, cc.OuterWidth); // 移動中 WindowState.NowObject.Now += TimeSpan.FromTicks((int)Math.Round(idouJikan.Ticks * 0.5f)); window.Tick(); Assert.AreEqual(c.OuterLeft + (a.OuterLeft - c.OuterLeft) * 0.5f, cc.OuterLeft, 0.1f); Assert.AreEqual(c.OuterTop + (a.OuterTop - c.OuterTop) * 0.5f, cc.OuterTop, 0.1f); Assert.AreEqual(c.Width + (a.Width - c.Width) * 0.5f, c.Width, 0.1f); Assert.AreEqual(a.OuterLeft + (c.OuterLeft - a.OuterLeft) * 0.5f, aa.OuterLeft, 0.1f); Assert.AreEqual(a.OuterTop + (c.OuterTop - a.OuterTop) * 0.5f, aa.OuterTop, 0.1f); Assert.AreEqual(a.Width + (c.Width - a.Width) * 0.5f, a.Width, 0.1f); // 場所の入れ換え完了 WindowState.NowObject.Now += idouJikan; window.Tick(); CollectionAssert.DoesNotContain(state.GetAllItems(), a); CollectionAssert.DoesNotContain(state.GetAllItems(), c); Assert.Null(a.Parent); Assert.Null(c.Parent); CollectionAssert.AreEqual(new [] { cc, }, container0.Items); CollectionAssert.AreEqual(new [] { b, aa }, container1.Items); Assert.True(aa.IsClickable); Assert.True(aa.IsVisible); Assert.True(cc.IsClickable); Assert.True(cc.IsVisible); // cc Assert.AreEqual("c", cc.Name); Assert.AreEqual(1, cc.OuterLeft); Assert.AreEqual(10, cc.OuterTop); Assert.AreEqual(11, cc.OuterRight); Assert.AreEqual(110, cc.OuterBottom); // aa Assert.AreEqual("a", aa.Name); Assert.AreEqual(22, aa.OuterLeft); Assert.AreEqual(120, aa.OuterTop); Assert.AreEqual(32, aa.OuterRight); Assert.AreEqual(220, aa.OuterBottom); }
public WindowState(EPuzzleWindow window) { Window = window; NextStates = new List<WindowState>(); //new EigoTestStateCollection(this); PreviousStates = new List<WindowState>(); DrawingPreparers = new List<DrawingPreparer>(); _drawingObjectRoot = new DrawingObjectContainer() { Width = 1024, Height = 768, Position = DrawingObjectPosition.Relative, Color = Color.FromArgb(0xff, 0x00, 0x00, 0x80), }; _drawingObjectRoot.SetState(this); MoveUp += (sender, e) => { if (null == CurrentItem) { CorrectCurrentItem(); return; } MoveCursor(x => CurrentItem.BorderTop > x.BorderTop, x => CurrentItem.BorderLeft == x.BorderLeft); }; MoveDown += (sender, e) => { if (null == CurrentItem) { CorrectCurrentItem(); return; } MoveCursor(x => CurrentItem.BorderTop < x.BorderTop, x => CurrentItem.BorderLeft == x.BorderLeft); }; MoveLeft += (sender, e) => { if (null == CurrentItem) { CorrectCurrentItem(); return; } MoveCursor(x => CurrentItem.BorderLeft > x.BorderLeft, x => CurrentItem.BorderTop == x.BorderTop); }; MoveRight += (sender, e) => { if (null == CurrentItem) { CorrectCurrentItem(); return; } MoveCursor(x => CurrentItem.BorderLeft < x.BorderLeft, x => CurrentItem.BorderTop == x.BorderTop); }; Action0 += (sender, e) => { if (null == CurrentItem) return; CurrentItem.OnClick(new MouseEventInfo(MouseButtons.Left)); }; }
public void LeftTopTest() { var container1 = new DrawingObjectContainer(); container1.Width = 1; container1.Height = 2; Assert.AreEqual(new SizeF(1, 2), container1.Size); container1.Size = new SizeF(3, 4); Assert.AreEqual(3, container1.Width); Assert.AreEqual(4, container1.Height); }
public void PreviousItemがAbsoluteだった場合() { var container = new DrawingObjectContainer() { Position = DrawingObjectPosition.Relative, Left = 1, Top = 10, Width = 300, Height = 3000, }; var button0 = new EigoTestButtonItem() { Position = DrawingObjectPosition.Absolute, Left = 1, Top = 10, Width = 200, Height = 100, }; var button1 = new EigoTestButtonItem() { Position = DrawingObjectPosition.Static, Left = 1, Top = 10, Width = 200, Height = 100, }; container.Items.Add(button0); container.Items.Add(button1); CollectionAssert.AreEqual(new [] { button0, }, button1.GetPreviousItems()); Assert.AreEqual(2, button0.OuterLeft); Assert.AreEqual(20, button0.OuterTop); Assert.AreEqual(1, button1.OuterLeft); Assert.AreEqual(10, button1.OuterTop); }
public void Test4() { var container = new DrawingObjectContainer() { Left = 1, Top = 10, Width = 300, Height = 3000, }; Assert.AreEqual(DrawingObjectPosition.Static, container.Position); var button1 = new EigoTestButtonItem() { Position = DrawingObjectPosition.Absolute, Left = 1, Top = 10, Width = 200, Height = 100, }; var button2 = new EigoTestButtonItem() { Position = DrawingObjectPosition.Absolute, Left = 1, Top = 10, Width = 200, Height = 100, }; container.Items.Add(button1); container.Items.Add(button2); // container.Position == Relative // button1.Position == Absolute // button2.Position == Absolute container.Position = DrawingObjectPosition.Relative; Assert.AreEqual(DrawingObjectPosition.Relative, container.Position); Assert.AreSame(container, button1.GetContainingBlock()); Assert.AreEqual(2, button1.OuterLeft); Assert.AreEqual(20, button1.OuterTop); Assert.AreEqual(200, button1.OuterWidth); Assert.AreEqual(2, button2.OuterLeft); Assert.AreEqual(20, button2.OuterTop); Assert.AreEqual(200, button2.OuterWidth); // container.Position == Static // button1.Position == Absolute // button2.Position == Absolute container.Position = DrawingObjectPosition.Static; Assert.AreEqual(DrawingObjectPosition.Static, container.Position); Assert.Null(button1.GetContainingBlock()); Assert.AreEqual(1, button1.OuterLeft); Assert.AreEqual(10, button1.OuterTop); Assert.AreEqual(200, button1.OuterWidth); Assert.AreEqual(1, button2.OuterLeft); Assert.AreEqual(10, button2.OuterTop); Assert.AreEqual(200, button2.OuterWidth); // container.Position == Static // button1.Position == Static // button2.Position == Static { container.Position = DrawingObjectPosition.Static; button1.Position = DrawingObjectPosition.Static; button2.Position = DrawingObjectPosition.Static; Assert.AreEqual(DrawingObjectPosition.Static, container.Position); Assert.Null(button1.GetContainingBlock()); Assert.AreEqual(1, button1.OuterLeft); Assert.AreEqual(10, button1.OuterTop); Assert.AreEqual(200, button1.OuterWidth); Assert.AreEqual(1, button2.OuterLeft); Assert.AreEqual(110, button2.OuterTop); Assert.AreEqual(200, button2.OuterWidth); // Width button1.SetWidthNull(); Assert.AreEqual(300, button1.Width); button1.MarginLeft = 10; Assert.AreEqual(290, button1.Width); // 上下マージン相殺 button1.MarginBottom = 30f; button2.MarginTop = 20f; Assert.AreEqual(1, button2.OuterLeft); Assert.AreEqual(120, button2.OuterTop); // 上下マージン相殺 button1.MarginBottom = 20f; button2.MarginTop = 30f; Assert.AreEqual(1, button2.OuterLeft); Assert.AreEqual(110, button2.OuterTop); } }
public void 中央揃えテスト() { var container = new DrawingObjectContainer() { Width = 100f, Height = 1000f, }; var button = new EigoTestButtonItem() { Width = 10f, Height = 100f, }; container.Items.Add(button); Assert.AreSame(container, button.Parent); Assert.AreEqual(new PointF(0f, 0f), button.Location); button.水平方向に中央揃え(); Assert.AreEqual(new PointF(45f, 0f), button.Location); button.垂直方向に中央揃え(); Assert.AreEqual(new PointF(45f, 450f), button.Location); button.右揃え(); Assert.AreEqual(new PointF(90f, 450f), button.Location); button.下揃え(); Assert.AreEqual(new PointF(90f, 900f), button.Location); }
public void 包含ブロックの幅が足りないときは次の行へ() { var window = new EPuzzleWindow(); var windowState = new WindowState(window); window.State = windowState; var container = new DrawingObjectContainer() { Position = DrawingObjectPosition.Absolute, Left = 1f, Top = 10f, Width = 25f, Height = 1000f, }; var button0 = new EigoTestButtonItem() { Floating = DrawingObjectFloating.Left, Width = 10f, Height = 100f, }; var button1 = new EigoTestButtonItem() { Floating = DrawingObjectFloating.Left, Width = 10f, Height = 100f, }; var button2 = new EigoTestButtonItem() { Floating = DrawingObjectFloating.Left, Width = 10f, Height = 100f, }; var button3 = new EigoTestButtonItem() { Floating = DrawingObjectFloating.Left, Width = 10f, Height = 100f, }; window.State.Items.Add(container); container.Items.Add(button0); container.Items.Add(button1); container.Items.Add(button2); container.Items.Add(button3); Assert.AreEqual(1f, button0.OuterLeft); Assert.AreEqual(10f, button0.OuterTop); Assert.AreEqual(11f, button1.OuterLeft); Assert.AreEqual(10f, button1.OuterTop); Assert.AreEqual(1f, button2.OuterLeft); Assert.AreEqual(110f, button2.OuterTop); Assert.AreEqual(11f, button3.OuterLeft); Assert.AreEqual(110f, button3.OuterTop); }
public void ContainsIsClickedTest() { var container1 = new DrawingObjectContainer() { Location = new PointF(10, 100), MarginLeft = 100, PaddingLeft = 1, MarginTop = 1000, PaddingTop = 10, }; // 111, 1110 var container2 = new DrawingObjectContainer() { Location = new PointF(10, 100), MarginLeft = 100, PaddingLeft = 1, MarginTop = 1000, PaddingTop = 10, }; // 222, 2220 var label = new EigoTestLabelItem() { MarginLeft = 100, MarginTop = 1000, PaddingLeft = 1000, PaddingTop = 1000, Location = new PointF(10, 100), Size = new SizeF(50, 500), }; // 332, 3320 container1.Items.Add(container2); container2.Items.Add(label); Assert.False(label.Contains(15f, 150f)); Assert.True(label.Contains(332f, 3320f)); Assert.True(label.Contains(1332f, 4320f)); Assert.False(label.IsClicked(15f, 150f)); Assert.True(label.IsClicked(332f, 3320f)); Assert.True(label.IsClicked(1332f, 4320f)); label.IsClickable = false; label.IsVisible = false; Assert.False(label.IsClicked(332f, 3320f)); Assert.False(label.IsClicked(1332f, 4320f)); label.IsClickable = false; label.IsVisible = true; Assert.False(label.IsClicked(332f, 3320f)); Assert.False(label.IsClicked(1332f, 4320f)); label.IsClickable = true; label.IsVisible = false; Assert.False(label.IsClicked(332f, 3320f)); Assert.False(label.IsClicked(1332f, 4320f)); label.IsClickable = true; label.IsVisible = true; Assert.True(label.IsClicked(332f, 3320f)); Assert.True(label.IsClicked(1332f, 4320f)); }
public void フローティング機能でマージン設定() { var window = new EPuzzleWindow(); var windowState = new WindowState(window); window.State = windowState; var container = new DrawingObjectContainer() { Position = DrawingObjectPosition.Absolute, Left = 1f, Top = 10f, Width = 1000f, Height = 1000f, }; var button0 = new EigoTestButtonItem() { Floating = DrawingObjectFloating.Left, Width = 10f, Height = 100f, }; var button1 = new EigoTestButtonItem() { MarginLeft = 1f, MarginTop = 10f, Width = 10f, Height = 100f, }; window.State.Items.Add(container); container.Items.Add(button0); container.Items.Add(button1); Assert.AreEqual(1f, button0.OuterLeft); Assert.AreEqual(10f, button0.OuterTop); Assert.AreEqual(12f, button1.BorderLeft); Assert.AreEqual(20f, button1.BorderTop); }
public void WidthHeightの自動設定() { // 初期状態 var test = new DrawingObjectContainer(); Assert.AreEqual(0, test.Width); Assert.AreEqual(0, test.Height); // 親がある状態 { var root = new DrawingObjectContainer() { Width = 500, Height = 5000, }; var container = new DrawingObjectContainer() { MarginLeft = 1, MarginRight = 2, PaddingLeft = 10, PaddingRight = 20, MarginTop = 100, MarginBottom = 200, PaddingTop = 1000, PaddingBottom = 2000, }; root.Items.Add(container); Assert.AreEqual(500 - (1 + 2 + 10 + 20), container.Width); Assert.AreEqual(0f, container.Height); container.Width = 10; container.Height = 100; Assert.AreEqual(10, container.Width); Assert.AreEqual(100, container.Height); } }
public void ParentTest() { var container1 = new DrawingObjectContainer() { Position = DrawingObjectPosition.Relative, Location = new PointF(10, 100), MarginLeft = 100, PaddingLeft = 1, MarginTop = 1000, PaddingTop = 10, }; var container2 = new DrawingObjectContainer() { Position = DrawingObjectPosition.Absolute, Location = new PointF(10, 100), MarginLeft = 100, PaddingLeft = 1, MarginTop = 1000, PaddingTop = 10, }; var label = new EigoTestLabelItem() { Position = DrawingObjectPosition.Absolute, MarginLeft = 100, MarginTop = 1000, Location = new PointF(10, 100), }; container1.Items.Add(container2); container2.Items.Add(label); Assert.Null(container1.Parent); Assert.AreSame(container1, container2.Parent); Assert.AreSame(container2, label.Parent); Assert.AreEqual(110f, container1.BorderLeft); Assert.AreEqual(221f, container2.BorderLeft); Assert.AreEqual(332f, label.BorderLeft); Assert.AreEqual(1100f, container1.BorderTop); Assert.AreEqual(2210f, container2.BorderTop); Assert.AreEqual(3320f, label.BorderTop); }
public void OuterBorderInnerTest() { var container1 = new DrawingObjectContainer() { Position = DrawingObjectPosition.Relative, Location = new PointF(10, 100), MarginLeft = 100, MarginRight = 100, PaddingLeft = 1, PaddingRight = 1, MarginTop = 1000, MarginBottom = 1000, PaddingTop = 10, PaddingBottom = 10, Size = new SizeF(50, 500), }; var label = new EigoTestLabelItem() { Position = DrawingObjectPosition.Absolute, MarginLeft = 100, MarginTop = 1000, PaddingLeft = 100, PaddingTop = 1000, Location = new PointF(10, 100), Size = new SizeF(50, 500), }; container1.Items.Add(label); Assert.AreEqual(10, container1.Left); Assert.AreEqual(100, container1.Top); Assert.AreEqual(10, container1.OuterLeft); Assert.AreEqual(10 + 252, container1.OuterRight); Assert.AreEqual(100, container1.OuterTop); Assert.AreEqual(100 + 2520, container1.OuterBottom); Assert.AreEqual(110, container1.BorderLeft); Assert.AreEqual(110 + 52, container1.BorderRight); Assert.AreEqual(1100, container1.BorderTop); Assert.AreEqual(1100 + 520, container1.BorderBottom); Assert.AreEqual(111, container1.InnerLeft); Assert.AreEqual(111 + 50, container1.InnerRight); Assert.AreEqual(1110, container1.InnerTop); Assert.AreEqual(1110 + 500, container1.InnerBottom); Assert.AreEqual(50, container1.Width); Assert.AreEqual(500, container1.Height); Assert.AreEqual(52, container1.BorderWidth); Assert.AreEqual(520, container1.BorderHeight); Assert.AreEqual(252, container1.OuterWidth); Assert.AreEqual(2520, container1.OuterHeight); // ラベル Assert.AreEqual(10, label.Left); Assert.AreEqual(100, label.Top); // Location = new PointF(10, 100), Assert.AreEqual(111 + 10, label.OuterLeft); Assert.AreEqual(1110 + 100, label.OuterTop); // MarginLeft = 100, // MarginTop = 1000, Assert.AreEqual(111 + 10 + 100, label.BorderLeft); Assert.AreEqual(1110 + 100 + 1000, label.BorderTop); // PaddingLeft = 100, // PaddingTop = 1000, Assert.AreEqual(111 + 10 + 100 + 100, label.InnerLeft); Assert.AreEqual(1110 + 100 + 1000 + 1000, label.InnerTop); }
public override void UpdateItemsToBeDrawn() { var currentItemInfo = SaveCurrentItem(); Items.Clear(); CurrentItem = null; var userInfo = Window.EPuzzleData.CurrentUserInfo; var w = DrawingObjectRoot.Width; var h = DrawingObjectRoot.Height; var h0 = 60f; var h1 = 120f; var h2 = 60f; var h4 = 60f; var h3 = h - ( h0 + h1 + h2 + h4 ); var w0 = w / 2f; var w1 = w0; var w3 = 20f; var x0 = 0f; var x1 = w0; var y0 = 0f; var y1 = y0 + h0; var y2 = y1 + h1; var y3 = y2 + h2; var y4 = y3 + h3; var font0 = EPuzzleFonts.GetMsGothic((int)Math.Round(h0 / 3d)); var font1 = EPuzzleFonts.GetEnSansSerif(Shomon.Mondaibun, (int)Math.Round(h1 / 2d / 3d)); var font2 = EPuzzleFonts.GetFont("Arial", (int)Math.Round(h2 / 3d)); var font3 = EPuzzleFonts.GetMsGothic((int)Math.Round(h4 / 4d)); var chumonTitle = new EigoTestLabelItem(Shomon.Parent.LongName) { Position = DrawingObjectPosition.Absolute, Left = x0, Top = y0, // Width = 400, Height = h0, Font = font0, MarginLeft = w3, Name = "title", StringFormat = new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center, }, // BorderLine = true, }; Items.Add(chumonTitle); var mondaiBun = new EigoTestLabelItem() { Left = x0, Top = y1, // Width = 600, Height = h1, Font = font1, // MarginLeft = w3, StringFormat = new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Near, }, Position = DrawingObjectPosition.Absolute, // BorderLine = true, Name = "mondaibun", Color = Color.Black, Text = Shomon.Mondaibun, // Font = EPuzzleFonts.問題文, /* MarginLeft = 20, MarginRight = 20, MarginTop = 20, MarginBottom = 0, PaddingTop = 10, PaddingBottom = 10,*/ PaddingLeft = 20, PaddingRight = 20, BorderLine = true, }; Items.Add(mondaiBun); var answerBox = new AnswerBox() { Position = DrawingObjectPosition.Absolute, Name = "answerBox", Left = x0, Top = y2, // Width = h1, Height = h2 + h3, Font = font2, // MarginLeft = w3, StringFormat = new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Near, }, /* PaddingTop = 10, PaddingBottom = 10,*/ PaddingLeft = 20, PaddingRight = 20, Color = Color.Blue, BorderLine = true, }; answerBox.PropertyChanged += (sender, e) => { if ("Text" == e.PropertyName) { Invalidate(); var isCorrect = Shomon.正解判定(answerBox.Text); if (!isCorrect) return; Window.ChumonResult.ShomonResults.Add(new ShomonResult(Shomon, false)); // 正解したら次の状態に遷移 if (null == Shomon.NextItem) { var mondaiResult = _shomonStateHelper.GetMondaiResult(); Window.EPuzzleData.CurrentUserInfo.MondaiResults.Add(mondaiResult); var medal = Window.ChumonResult.GetMedal(); if (null != medal) { Window.EPuzzleData.CurrentUserInfo.Medals.Add(medal); } Window.State = WindowState.FoFi(this, new ChumonResultState(Window, Shomon, Window.ChumonResult, mondaiResult)); } else { Window.State = WindowState.FoFi(this, Window.CreateMondaiState(Shomon.NextItem)); } } }; Items.Add(answerBox); var buttonContainer = new DrawingObjectContainer() { Position = DrawingObjectPosition.Absolute, Left = x0, Top = y4, Height = h4, Color = EPuzzleColors.Color03, BorderLine = true, }; Items.Add(buttonContainer); { var button = ShomonStateHelper.CreateButton("全消去", "clearAnswer", font3); button.Height = h4; buttonContainer.Items.Add(button); } { var button = ShomonStateHelper.CreateButton("正解を見る", "showCorrectAnswer", font3); button.Height = h4; buttonContainer.Items.Add(button); } { var button = ShomonStateHelper.CreateButton(AddShortcutKeys("PAUSE", Command.Action3), "pause", font3); button.Height = h4; buttonContainer.Items.Add(button); } if (Shomon.Sounds.Where(x => SoundIsPlayedWhen.UserRequest == x.IsPlayedWhen).Any()) { var button = ShomonStateHelper.CreateButton(AddShortcutKeys("音声の再生", Command.Action4), "playSound", font3); button.Height = h4; buttonContainer.Items.Add(button); } if (((Chumon)Shomon.Parent).HelpIds.Any()) { var button = ShomonStateHelper.CreateButton("情報を見る", "info", font3); button.Height = h4; buttonContainer.Items.Add(button); } // ここから右寄せ { var xx = w; { var button = ShomonStateHelper.CreateButton("戻る", "back", font3); button.Height = h4; button.Position = DrawingObjectPosition.Absolute; xx = xx - button.OuterWidth; button.Left = xx; buttonContainer.Items.Add(button); } { var button = ShomonStateHelper.CreateButton("はじめから", "hajimekara", font3); button.Height = h4; button.Position = DrawingObjectPosition.Absolute; xx = xx - button.OuterWidth; button.Left = xx; buttonContainer.Items.Add(button); } } RestoreCurrentItem(currentItemInfo); }
public void 色の継承() { var container0 = new DrawingObjectContainer(); var container1 = new DrawingObjectContainer(); var label = new EigoTestLabelItem(); container0.Items.Add(container1); container1.Items.Add(label); Assert.AreEqual(Color.Empty, label.Color); container0.Color = Color.Red; Assert.AreEqual(Color.Red, label.Color); label.Color = Color.Blue; Assert.AreEqual(Color.Blue, label.Color); }
public void PreviousItemTest() { var container = new DrawingObjectContainer() { Left = 1, Top = 10, Width = 300, Height = 3000, }; Assert.AreEqual(DrawingObjectPosition.Static, container.Position); var button0 = new EigoTestButtonItem() { Position = DrawingObjectPosition.Absolute, Left = 1, Top = 10, Width = 200, Height = 100, }; var button1 = new EigoTestButtonItem() { Position = DrawingObjectPosition.Absolute, Left = 1, Top = 10, Width = 200, Height = 100, }; var button2 = new EigoTestButtonItem() { Position = DrawingObjectPosition.Absolute, Left = 1, Top = 10, Width = 200, Height = 100, }; Assert.Null(button0.PreviousItem); Assert.Null(button1.PreviousItem); Assert.Null(button2.PreviousItem); container.Items.Add(button0); container.Items.Add(button1); container.Items.Add(button2); Assert.Null(button0.PreviousItem); Assert.AreSame(button0, button1.PreviousItem); Assert.AreSame(button1, button2.PreviousItem); Assert.Throws<ArgumentException>(() => { container.Items[1] = button2; }); container.Items.RemoveAt(1); Assert.Null(button0.PreviousItem); Assert.Null(button1.PreviousItem); Assert.AreSame(button0, button2.PreviousItem); container.Items.Insert(1, button1); Assert.Null(button0.PreviousItem); Assert.AreSame(button0, button1.PreviousItem); Assert.AreSame(button1, button2.PreviousItem); container.Items.RemoveAt(2); Assert.Null(button0.PreviousItem); Assert.AreSame(button0, button1.PreviousItem); Assert.Null(button2.PreviousItem); container.Items[0] = button2; Assert.Null(button0.PreviousItem); Assert.AreSame(button2, button1.PreviousItem); Assert.Null(button2.PreviousItem); }
public ChumonResultState(EPuzzleWindow window, EigoTestMondai mondai, ChumonResult chumonResult, MondaiResult mondaiResult) : base(window) { _mondai = mondai; _chumonResult = chumonResult; DrawingObjectRoot.BackColor = EPuzzleColors.Color109; // var imageFile = ResultImageManager.Instance.GetFile(_mondai.Parent.GetGradeString(mondaiResult.所要時間)); // var imageFile = ResultImageManager.Instance.GetImage(_mondai.Parent.GetGradeString(mondaiResult.所要時間)); var image = window.EPuzzleData.CurrentUserInfo.ResultImageManager.GetImage(_mondai.Parent.GetGradeString(mondaiResult.所要時間, window.EPuzzleData.CurrentUserInfo)); if (null != image) { // var imageItem = new ImageItem(imageFile, true); var imageItem = new ImageItem(image.Shrink((int)DrawingObjectRoot.Width, (int)DrawingObjectRoot.Height)); imageItem.Left = 0f; imageItem.Top = 0f; imageItem.Position = DrawingObjectPosition.Absolute; Items.Add(imageItem); #if DEBUG { // 使用したファイルの記録 var imagePath = (string)image.Tag; Clipboard.SetText(imagePath); var path = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "usedImages.txt"); File.AppendAllText(path, imagePath + Environment.NewLine); } #endif // DEBUG // ResultImageManager.Instance.UpdateAccessTime(fileName); // ResultImageManager.Instance.SaveFileIfItPassed(TimeSpan.FromMinutes(10d)); } var w1 = 180f; var h1 = EPuzzleFonts.ChumonResultState_Default.Height; var backColor = EPuzzleColors.Color107; var kirokuBox = new KirokuBox2() { BorderLine = false, Position = DrawingObjectPosition.Absolute, Width = 200, UserInfo = Window.EPuzzleData.CurrentUserInfo, Chumon = (Chumon)_mondai.Parent, Color = EPuzzleColors.ChumonResultState_KirokuBox2_Color, BackColor = EPuzzleColors.ChumonResultState_KirokuBox2_BackColor, BackColorA = EPuzzleColors.ChumonResultState_KirokuBox2_BackColorA, BackColorB = EPuzzleColors.ChumonResultState_KirokuBox2_BackColorB, LineColor = EPuzzleColors.ChumonResultState_KirokuBox2_LineColor, NodeColor = EPuzzleColors.ChumonResultState_KirokuBox2_NodeColor, }; Items.Add(kirokuBox); var box = new DrawingObjectContainer() { Position = DrawingObjectPosition.Absolute, Color = EPuzzleColors.Color108, BackColor = backColor, Width = w1, PaddingLeft = 10f, PaddingRight = 10f, PaddingTop = 10f, PaddingBottom = 10f, BorderLine = false, }; Items.Add(box); { var item = new EigoTestLabelItem() { Color = EPuzzleColors.Color108, Text = mondai.Parent.LongName, Font = EPuzzleFonts.ChumonResultState_Default, Width = w1, Height = h1, StringFormat = new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center, }, }; box.Items.Add(item); } { var item = new EigoTestLabelItem() { Color = EPuzzleColors.Color108, Text = string.Format("グレード: {0}({1:0.00})", mondai.Parent.GetGradeString(mondaiResult.所要時間, window.EPuzzleData.CurrentUserInfo), mondai.Parent.GetGrade(mondaiResult.所要時間, window.EPuzzleData.CurrentUserInfo)), Font = EPuzzleFonts.ChumonResultState_Default, Width = w1, Height = h1, StringFormat = new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center, }, }; box.Items.Add(item); } { var duration = mondai.Parent.復習までの猶予期間を取得(window.EPuzzleData.CurrentUserInfo); if (null != duration) { var item = new EigoTestLabelItem() { Color = EPuzzleColors.Color108, Text = string.Format("復習猶予期間: {0:0.0}日", ((TimeSpan)duration).TotalDays), Font = EPuzzleFonts.ChumonResultState_Default, Width = w1, Height = h1, StringFormat = new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center, }, }; box.Items.Add(item); } } { var item = new EigoTestLabelItem() { Color = EPuzzleColors.Color108, Text = string.Format("基準時間: {0}", EigoTestMondai.符号無時間文字列(_mondai.Parent.GetTimeLimit(window.EPuzzleData.CurrentUserInfo))), Font = EPuzzleFonts.ChumonResultState_Default, Width = w1, Height = h1, StringFormat = new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center, }, }; box.Items.Add(item); } { var item = new EigoTestLabelItem() { Color = EPuzzleColors.Color108, Text = string.Format("所要時間: {0}", EigoTestMondai.符号無時間文字列(mondaiResult.所要時間)), Font = EPuzzleFonts.ChumonResultState_Default, Width = w1, Height = h1, StringFormat = new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center, }, }; box.Items.Add(item); } { var item = new EigoTestLabelItem() { Color = EPuzzleColors.Color108, Text = string.Format("基準との差: {0}", EigoTestMondai.符号付時間文字列(mondaiResult.所要時間 - _mondai.Parent.GetTimeLimit(window.EPuzzleData.CurrentUserInfo))), Font = EPuzzleFonts.ChumonResultState_Default, Width = w1, Height = h1, StringFormat = new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center, }, }; box.Items.Add(item); } /* { var item = new EigoTestLabelItem() { Color = EPuzzleColors.Color108, Text = string.Format("Perfect: {0}", string.Join("", chumonResult.ShomonResults.Select(x => x.IsPerfect ? "■" : "□").ToArray())), Font = EPuzzleFonts.ChumonResultState_Default, Width = w1, Height = h1, StringFormat = new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center, }, }; box.Items.Add(item); }*/ { var height = 25f; var stars = chumonResult.ShomonResults.Select(x => { var star = new Pentagram(2) { Color = EPuzzleColors.PerfectStarOnChumonResultState, Width = height, Height = height, Tag = x.IsPerfect, PaddingLeft = 3f, PaddingBottom = 3f, }; return star; }).ToArray(); /* for (int i = 0; i < stars.Length; i++) { stars[i].Left = stars[0].OuterWidth * i; stars[i].Top = DrawingObjectRoot.Height - stars[0].OuterHeight; } */ for (int i = 0; i < stars.Length; i++) { stars[i].Left = stars[0].OuterWidth * i; stars[i].Top = 0f; } if (stars.Any()) { var starbox = new DrawingObjectContainer() { Position = DrawingObjectPosition.Absolute, Left = 0f, Top = DrawingObjectRoot.Height - stars.First().OuterHeight, Width = stars.Last().OuterRight - stars.First().OuterLeft, Height = stars.First().OuterHeight, // BackColor = EPuzzleColors.Color107, }; starbox.Items.AddRange(stars); Items.Add(starbox); } // Items.AddRange(stars); } /* { var bestMondaiResult = window.EPuzzleData.CurrentUserInfo.MondaiResults.GetBest(mondai.Parent.Id); if (null != bestMondaiResult) { var item = new EigoTestLabelItem() { Color = EPuzzleColors.Color108, Text = string.Format("最速記録: {0}", EigoTestMondai.符号無時間文字列(bestMondaiResult.所要時間)), Font = EPuzzleFonts.ChumonResultState_Default, Width = w1, Height = h1, StringFormat = new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center, }, }; box.Items.Add(item); } } { var bestMondaiResult = window.EPuzzleData.CurrentUserInfo.MondaiResults.GetBest(mondai.Parent.Id); if (null != bestMondaiResult) { var item = new EigoTestLabelItem() { Color = EPuzzleColors.Color108, Text = string.Format("最速との差: {0}", EigoTestMondai.符号付時間文字列(mondaiResult.所要時間 - bestMondaiResult.所要時間)), Font = EPuzzleFonts.ChumonResultState_Default, Width = w1, Height = h1, StringFormat = new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center, }, }; box.Items.Add(item); } }*/ /* var retryButton = new EigoTestButtonItem() { Position = DrawingObjectPosition.Absolute, Color = EPuzzleColors.Color108, Text = "再挑戦", Name = "retryButton", Font = EPuzzleFonts.ChumonResultState_Default, Width = 80, Height = h1, }; Items.Add(retryButton);*/ /* // 右がbox box.Left = DrawingObjectRoot.Width - ( box.OuterWidth + kirokuBox.OuterWidth ); box.Top = DrawingObjectRoot.Height - box.OuterHeight; kirokuBox.Height = box.OuterHeight; kirokuBox.Left = DrawingObjectRoot.Width - kirokuBox.OuterWidth; kirokuBox.Top = box.Top; */ box.Left = DrawingObjectRoot.Width - box.OuterWidth; box.Top = DrawingObjectRoot.Height - box.OuterHeight; kirokuBox.Height = box.OuterHeight; kirokuBox.Left = box.OuterLeft - kirokuBox.OuterWidth; kirokuBox.Top = box.Top; Action0 += (sender, e) => { MouseUpInternal(new MouseEventInfo(new PointF(0f, 0f), MouseButtons.Left)); }; }
public void RemoveTest() { var label = new EigoTestLabelItem(); var container = new DrawingObjectContainer(); container.Items.Add(label); Assert.AreEqual(1, container.Items.Count()); Assert.AreSame(container, label.Parent); container.Items.Remove(label); Assert.AreEqual(0, container.Items.Count()); Assert.Null(label.Parent); }
public void CopyTest() { var container1 = new DrawingObjectContainer() { Location = new PointF(10, 100), MarginLeft = 100, MarginRight = 100, PaddingLeft = 1, PaddingRight = 1, MarginTop = 1000, MarginBottom = 1000, PaddingTop = 10, PaddingBottom = 10, Size = new SizeF(50, 500), }; var label = new EigoTestLabelItem() { MarginLeft = 100, MarginTop = 1000, PaddingLeft = 100, PaddingTop = 1000, Location = new PointF(10, 100), Size = new SizeF(50, 500), }; container1.Items.Add(label); Assert.AreSame(container1, label.Parent); var label2 = label.Copy(); Assert.AreEqual(label.MarginLeft, label2.MarginLeft); Assert.AreEqual(label.MarginTop, label2.MarginTop); Assert.AreEqual(label.PaddingLeft, label2.PaddingLeft); Assert.AreEqual(label.PaddingTop, label2.PaddingTop); Assert.AreEqual(label.Location, label2.Location); Assert.AreEqual(label.Size, label2.Size); Assert.AreNotEqual(label.Id, label2.Id); Assert.Null(label2.Parent); }
public void マージンのデフォルト設定() { var container0 = new DrawingObjectContainer() { Position = DrawingObjectPosition.Relative, Left = 0, Top = 0, Width = 300, Height = 3000, }; var container1 = new DrawingObjectContainer() { }; var button0 = new EigoTestButtonItem() { MarginTop = 1, Width = 200, Height = 100, }; var button1 = new EigoTestButtonItem() { MarginTop = 10, Width = 200, Height = 100, MarginBottom = 1, }; container0.Items.Add(container1); container1.Items.Add(button0); container1.Items.Add(button1); Assert.AreEqual(0, container1.MarginTop); Assert.AreEqual(0, container1.MarginBottom); Assert.AreEqual(210, container1.Height); // Absolute要素は除外 var button2 = new EigoTestButtonItem() { Position = DrawingObjectPosition.Absolute, MarginTop = 10, Width = 200, Height = 100, MarginBottom = 1, }; container1.Items.Add(button2); Assert.AreEqual(210, container1.Height); }
public void 最上位アイテムはDrawingObjectContainer() { var testState = new Fish.eigotest.TestState(null); var drawingObjectContainer1 = new DrawingObjectContainer(); testState.Items.Add(drawingObjectContainer1); Assert.NotNull(drawingObjectContainer1.Parent); Assert.IsInstanceOf<DrawingObjectContainer>(drawingObjectContainer1.Parent); // デフォルトの幅と高さ Assert.AreEqual(1024, drawingObjectContainer1.Width); Assert.AreEqual(0f, drawingObjectContainer1.Height); }
public void MouseClickイベントの送出() { var window = new EPuzzleWindow(); var testState = new Fish.eigotest.TestState(window); var container = new DrawingObjectContainer() { MarginLeft = 10f, MarginTop = 100f, }; var label = new EigoTestLabelItem() { Size = new SizeF(10, 100), }; testState.Items.Add(container); container.Items.Add(label); window.State = testState; label.Click += (sender, e) => { Assert.Pass(); }; Assert.AreEqual(1014f, container.Width); Assert.AreEqual(DrawingObjectPosition.Static, container.Position); Assert.AreEqual(10f, label.OuterLeft); Assert.AreEqual(100f, label.OuterTop); Assert.AreEqual(10f, label.Width); Assert.AreEqual(100f, label.Height); window.MouseUp(15f, 150f, MouseButtons.Left); Assert.Fail(); }
public void GetParentsTest() { var container1 = new DrawingObjectContainer(); var container2 = new DrawingObjectContainer(); var label = new EigoTestLabelItem(); container1.Items.Add(container2); container2.Items.Add(label); CollectionAssert.AreEqual(new EigoTestDrawingObject[] { container2, container1, }, label.GetParents().ToArray()); }
public HelpItemState(EPuzzleWindow window, HelpItemBase[] helpItems, int helpItemIndex, WindowState parentState) : base(window) { _helpItems = helpItems; _helpItemIndex = helpItemIndex; _parentState = parentState; var helpItemButtons = helpItems.Select(helpItem => { var helpItemButton = new EigoTestButtonItem("", 20f, 18f) { Position = DrawingObjectPosition.Absolute, MarginRight = 10f, MarginBottom = 10f, Tag = helpItem, }; return helpItemButton; }); var helpItemButtonContainer = new DrawingObjectContainer() { Position = DrawingObjectPosition.Absolute, MarginLeft = 50f, Height = 40f, }; helpItemButtonContainer.Items.AddRange(helpItemButtons); helpItemButtonContainer.Items[helpItemIndex].IsClickable = false; Items.Add(helpItemButtonContainer); for (int i = 1; i < helpItemButtonContainer.Items.Count(); i++) { var s = helpItemButtonContainer.Items[i - 1]; var t = helpItemButtonContainer.Items[i]; t.Left = s.Left + s.OuterWidth; } helpItemButtonContainer.下揃え(); var modoruButton = new EigoTestButtonItem("続ける", 80f, 50f) { Position = DrawingObjectPosition.Absolute, Name = "tsudukeru", MarginRight = 50f, MarginBottom = 10f, }; Items.Add(modoruButton); modoruButton.右揃え(); modoruButton.下揃え(); if (0 < helpItemIndex) { var previousButton = new PreviousButton() { Position = DrawingObjectPosition.Absolute, MarginLeft = 10f, Tag = helpItemIndex - 1, }; Items.Add(previousButton); previousButton.垂直方向に中央揃え(); } if (helpItemIndex < helpItemButtonContainer.Items.Count() - 1) { var nextButton = new NextButton() { Position = DrawingObjectPosition.Absolute, MarginRight = 10f, Tag = helpItemIndex + 1, }; Items.Add(nextButton); nextButton.垂直方向に中央揃え(); nextButton.右揃え(); } if (!string.IsNullOrWhiteSpace(_helpItems[helpItemIndex].ImageFile)) { var imageFile = Path.Combine(window.EPuzzleData.HelpDirectory, _helpItems[helpItemIndex].ImageFile); var imageItem = new ImageItem(imageFile) { Position = DrawingObjectPosition.Absolute, MarginTop = 20f, }; Items.Add(imageItem); imageItem.水平方向に中央揃え(); } Action0 += (sender, e) => { if (CurrentItem is NextButton) { MoveTo((int)CurrentItem.Tag); } else if (CurrentItem is PreviousButton) { MoveTo((int)CurrentItem.Tag); } else if (CurrentItem.Tag is HelpItem) { var index = Array.IndexOf(helpItems, CurrentItem.Tag); MoveTo(index); } else if ("tsudukeru" == CurrentItem.Name) { Window.State = parentState; } }; Action3 += (sender, e) => { Window.State = parentState; }; }
public PauseState(EPuzzleWindow window, WindowState previousState) : base(window) { if (null == previousState) throw new ArgumentNullException(); PreviousState = previousState; var gameButton = new EigoTestButtonItem() { Text = "ゲームに戻る", }; gameButton.Click += (sender, e) => { ゲームに戻る(); }; var menuButton = new EigoTestButtonItem() { Text = "メニューに戻る", }; menuButton.Click += (sender, e) => { BackToChumonMenu(); }; var titleButton = new EigoTestButtonItem() { Text = "タイトルに戻る", }; titleButton.Click += (sender, e) => { MoveToStartGameState(); }; var desktopButton = new EigoTestButtonItem() { Text = "ディスクトップに戻る", }; desktopButton.Click += (sender, e) => { Window.QuitGame(this); }; float y = 0f; foreach (var button in new [] { gameButton, menuButton, titleButton, desktopButton }) { button.Top = y; button.Height = 50f; button.MarginBottom = 20f; // button.PaddingTop = button.PaddingBottom = 10f; button.Color = Color.White; button.BackColor = Color.FromArgb(255, 80, 80, 80); button.BorderLine = true; button.Font = EPuzzleFonts.PauseStateButton; y += button.OuterHeight; } var container = new DrawingObjectContainer() { MarginLeft = 300, MarginRight = 300, }; container.MarginTop = (DrawingObjectRoot.Height - y) / 2; container.Items.Add(gameButton); container.Items.Add(menuButton); container.Items.Add(titleButton); container.Items.Add(desktopButton); Items.Add(container); Action1 += (sender, e) => { ゲームに戻る(); }; Action3 += (sender, e) => { ゲームに戻る(); }; }