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); }
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) }); } }