Resources are a main part of any game and ClanLib has a system that makes resources easy to use

Sprites are one of the best features of Clanlib. They are relatively straightforward and make the animating of characters much easier.

First let us create a resources file that includes the sprite information.

ship_flame =

(

type = sprite,

image1 = ship_flame_0001.tga,

image2 = ship_flame_0002.tga,

image3 = ship_flame_0003.tga,

image4 = ship_flame_0004.tga,

image5 = ship_flame_0005.tga

    }

Ok so let’s go over some of the basics

ship_flame =

This is the name of the sprite

type = sprite,

Tells us this resource is a sprite (note the “,” after)

image1 = ship_flame_0001.tga,

image2 = ship_flame_0002.tga,

imageX is the order in which you want the images displayed.

Let’s go back to our basic app and add a sprite.

//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 a line that creates a CL_Sprite called Flaming_Ship.

//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();

//We need to create a window so people can see what we’re doing

CL_DisplayWindow window("A Simple ClanLib App", 640, 480, false, true);

//Tell Clanlib that we will be drawing in 2D

CL_Display::begin_2d();

CL_ResourceManager *myResourceManager = new CL_ResourceManager(“resources.scr”, false);

//Setup our Flaming_Ship sprite to use the resource file sprite.

CL_Sprite * Flaming_Ship = new CL_Sprite("ship_flame", myResourceManager);

//let’s start our while loop and draw on the screen

//If escape was hit, we should quit

while(!CL_Keyboard::get_keycode(CL_KEY_ESCAPE))

{

//clear the screen to black

CL_Display::clear();

Flaming_Ship->update();

Flaming_Ship->draw(315, 235)

//flip our screen so it draws it to the front buffer

CL_Display::flip();

//call keep_alive, the most important call in any loop

CL_System::keep_alive();

}

//Tell Clanlib that we are done drawing in 2D

delete Flaming_Ship;

delete MyResourceManager;

CL_Display::end_2d();

CL_SetupCore::deinit();

CL_SetupApplication::deinit();

CL_SetupDisplay::deinit();

CL_SetupGL::deinit();

return 0;

}

SimpleApp app;

CL_Sprite *Flaming_Ship = new CL_Sprite("ship_flame", myResourceManager);

This sets up our sprite using the ship_flame resource we defined earlier in our new resource file

Flaming_Ship->update();

This updates our sprite to the current frame based on a 20 frames per second default.

Flaming_Ship->draw(315, 235);

Draws our sprite on the screen.

So as you can see, ClanLib offers you a lot of functionality with very little code.