Difference between revisions of "Ruminate Example"

From TRCCompSci - AQA Computer Science
Jump to: navigation, search
(Displaying a screen)
Line 48: Line 48:
  
 
}
 
}
 +
</syntaxhighlight>
 +
 +
Within the new class add the following variable:
 +
 +
<syntaxhighlight lang=csharp>
 +
Gui _gui;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 66: Line 72:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
the final method required is an Init method, create the following variable and init method:
+
the final method required is an Init method, create the following method:
  
 
<syntaxhighlight lang=csharp>
 
<syntaxhighlight lang=csharp>
Gui _gui;
 
 
 
  public override void Init(Game1 game) {
 
  public override void Init(Game1 game) {
  

Revision as of 16:23, 9 October 2017

Installation

The nuget repository for Ruminate is broken and won't install, so download this zip file which contains the RuminateGUI.dll file:

https://drive.google.com/file/d/0Bw-0YEA_JX9gSXJVVVhiYUVNY2M/view?usp=sharing

Copy the DLL file into your project folder. Then under project, click add reference and browse for the DLL file.

Now you need to download the following zip file which contains the content folder for Ruminate, you need to extract this into the content folder of your project:

https://drive.google.com/file/d/0Bw-0YEA_JX9gcFEyY1F2aXVJbGs/view?usp=sharing

Setup

Click on project and create a new class, call it Screen.cs. Copy the following code:

using Microsoft.Xna.Framework;

namespace YourNameSpace {

    public abstract class Screen {

        public Color Color { get; set; }

        public abstract void Init(Game1 game);
        public abstract void OnResize();
        public abstract void Update();
        public abstract void Draw();
    }
}

Remember to use the original namespace from when you created the class.

Create a new screen

Create a new class from the project menu and name the class screen1. You need to add the following to the using section of the new class;

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Ruminate.GUI.Content;
using Ruminate.GUI.Framework;

Edit the class declaration to make it a class of Screen:

class screen1: Screen{

}

Within the new class add the following variable:

 Gui _gui;

Now copy the following methods into the class:

 public override void OnResize() {            
     _gui.Resize();              
 }

 public override void Update() {
     _gui.Update();
 }

 public override void Draw() {
     _gui.Draw();
 }

the final method required is an Init method, create the following method:

 public override void Init(Game1 game) {

      Color = Color.White;

      var skin = new Skin(game.GreyImageMap, game.GreyMap);
      var text = new Text(game.GreySpriteFont, Color.Black);

      _gui = new Gui(game, skin, text, testSkins, testTexts) {
          Widgets = new Widget[] {                                           
              new SingleLineTextBox(10, 550, 120, 10) { Value = "0123456789" }, //Test with default value 
              new SingleLineTextBox(10, 575, 120, 10) { Value = "0123456789", Text = "testText" } //Test with specified font
          }
      };
 }

Displaying a screen

Add the following variables into your Game1.cs:

Screen _currentScreen;
Screen[] _currentScreens;

public SpriteFont GreySpriteFont;
public Texture2D GreyImageMap;
public string GreyMap;

In the LoadContent method of Game1.cs add the following to load the textures and imagemap:

GreyImageMap = Content.Load<Texture2D>(@"GreySkin\ImageMap");
GreyMap = File.OpenText(@"GreySkin\Map.txt").ReadToEnd();
GreySpriteFont = Content.Load<SpriteFont>(@"GreySkin\Texture");