Exemplo n.º 1
0
        public void GetGlyph_WithDelay_ReturnsWithOffset()
        {
            var text = ImmutableList <char> .Empty.Add('a')
                       .Add('b').Add('c');

            uint delay     = 1;
            uint endsDelay = 2;
            uint millis    = 0;

            ISelector <char> selector = new ScrollingSelector <char>(
                (d) => new Ticker(d, millis), delay, endsDelay, 1, text, ' ');

            millis  += endsDelay;
            selector = selector.Tick(millis);

            Assert.True(text.GetRange(1, 1).SequenceEqual(selector.GetSelected()));
            Assert.AreEqual(delay, selector.NextTick(millis));

            millis  += delay;
            selector = selector.Tick(millis);
            Assert.True(text.GetRange(2, 1).SequenceEqual(selector.GetSelected()));
            Assert.AreEqual(endsDelay, selector.NextTick(millis));

            millis  += endsDelay;
            selector = selector.Tick(millis);

            Assert.True(text.GetRange(0, 1).SequenceEqual(selector.GetSelected()));
            Assert.AreEqual(endsDelay, selector.NextTick(millis));
        }
Exemplo n.º 2
0
        public void GetSelected_Empty_ReturnsEmpty()
        {
            var selector = new ScrollingSelector <int>((a) => null,
                                                       1, 2, 1, ImmutableList <int> .Empty, 0);

            Assert.AreEqual(ImmutableList <int> .Empty.Add(0), selector.GetSelected());
        }
		protected override void OnStart()
		{
			selector = new ScrollingSelector<int, Control>(CreateController())
			{
				Position = new Vector2DF(320 - 200, 60),
				LineSpan = 52,
				LineWidth = 400,
				BoundLines = 4,
				IsControllerUpdated = true,
				Loop = true,
			};
			selector.BindKey(Control.Down, Control.Up, Control.Decide, Control.Cancel);
			selector.Cursor.IsDrawn = false;

			var scene = new ReactiveScene();

			var background = new Layer2D();
			background.AddObject(new GeometryObject2D()
			{
				Shape = new RectangleShape() { DrawingArea = new RectF(0, 0, 640, 480) },
				Color = new Color(255, 255, 255, 255),
			});
			scene.AddLayer(background);

			scene.AddLayer(selector);
			Engine.ChangeScene(scene);

			for(int i = 0; i < 1; i++)
			{
				selector.AddChoice(i, new HomeItem(i));
			}

			selector.SetDebugCameraUp();
			selector.SetEasingScrollUp(EasingStart.StartRapidly2, EasingEnd.EndSlowly3, 10);
		}
Exemplo n.º 4
0
        public void GetGlyph_PartialDisplay_ReturnsSubList()
        {
            var text = ImmutableList <char> .Empty.Add('a')
                       .Add('b').Add('c');

            var selector = new ScrollingSelector <char>(
                (d) => new Ticker(d, 0), 1, 2, 2, text, ' ');

            Assert.True(text.GetRange(0, 2).SequenceEqual(selector.GetSelected()));
        }
Exemplo n.º 5
0
        public void GetSelected_AtStart_ReturnsWithoutOffset()
        {
            var text = ImmutableList <char> .Empty.Add('a')
                       .Add('b');

            var selector = new ScrollingSelector <char>(
                (a) => null, 1, 2, 2, text, ' ');

            Assert.AreEqual(text, selector.GetSelected());
        }
        protected override void OnStart()
        {
            selector = new ScrollingSelector<int, Control>(CreateController())
            {
                Position = new Vector2DF(60, 32),
                CursorOffset = new Vector2DF(-5, 3),
                LineSpan = 36,
                LineWidth = 360,
                BoundLines = 8,
                ExtraLinesOnStarting = 1,
                ExtraLinesOnEnding = 1,
                IsControllerUpdated = true,
				Loop = true,
            };
            selector.BindKey(Control.Down, Control.Up, Control.Decide, Control.Cancel);
            selector.Cursor.Texture = Engine.Graphics.CreateTexture2D("ListCursor.png");
            selector.SetEasingScrollUp(EasingStart.StartRapidly2, EasingEnd.EndSlowly3, 10);

            font = Engine.Graphics.CreateFont("MPlusB.aff");

            var scene = new ReactiveScene();

			var background = new Layer2D();
			background.AddObject(new GeometryObject2D()
			{
				Shape = new RectangleShape() { DrawingArea = new RectF(0, 0, 640, 480) },
				Color = new Color(255, 255, 255, 255),
			});
			background.AddObject(new TextureObject2D()
			{
				Texture = Engine.Graphics.CreateTexture2D("ListWindowLarge.png"),
				Position = new Vector2DF(30, 30),
				DrawingPriority = 1,
			});
			scene.AddLayer(background);

			scene.AddLayer(selector);
			Engine.ChangeScene(scene);

			for(int i = 0; i < 15; i++)
            {
                var obj = new TextObject2D()
                {
                    Font = font,
                    Text = $"アイテム{i}",
					Color = new Color(225, 160, 0, 255),
                };
                selector.AddChoice(i, obj);
            }

            selector.SetDebugCameraUp();
        }
		private async Task RunAsync()
		{
			var selector2 = new ScrollingSelector<int, Control>(CreateController())
			{
				BoundLines = 6,
				LineSpan = 40,
				LineWidth = 120,
				IsControllerUpdated = true,
			};
			selector2.BindKey(Control.Down, Control.Up, Control.Decide, Control.Cancel);
			selector2.AddChoice(0, new TextureObject2D());
			scene.AddLayer(selector2);

			Console.WriteLine(Thread.CurrentThread.ManagedThreadId);

			await selector2.OnDecide.FirstAsync().ToTask();

			Console.WriteLine(Thread.CurrentThread.ManagedThreadId);

			selector2.Dispose();
		}
		protected override void OnStart()
		{
			font = Engine.Graphics.CreateDynamicFont("", 20, new Color(255, 0, 0, 255), 0, new Color(0, 0, 0, 0));

			selector = new ScrollingSelector<int, Control>(CreateController())
			{
				IsControllerUpdated = true,
				Position = new Vector2DF(30, 30),
				LineSpan = 36,
				BoundLines = 4,
				LineWidth = 360,
				ExtraLinesOnStarting = 1,
				ExtraLinesOnEnding = 1,
			};
			selector.BindKey(Control.Down, Control.Up, Control.Decide, Control.Cancel);
			selector.Cursor.Texture = Engine.Graphics.CreateTexture2D("ListCursor.png");
			selector.SetEasingScrollUp(EasingStart.StartRapidly2, EasingEnd.EndSlowly3, 10);

			collection = new ObservableCollection<int>();

			for(int i = 0; i < 5; i++)
			{
				collection.Add(i);
			}

			CollectionBinderForSelector<int>.Bind(selector, collection, i => new ActivatableItem($"アイテム{i}"), true);

			for(int i = 5; i < 10; i++)
			{
				collection.Add(i);
			}

			var scene = new Scene();
			scene.AddLayer(selector);
			Engine.ChangeScene(scene);
		}