public static GameCanvas CreateCanvas(GLWindow game) { var renderer = new Gwen.Renderer.OpenTK(); var tx = new Texture(renderer); Gwen.Renderer.OpenTK.LoadTextureInternal(tx, GameResources.DefaultSkin); var skin = new TexturedBase(renderer, tx, GameResources.DefaultColors); var bmpfont = new Gwen.Renderer.OpenTK.BitmapFont(renderer, "SourceSansPro", 10, 10, GameResources.SourceSansProq, new List <System.Drawing.Bitmap> { GameResources.SourceSansPro_img }); skin.DefaultFont = bmpfont; var canvas = new GameCanvas(skin, game) { Renderer = renderer }; canvas.SpriteLoading = new Sprite(canvas); canvas.SpriteLoading.SetImage(GameResources.loading); canvas.SpriteLoading.IsHidden = true; canvas.SpriteLoading.IsTabable = false; canvas.SpriteLoading.KeyboardInputEnabled = false; canvas.SpriteLoading.MouseInputEnabled = false; canvas.SpriteLoading.SetSize(32, 32); canvas.SpriteLoading.RotationPoint.X = 16; canvas.SpriteLoading.RotationPoint.Y = 16; canvas.SpriteLoading.SetPosition(canvas.Width - 32, 0); var timeslider = new HorizontalIntSlider(canvas) { X = 120, Y = canvas.Height - 25, Width = canvas.Width - 120 * 2, Height = 25, IsTabable = false, IsHidden = true, KeyboardInputEnabled = false, Name = "timeslider", }; var btnfastfoward = new ImageButton(canvas) { X = timeslider.Right, Y = canvas.Height - 25, Width = 24, Height = 24, IsTabable = false, IsHidden = true, KeyboardInputEnabled = false, Name = "btnfastforward" }; btnfastfoward.SetImage(GameResources.fast_forward, GameResources.fast_forward_white); var btnslowmo = new ImageButton(canvas) { X = timeslider.X - 24, Y = canvas.Height - 25, Width = 24, Height = 24, IsTabable = false, IsHidden = true, KeyboardInputEnabled = false, Name = "btnslowmo" }; btnslowmo.SetImage(GameResources.rewind, GameResources.rewind_white); btnslowmo.Clicked += (o, e) => { game.PlaybackDown(); }; btnfastfoward.Clicked += (o, e) => { game.PlaybackUp(); }; timeslider.ValueChanged += canvas.timeslider_ValueChanged; var labelTrackName = new Label(canvas) { TextColor = System.Drawing.Color.Black, Dock = Pos.Left, Margin = new Margin(5, 0, 0, 0), Name = "trackname" }; Label labeliteration = new Label(canvas); labeliteration.Name = "labeliterations"; labeliteration.Font = new Font(renderer, "Arial", 18); labeliteration.SetText(""); labeliteration.TextColor = Color.Black; Align.PlaceDownLeft(labeliteration, labelTrackName); var toprightcontainer = new ControlBase(canvas) { Dock = Pos.Right, Width = 150, Height = 300, MouseInputEnabled = false }; var fps = new Label(toprightcontainer) { TextColor = Color.Black, Name = "fps" }; var labelppf = new Label(toprightcontainer) { TextColor = Color.Black, Name = "ppf" }; var labelPlayback = new Label(toprightcontainer) { TextColor = Color.Black, Name = "labelplayback" }; var flagtime = new Label(canvas) { TextColor = Color.Black, Name = "flagtime" }; var textheight = renderer.MeasureText(skin.DefaultFont, "@").Y + 3; labelppf.SetPosition(0, textheight); labelPlayback.SetPosition(0, textheight * 2); var vslider = new VerticalSlider(canvas) { Min = 0.1f, Max = 24f, Value = game.Track.Zoom, IsTabable = false }; vslider.ValueChanged += (o, e) => { var slider = (VerticalSlider)o; var diff = slider.Value - game.Track.Zoom; game.Zoom(diff, false); }; vslider.SetPosition(0, (int)canvas.Height - 150); vslider.Name = "vslider"; Align.AlignRight(vslider); vslider.Height = 125; return(canvas); }
public GameCanvas(SkinBase skin, MainWindow Game, Gwen.Renderer.OpenTK renderer) : base(skin) { game = Game; this.Renderer = renderer; BoundsChanged += GameCanvas_BoundsChanged; SpriteLoading = new Sprite(this); SpriteLoading.SetImage(GameResources.loading); SpriteLoading.IsHidden = true; SpriteLoading.IsTabable = false; SpriteLoading.KeyboardInputEnabled = false; SpriteLoading.MouseInputEnabled = false; SpriteLoading.SetSize(32, 32); SpriteLoading.RotationPoint.X = 16; SpriteLoading.RotationPoint.Y = 16; SpriteLoading.SetPosition(Width - 32, 0); Scrubber = new HorizontalIntSlider(this) { X = 120, Y = Height - 25, Width = Width - 120 * 2, Height = 25, IsTabable = false, IsHidden = true, KeyboardInputEnabled = false, Name = "timeslider", }; var btnfastfoward = new ImageButton(this) { X = Scrubber.Right, Y = Height - 36, Width = 32, Height = 32, IsTabable = false, IsHidden = true, KeyboardInputEnabled = false, Name = "btnfastforward" }; btnfastfoward.SetImage(GameResources.fast_forward, GameResources.fast_forward_white); var btnslowmo = new ImageButton(this) { X = Scrubber.X - 24, Y = Height - 36, Width = 32, Height = 32, IsTabable = false, IsHidden = true, KeyboardInputEnabled = false, Name = "btnslowmo" }; btnslowmo.SetImage(GameResources.rewind, GameResources.rewind_white); btnslowmo.Clicked += (o, e) => { game.PlaybackSpeedDown(); }; btnfastfoward.Clicked += (o, e) => { game.PlaybackSpeedUp(); }; Scrubber.ValueChanged += scrubber_ValueChanged; var labelTrackName = new Label(this) { TextColor = System.Drawing.Color.Black, Dock = Pos.Left, Margin = new Margin(5, 0, 0, 20), Name = "trackname" }; Label labeliteration = new Label(this); labeliteration.Name = "labeliterations"; labeliteration.SetText(""); labeliteration.TextColor = Color.Black; Align.PlaceDownLeft(labeliteration, labelTrackName); var toprightcontainer = new ControlBase(this) { Dock = Pos.Right, IsTabable = false, Width = 150, Height = 300, MouseInputEnabled = false }; new Label(toprightcontainer) { TextColor = Color.Black, Name = "fps" }; var labelppf = new Label(toprightcontainer) { TextColor = Color.Black, Name = "ppf" }; var labelPlayback = new Label(toprightcontainer) { TextColor = Color.Black, Name = "labelplayback" }; new Label(this) { TextColor = Color.Black, Name = "flagtime" }; var textheight = renderer.MeasureText(skin.DefaultFont, "").Y + 3; labelppf.SetPosition(0, textheight); labelPlayback.SetPosition(0, textheight * 2); var vslider = new VerticalSlider(this) { Min = 0.1f, Max = 24f, Value = game.Track.Zoom, IsTabable = false, KeyboardInputEnabled = false }; vslider.ValueChanged += (o, e) => { var slider = (VerticalSlider)o; game.SetZoom(slider.Value, false); }; vslider.SetPosition(0, (int)Height - 150); vslider.Name = "vslider"; Align.AlignRight(vslider); vslider.Height = 125; }