Ejemplo n.º 1
0
void resize( Uint16 w, Uint16 h )
{
	#if defined ZOOMUP || defined ZOOMDOWN
		#if defined ZOOMUP && defined ZOOMDOWN
			if (dummy_screen)
				spDeleteSurface(dummy_screen);
			#ifdef FIRSTUP
				dummy_screen = spCreateSurface(screen->w*2,screen->h*2);
			#else
				dummy_screen = spCreateSurface(screen->w/2,screen->h/2);
			#endif
		#else
			if (screen)
				spDeleteSurface(screen);
			#ifdef ZOOMUP
				screen = spCreateSurface(real_screen->w/2,real_screen->h/2);
			#else
				screen = spCreateSurface(real_screen->w*2,real_screen->h*2);
			#endif
		#endif
	#endif
	spSelectRenderTarget(screen);
	//Font Loading
	if ( font )
		spFontDelete( font );
	int zoom = spMin( ( screen->w << SP_ACCURACY ) / 320, ( screen->h << SP_ACCURACY ) / 240 ); //at 320x240 == 1.0
	font = spFontLoad( "./font/LiberationMono-Regular.ttf", 10 * zoom >> SP_ACCURACY );
	spFontAdd( font,SP_FONT_GROUP_ASCII, 0 ); //Just for debug stuff
	spFontAddBorder( font, spGetFastRGB(127,127,127) );
}
Ejemplo n.º 2
0
TransitionFade::~TransitionFade()
{
	if( SourceScreen != 0 )
	{
		spDeleteSurface( SourceScreen );
	}
	if( TargetScreen != 0 )
	{
		spDeleteSurface( TargetScreen );
	}
}
Ejemplo n.º 3
0
TransitionStrips::~TransitionStrips()
{
	free( (void*)speedList );
	if( SourceScreen != 0 )
	{
		spDeleteSurface( SourceScreen );
	}
	if( TargetScreen != 0 )
	{
		spDeleteSurface( TargetScreen );
	}
}
Ejemplo n.º 4
0
int main(int argc, char **argv)
{
	//sparrow3D Init
	spSetDefaultWindowSize(640,480); //Creates a 640x480 window at PC instead of 320x240
	spInitCore();
	
	//Setup
	screen = spCreateDefaultWindow();
	//Selecting the renderTarget. It could be every surface
	spSelectRenderTarget(screen);
	resize(screen->w,screen->h);
	
	//Textures loading
	texture = spLoadSurface("./data/garfield.png");
	//Setting alpha test to 0, because the texture has pink parts
	spSetAlphaTest(0);
	//Mesh loading
	mesh = spMeshLoadObj("./data/testmeshuv_tri.obj",texture,65535);
		
	//Light on! There is one "default" light at 0,0,0 with color white. We just use it.
	spSetLight(1);
	
	//All glory the main loop
	//every frame the draw_function is called
	//every frame the calc_function is called with the past time as argument
	//at least 10 ms have to be between to frames (max 100 fps)
	//if the window is resized, the resize feedback-function is called (again)
	spLoop(draw_function,calc_function,10,resize,NULL);
	
	//Winter Wrap up, Winter Wrap up
	spMeshDelete(mesh);
	spDeleteSurface(texture);
	spQuitCore();
	return 0;
}
Ejemplo n.º 5
0
void ShaderBlur::Apply( SDL_Surface* Target )
{
	// Keep render target (might not be applying shader to screen)
	SDL_Surface* r = spGetRenderTarget();

	SDL_Surface* t = spUniqueCopySurface( Target );
	
	spSetHorizontalOrigin( SP_LEFT );
	spSetVerticalOrigin( SP_TOP );

	spSelectRenderTarget( t );
	spSetBlending( SP_ONE );
	spBlitSurface( 0, 0, -1, Target );
	spSetBlending( SP_ONE >> 2 );
	for( int y = -1; y <= 1; y++ )
	{
		for( int x = -1; x <= 1; x++ )
		{
			if( x != 0 && y != 0 )
			{
				spBlitSurface( x, y, -1, Target );
			}
		}
	}

	spSelectRenderTarget( Target );
	spSetBlending( SP_ONE );
	spBlitSurface( 0, 0, -1, t );

	spDeleteSurface( t );

	// Restore render target
	spSelectRenderTarget( r );
}
Ejemplo n.º 6
0
void resizeWindow( Uint16 w, Uint16 h )
{
	spDeleteSurface(display);
	display = spCreateWindow( w, h, gameSettings->FullScreen, 0 );
  //Setup of the new/resized window
  spSelectRenderTarget(spGetWindowSurface());
  spSetPerspective(50.0f,(float)spGetWindowSurface()->w/(float)spGetWindowSurface()->h,0.1f,100.0f);
}
Ejemplo n.º 7
0
static void spLetterDelete( spLetterPointer letter )
{
	if ( letter == NULL )
		return;
	spLetterDelete( letter->left );
	spLetterDelete( letter->right );
	spDeleteSurface( letter->surface );
	free( letter );
}
Ejemplo n.º 8
0
StateScore::~StateScore()
{
	spDeleteSurface( killFrame );
	spFontDelete( scoreText );
	spResetAxisState();
	spResetButtonsState();
	delete run;
	if ( nameBkup[0] != 0 )
		strcpy( name, nameBkup );
}
Ejemplo n.º 9
0
StateScore::StateScore( StateLevel *level ) :
	StateBase(),
	file( FOLDER_DATA "/" FILE_HIGHSCORE_NORMAL )
{
	SDL_Surface *temp = spCreateSurface( APP_SCREEN_WIDTH, APP_SCREEN_HEIGHT );
	killFrame = spCreateSurface( APP_SCREEN_WIDTH, APP_SCREEN_HEIGHT );
	spSelectRenderTarget( temp );
	level->render( temp );
	spUnlockRenderTarget();
	SDL_SetAlpha( temp, SDL_SRCALPHA, 128 );
	SDL_BlitSurface( temp, NULL, killFrame, NULL );
	spLockRenderTarget();
	spSelectRenderTarget( spGetWindowSurface() );
	spDeleteSurface( temp );
	if ( level->player->toBeRemoved )
		playerDead = true;
	else
		playerDead = false;

	score = level->scoreKeeper->getScore();
	scoreText = spFontLoad( FONT_GENERAL, SCORE_FONT_SIZE );
	if ( scoreText )
	{
		spFontAdd( scoreText, SP_FONT_GROUP_ALPHABET SP_FONT_GROUP_GERMAN ".:!\"_", -1 );
		spFontAdd( scoreText, SP_FONT_GROUP_NUMBERS, spGetRGB( 255, 128, 0 ) );
	}

	nameBkup[0] = 0;
	if ( level->run->playing )
	{
		state = 1;
		caret = false;
		strcpy( nameBkup, name );
		strcpy( name, level->run->info.name.c_str() );
		run = level->run;
		level->run = NULL;
	}
	else
	{
		caret = true;
		state = 0;
		spPollKeyboardInput( name, SCORE_MAX_NAME_LENGTH, NULL );
		run = level->run;
		level->run = NULL;
	}

	caretTimer.start( SCORE_CARET_BLINK_TIME );
	timers.push_back( &caretTimer );

	type = stScore;
}
Ejemplo n.º 10
0
PREFIX void spDeleteSprite( spSpritePointer sprite)
{
	if ( sprite == NULL )
		return;
	if (sprite->name)
		free(sprite->name);
	spSubSpritePointer momSub = sprite->firstSub;
	do
	{
		spSubSpritePointer next = momSub->next;
		spDeleteSurface(momSub->surface);
		free( momSub );
		momSub = next;
	}
	while ( momSub != sprite->firstSub );
	if (sprite->collection)
		spRemoveSpriteFromCollection(sprite);
	free( sprite );
}
Ejemplo n.º 11
0
void TransitionFadeIn::Render()
{
	SDL_Surface* b = spGetWindowSurface();
	SDL_Surface* t = spUniqueCopySurface( b );

	// Fade from colour
	spClearTarget( SourceColour );

	// Buffer the next stages screen
	spSelectRenderTarget( t );
	Target->Render();
	spSelectRenderTarget( b );

	// Alpha it to the actual screen
	spSetHorizontalOrigin( SP_LEFT );
	spSetVerticalOrigin( SP_TOP );
	spSetBlending( Alpha );
	spBlitSurface( 0, 0, -1, t );
	spSetBlending( SP_ONE );

	spDeleteSurface( t );
}
Ejemplo n.º 12
0
int main( int argc, char **argv )
{
	//sparrow3D Init
	spInitCore();
	
	//spSetDefaultWindowSize(800,480);

	//Setup
	#if (defined ZOOMUP || defined ZOOMDOWN) && !(defined ZOOMUP && defined ZOOMDOWN)
		real_screen = spCreateDefaultWindow();
		resize( real_screen->w, real_screen->h );
	#else
		screen = spCreateDefaultWindow();
		resize( screen->w, screen->h );
	#endif

	//Setting the first level
	levelPointer = getLevelOverPointer();
	if (argc < 2)
		sprintf(get_saved_level(),"./level/tile_test.tmx");
	else
		sprintf(get_saved_level(),"%s",argv[1]);
	levelFade = FADE_TIME;
	(*levelPointer) = loadLevel(get_saved_level());
	createPhysicsFromLevel((*levelPointer));
	
	//All glory the main loop
	spLoop( draw_schizo, calc_schizo, 10, resize, NULL );

	//Winter Wrap up, Winter Wrap up …
	clearPhysics();
	deleteLevel((*levelPointer));
	spFontDelete( font );
	spDeleteSurface(screen);
	spQuitCore();
	return 0;
}
Ejemplo n.º 13
0
int main( int argc, char **argv )
{
	//sparrow3D Init
	spSetDefaultWindowSize( 640, 480 ); //Creates a 640x480 window at PC instead of 320x240
	spInitCore();

	//Setup
	screen = spCreateDefaultWindow();
	spSelectRenderTarget(screen);

	//Tile map loading
	tile_map = spLoadSurface( "./data/science_guy_frames01.png" );

	//Creating an empty sprite
	sprite = spNewSprite();
	//Filling it with it subsprites.
	int i;
	for ( i = 0; i < 9; i++ )
		spNewSubSpriteWithTiling( sprite, tile_map, i * 24 + 1, 1, 22, 46, 100 );

	//We don't want to use the zBuffer in any way
	spSetZSet(0);
	spSetZTest(0);

	//All glory the main loop
	//every frame the draw_function is called
	//every frame the calc_function is called with the past time as argument
	//at least 10 ms have to be between to frames (max 100 fps)
	//if the window is resized, the resize feedback-function is called (again)
	spLoop( draw_function, calc_function, 10, NULL, NULL );

	//Winter Wrap up, Winter Wrap up
	spDeleteSprite( sprite );
	spDeleteSurface( tile_map );
	spQuitCore();
	return 0;
}
Ejemplo n.º 14
0
void quit_sprites()
{
	spDeleteSurface(sprites_garfield);
	spDeleteSurface(sprites_texture);
	spDeleteSprite(sprite);
}
Ejemplo n.º 15
0
PREFIX spSpriteCollectionPointer spLoadSpriteCollection(char* filename,SDL_Surface* fallback_surface)
{
	SDL_RWops *file = SDL_RWFromFile(filename, "rt");
	if (!file)
		return NULL;
	spSpriteCollectionPointer collection = spNewSpriteCollection();
	
	//Loading the file line by line
	int end = 0;
	spSpritePointer sprite = NULL;
	char surface_d[1024] = "";
	//border default
	int bw_d = 0;
	int bh_d = 0;
	//frame default
	int fw_d = 0;
	int fh_d = 0;
	int fps_d = 0;
	char sprite_d[1024] = "";
	char surface[1024] = "";
	int bw = bw_d;
	int bh = bh_d;
	int fw = fw_d;
	int fh = fh_d;
	int fps = fps_d;
	while (!end) 
	{
		char line[512];
		end = spReadOneLine(file,line,512);
		//parsing the line
		if (line[0] == '#' || line[0] == ';') {} //comment
		else
		if (line[0] == '[') //new sprite
		{
			int i;
			for (i = 1; line[i]!=']' && line[i]!=0; i++);
			line[i] = 0;
			sprite = spNewSprite(&(line[1]));
			spAddSpriteToCollection(collection,sprite);
			sprintf(surface,"%s",surface_d);
			bw = bw_d;
			bh = bh_d;
			fw = fw_d;
			fh = fh_d;
			fps = fps_d;
		}
		else //some keywords
		{
			//searching the '=', ' ' or \0.
			int i;
			for (i = 1; line[i]!='=' && line[i]!=' ' && line[i]!=0; i++);
			if (line[i]==0) //hm, not good...
				continue;
			int keyword = 0;
			if (line[i]=='=')
			{
				line[i] = 0;
				keyword = spSpriteCollectionGetKeyword(line);
				line[i] = '=';
			}
			else // ' '
			{
				line[i] = 0;
				keyword = spSpriteCollectionGetKeyword(line);
				line[i] =' ';
				for (i++;line[i]!='=' && line[i]!=0; i++);
				if (line[i]==0) //hm, not good...
					continue;
			}
			for (i++;line[i]==' '; i++);
			char* value = &(line[i]);
			int j;
			for (j = strlen(value)-1;value[j]==' ' && j>=0;j--);
			value[j+1] = 0;
			int x,y,n;
			switch (keyword)
			{
				case 1: //"default"
					sprintf(sprite_d,"%s",value);
					break;
				case 2: //"image"
					if (sprite)
						sprintf(surface,"%s",value);
					else
						sprintf(surface_d,"%s",value);
					break;
				case 3: //fps
					if (sprite)
						fps = atoi(value);
					else
						fps_d = atoi(value);
					break;
				case 4: //framesize
					if (sprite)
						fw = atoi(value);
					else
						fw_d = atoi(value);
					for (i++;line[i]!=',' && line[i]!=0; i++);
					if (line[i] == 0)
						continue;
					value = &(line[i+1]);
					if (sprite)
						fh = atoi(value);
					else
						fh_d = atoi(value);
					break;
				case 5: //bordersize
					if (sprite)
						bw = atoi(value);
					else
						bw_d = atoi(value);
					for (i++;line[i]!=',' && line[i]!=0; i++);
					if (line[i] == 0)
						continue;
					value = &(line[i+1]);
					if (sprite)
						bh = atoi(value);
					else
						bh_d = atoi(value);
					break;
				case 6: //frame
					if (!sprite)
						break;
					x = atoi(value);
					for (i++;line[i]!=',' && line[i]!=0; i++);
					if (line[i] == 0)
						continue;
					value = &(line[i+1]);
					y = atoi(value);
					for (i++;line[i]!=',' && line[i]!=0; i++);
					
					SDL_Surface* s = spLoadSurface( surface );
					if (s == NULL)
						s = fallback_surface;
					if (line[i] == 0)
						spNewSubSpriteWithTiling(sprite,s,x+(bw-fw)/2,y+(bh-fh)/2,fw,fh,1000/(fps>0?fps:1));
					else
					{
						value = &(line[i+1]);
						n = atoi(value);						
						if (n > 0)
							spNewSubSpriteTilingRow(sprite,s,x+(bw-fw)/2,y+(bh-fh)/2,fw,fh,bw,bh,n,1000/(fps>0?fps:1));
					}
					//We loaded the surface one time more, than we will it delete later, so lets decrease the ref counter:
					spDeleteSurface( s );
					break;
			}
		}
	}
	spSelectSprite(collection,sprite_d);
	SDL_RWclose(file);
	return collection;
}