public override void Load() { SceneManager.GameWindow.Cursor = MouseCursor.Default; // Remap keypad enter to normal enter InputSystem.KeyRemappings.Add(Key.KeypadEnter, Key.Enter); _gameVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); // Choose correct version directive because OSX is dumb string version = "#version 130"; if (PlatformDetection.RunningPlatform() == Platform.MacOSX) { version = "#version 150"; } // Load shaders var vert = new Shader(Path.Combine(SceneManager.Directories["Shaders"].FullName, "simple.vs"), version); var frag = new Shader(Path.Combine(SceneManager.Directories["Shaders"].FullName, "simple.fs"), version); _shaderProgram = new ShaderProgram(); _shaderProgram.Load(vert, frag); _player = new Player(); _player.Position = new PolarVector(1.5 * (Math.PI / 3) - _player.Length * 0.5f, _player.Position.Radius); _player.ShaderProgram = _shaderProgram; _centerPolygon = new PolarPolygon(Enumerable.Repeat(true, 6).ToList(), new PolarVector(0.5, 0), 50, 80, 0); _centerPolygon.ShaderProgram = _shaderProgram; _menuFont = SceneManager.GameFontLibrary.GetFirstOrDefault("menuworld"); _menuFontDrawing = new QFontDrawing(); _menuFontDrawing.ProjectionMatrix = SceneManager.ScreenCamera.WorldModelViewProjection; _menuRenderOptions = new QFontRenderOptions { DropShadowActive = true, Colour = Color.White }; _versionFont = SceneManager.GameFontLibrary.GetFirstOrDefault("versiontext"); var guiRenderer = new Gwen.Renderer.OpenTK(); var skin = new TexturedBase(guiRenderer, Path.Combine(SceneManager.Directories["Images"].FullName, "DefaultSkin.png")); skin.DefaultFont = new Gwen.Font(guiRenderer, SceneManager.FontPath, 30); _GUIComponents = new GUIComponentContainer(guiRenderer, skin); Loaded = true; }
//Gwen Low Level Functions public static void InitGwen() { //TODO: Make it easier to modify skin. if (Skin == null) { Skin = new TexturedBase( GwenRenderer, Globals.ContentManager.GetTexture(GameContentManager.TextureType.Gui, "defaultskin.png") ) { DefaultFont = Graphics.UIFont }; } MenuUi?.Dispose(); GameUi?.Dispose(); // Create a Canvas (it's root, on which all other GWEN controls are created) sMenuCanvas = new Canvas(Skin, "MainMenu") { Scale = 1f //(GameGraphics.Renderer.GetScreenWidth()/1920f); }; sMenuCanvas.SetSize( (int)(Graphics.Renderer.GetScreenWidth() / sMenuCanvas.Scale), (int)(Graphics.Renderer.GetScreenHeight() / sMenuCanvas.Scale) ); sMenuCanvas.ShouldDrawBackground = false; sMenuCanvas.BackgroundColor = Color.FromArgb(255, 150, 170, 170); sMenuCanvas.KeyboardInputEnabled = true; // Create the game Canvas (it's root, on which all other GWEN controls are created) sGameCanvas = new Canvas(Skin, "InGame"); //_gameCanvas.Scale = (GameGraphics.Renderer.GetScreenWidth() / 1920f); sGameCanvas.SetSize( (int)(Graphics.Renderer.GetScreenWidth() / sGameCanvas.Scale), (int)(Graphics.Renderer.GetScreenHeight() / sGameCanvas.Scale) ); sGameCanvas.ShouldDrawBackground = false; sGameCanvas.BackgroundColor = Color.FromArgb(255, 150, 170, 170); sGameCanvas.KeyboardInputEnabled = true; // Create GWEN input processor if (Globals.GameState == GameStates.Intro || Globals.GameState == GameStates.Menu) { GwenInput.Initialize(sMenuCanvas); } else { GwenInput.Initialize(sGameCanvas); } FocusElements = new List <Framework.Gwen.Control.Base>(); InputBlockingElements = new List <Framework.Gwen.Control.Base>(); ErrorMsgHandler = new ErrorHandler(sMenuCanvas, sGameCanvas); if (Globals.GameState == GameStates.Intro || Globals.GameState == GameStates.Menu) { MenuUi = new MenuGuiBase(sMenuCanvas); GameUi = null; } else { GameUi = new GameInterface(sGameCanvas); MenuUi = null; } Globals.OnLifecycleChangeState(); GwenInitialized = true; }
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); }