예제 #1
0
		protected override void OnStart()
		{
			var layout = new LinearPanel()
			{
				ItemSpan = new Vector2DF(0, 36),
			};
			var selector = new Selector<int, Control>(CreateController(), layout);
			selector.BindKey(Control.Down, Control.Up, Control.Decide, Control.Cancel);
			selector.Cursor.Texture = Engine.Graphics.CreateTexture2D("ListCursor.png");
			selector.IsControllerUpdated = true;

			var font = Engine.Graphics.CreateDynamicFont("", 20, new Color(255, 0, 0, 255), 0, new Color(0, 0, 0, 0));

			var size = selector.Cursor.Texture.Size;

			var scroll = new ScrollLayer()
			{
				Position = new Vector2DF(30, 30),
				CameraSize = new Vector2DF(200, 200),
				BindingAreaRange = new RectF(0, 25, 200, 150),
				BoundaryStartingPosition = new Vector2DF(0, 0),
				BoundaryEndingPosition = layout.ItemSpan * 10 + new Vector2DF(200, 0),
			};
			var areaChanged = selector.OnSelectionChanged
				.Select(c => selector.GetItemForChocie(c).Position)
				.Select(p => new RectF(p.X, p.Y, size.X, size.Y));
			scroll.SubscribeSeeingArea(areaChanged);

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

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

			var heart1 = new TextureObject2D()
			{
				Position = scroll.BoundaryEndingPosition - new Vector2DF(50, 50),
				Texture = Engine.Graphics.CreateTexture2D("Heart.png"),
			};
			scroll.AddObject(heart1);
			var heart2 = new TextureObject2D()
			{
				Position = scroll.BoundaryStartingPosition - new Vector2DF(0, 50),
				Texture = Engine.Graphics.CreateTexture2D("Heart.png"),
			};
			scroll.AddObject(heart2);

			var viewer = new ScrollBoundViewer(scroll);
			scroll.AddObject(viewer);
		}
예제 #2
0
		public ScrollBoundViewer(ScrollLayer scrollLayer)
		{
			IsDrawn = false;
			this.scrollLayer = scrollLayer;
			debugCamera = new CameraObject2D()
			{
				Src = new RectI(
					(scrollLayer.BoundaryStartingPosition - new Vector2DF(30, 30)).To2DI(),
					(scrollLayer.BoundaryEndingPosition - scrollLayer.BoundaryStartingPosition + new Vector2DF(60, 60)).To2DI()),
				Dst = new RectI(Engine.WindowSize.X / 2, 0, Engine.WindowSize.X / 2, Engine.WindowSize.Y),
			};
			outerBinding = new GeometryObject2D()
			{
				DrawingPriority = -3,
				Color = new Color(255, 0, 0, 128),
			};
			innerBinding = new GeometryObject2D()
			{
				DrawingPriority = -1,
				Color = new Color(0, 0, 255, 128),
			};
			cameraBinding = new GeometryObject2D()
			{
				DrawingPriority = -2,
				Color = new Color(0, 255, 0, 128),
			};
            seeingArea = new GeometryObject2D()
            {
                DrawingPriority = -2,
                Color = new Color(255, 255, 0, 100),
            };
			AddChild(debugCamera, ChildManagementMode.RegistrationToLayer | ChildManagementMode.Disposal, ChildTransformingMode.Nothing);
			AddChild(outerBinding, ChildManagementMode.RegistrationToLayer | ChildManagementMode.Disposal, ChildTransformingMode.Nothing);
			AddChild(innerBinding, ChildManagementMode.RegistrationToLayer | ChildManagementMode.Disposal, ChildTransformingMode.Nothing);
			AddChild(cameraBinding, ChildManagementMode.RegistrationToLayer | ChildManagementMode.Disposal, ChildTransformingMode.Nothing);
			AddChild(seeingArea, ChildManagementMode.RegistrationToLayer | ChildManagementMode.Disposal, ChildTransformingMode.Nothing);
        }
		protected override void OnStart()
		{
			obj = new ReactiveTextureObject2D()
			{
				Texture = Engine.Graphics.CreateTexture2D("Heart.png"),
			};
			seeingAreaUpdate = new Subject<RectF>();

			var scroll = new ScrollLayer()
			{
				CameraSize = new Vector2DF(640, 480),
				BoundaryStartingPosition = new Vector2DF(-180 - 320, -160 - 240),
				BoundaryEndingPosition = new Vector2DF(320 + 180, 240 + 160),
				BindingAreaRange = new RectF(0, 0, 640, 480),
			};
			scroll.SetEasingBehaviorUp(EasingStart.StartRapidly2, EasingEnd.EndSlowly3, 15);
			scroll.SubscribeSeeingArea(seeingAreaUpdate);
			scroll.SetScrollPosition(new RectI(-320, -240, 640, 480), GetObjectArea());

			var scene = new Scene();
			scroll.AddObject(obj);
			scene.AddLayer(scroll);
			Engine.ChangeScene(scene);

			var rand = new Random();
			for (int i = 0; i < 60; i++)
			{
				int x = rand.Next()%1000 - 180 - 320;
				int y = rand.Next()%800 - 160 - 240;
				scroll.AddObject(new TextureObject2D
				{
					Texture = Engine.Graphics.CreateTexture2D("ZKey.png"),
					Position = new Vector2DF(x, y)
				});
			}
		}