Resources are a main part of any game and ClanLib has a system that makes resources easy to use. Let’s go back to the code from the first tutorial and modify it so that it uses resources.
First I will create a file “resources.scr” which contains the following
section Surfaces
{
my_surface = clanlib.tga (type=surface);
}
The Resource Overview provides a good explanation of how to create a resource file but I will cover some basics here
section Surfaces
You can separate your resources into different sections for easier organization. Sections may also have subsections.
my_surface = clanlib.tga (type=surface);
Creates a resource called my_surface.
//main.h – has the definition for our main clanapp class
#include <ClanLib/core.h>
#include <ClanLib/application.h>
#include <ClanLib/display.h>
#include <ClanLib/gl.h>
class SimpleApp :
public CL_ClanApplication
{
virtual int
main(int, char**);
};
In main.h we will add a line defining a CL_ResourceManager who’s main job is to load resources and make them available to objects such as a CL_Surface
//main.cpp
#include “main.h”
int SimpleApp::main(int
argc, char **argv)
{
//we need to set up all the
different pieces
CL_SetupCore::init();
CL_SetupApplication::init();
CL_SetupDisplay::init();
CL_SetupGL::init();
CL_DisplayWindow window("A
Simple ClanLib App", 640, 480, false, true);
//Create a CL_Surface that we will load from file.
CL_Surface *Image = new CL_Surface(“Surfaces\my_Surfaces”, myResourceManager );
//If escape was hit, we should quit
while(!CL_Keyboard::get_keycode(CL_KEY_ESCAPE))
{
//clear the
screen to black
CL_Display::clear();
//Draw our image
on the screen
Image->draw(150, 150);
//flip our
screen so it draws it to the front buffer
CL_Display::flip();
CL_System::keep_alive();
}
delete
Image;
CL_SetupCore::deinit();
CL_SetupApplication::deinit();
CL_SetupDisplay::deinit();
CL_SetupGL::deinit();
}
myResourceManager = new CL_ResourceManager(“resources.scr”,
false);
This creates a CL_ResourceManager
that will load and parse the file “resources.scr”. This file is not a compressed file which is
what the false parameter is.
Compressed files hold the resources
and usually have the extension .dat files. Non-compressed
files commonly have .scr extensions.
//Create
a CL_Surface that we will load from file.
CL_Surface *Image = new CL_Surface(“Surfaces\my_Surfaces”, myResourceManager );
We load our surface now from the CL_ResourceManager instead of directly from disk. This specifies that we want to load the my_Surfaces CL_Surface from the
Surfaces section.
Next we will do Sprites…