Exemple #1
0
bool SDLEntity2D::LoadFrame ( std::string Name, std::string TexName, std::string MaskName, int FrameDelay, int x, int y, SGZ::RGBCOLOUR ColourKey )
{
	/// Load up a Texture into an Animation
	SListIterator<SGZAnimGroup2D*> AnimListITR = AnimList.getIterator();

	for( AnimListITR.start(); AnimListITR.valid(); AnimListITR.forth() )
		if((AnimListITR.item()->AnimName.compare(Name))==0)
		{
			SGZAnimFrame2D *Frame = new SGZAnimFrame2D;
			Frame->TextureName = TexName;
			Frame->MaskName = MaskName;
			Frame->delay = FrameDelay;
			Frame->u = x;
			Frame->v = y;
			Frame->colkey = ColourKey;
			AnimListITR.item()->FrameList.append(Frame);
			AnimListITR.item()->AnimNum++;
			AnimListITR.item()->FrameITR = AnimListITR.item()->FrameList.getIterator();

			if(!manTextures->checkExist(TexName))
				SGZ::Logger.log( SGZLOG::Warning, "Texture " + TexName + " has not been loaded yet.. make sure it is before calling this frame!");
			return true;
		}

	SGZ::Logger.log( SGZLOG::Warning, "Animation \"" + Name + "\" does not exist!\n");
	return false;
}
Exemple #2
0
bool MTexture::checkExist ( const std::string &Name )
{
	SListIterator<TextureObj*> TextureITR = mTextureList.getIterator();
	for( TextureITR.start(); TextureITR.valid(); TextureITR.forth() )
		if(TextureITR.item()->mName.compare(Name)==0)
			return true;

	return false;
}
Exemple #3
0
std::string SDLEntity2D::CheckVar( std::string Name )
{
	SListIterator<SGZVarGroup*> VarITR = VarList.getIterator();

	for( VarITR.start(); VarITR.valid(); VarITR.forth() )
		if((VarITR.item()->Name.compare(Name))==0)
			return VarITR.item()->Variable;

	return "none";
}
Exemple #4
0
bool MTexture::setColourKey ( const std::string &Name, const SGZ::RGBCOLOUR &key )
{
	SListIterator<TextureObj*> TextureITR = mTextureList.getIterator();
	for( TextureITR.start(); TextureITR.valid(); TextureITR.forth() )
		if(TextureITR.item()->mName.compare(Name)==0)
			TextureITR.item()->mData->setColourKey(key);


	SGZ::Logger.log( SGZLOG::Warning, "Texture " + Name + " does not exist!\n");
	return false;
}
Exemple #5
0
void* MTexture::getTexture( const std::string &Name )
{
	SListIterator<TextureObj*> TextureITR = mTextureList.getIterator();
	for( TextureITR.start(); TextureITR.valid(); TextureITR.forth() )
		if(TextureITR.item()->mName.compare(Name)==0)
		{
			return TextureITR.item()->mData->getTexture();
		}

	SGZ::Logger.log( SGZLOG::Warning, "Texture " + Name + " does not exist!\n");
	return NULL;
}
Exemple #6
0
MTexture::~MTexture()
{
	/** Destructor */
	SListIterator<TextureObj*> TextureITR = mTextureList.getIterator();

	TextureITR.start();
	while (TextureITR.valid())
	{
		mTextureList.remove(TextureITR);
		TextureITR.forth();
	}
}
Exemple #7
0
bool MTexture::blitTexture ( const std::string &Name, const SGZ::VECTOR3 &vector, const SGZ::SCALER u, const SGZ::SCALER v, const SGZ::SCALER w, const SGZ::SCALER h )
{
	SListIterator<TextureObj*> TextureITR = mTextureList.getIterator();
	for( TextureITR.start(); TextureITR.valid(); TextureITR.forth() )
		if(TextureITR.item()->mName.compare(Name)==0)
		{
			TextureITR.item()->mData->blitTexture(vector,u,v,w,h);
			return true;
		}
	SGZ::Logger.log( SGZLOG::Warning, "Texture " + Name + " does not exist!\n");
	return false;
}
Exemple #8
0
bool MTexture::delTexture( const std::string &Name )
{
	SListIterator<TextureObj*> TextureITR = mTextureList.getIterator();
	for( TextureITR.start(); TextureITR.valid(); TextureITR.forth() )
		if(TextureITR.item()->mName.compare(Name)==0)
		{
			mTextureList.remove(TextureITR);
			return true;
		}

	SGZ::Logger.log( SGZLOG::Warning, "Texture " + Name + " does not exist!\n");
	return false;
}
Exemple #9
0
bool MTexture::addTexMask( const std::string &Name, const std::string &Maskname )
{
	SListIterator<TextureObj*> TextureITR = mTextureList.getIterator();
	for( TextureITR.start(); TextureITR.valid(); TextureITR.forth() )
		if(TextureITR.item()->mName.compare(Name)==0)
		{
			TextureITR.item()->mData->loadTextureMask(Maskname);
			return true;
		}

	SGZ::Logger.log( SGZLOG::Warning, "Texture " + Name + " does not exist!\n");
	return false;
}
Exemple #10
0
bool SDLEntity2D::DeleteVar( std::string Name )
{
	SListIterator<SGZVarGroup*> VarITR = VarList.getIterator();

	for( VarITR.start(); VarITR.valid(); VarITR.forth() )
		if((VarITR.item()->Name.compare(Name))==0)
		{
			VarList.remove(VarITR);
			return true;
		}

	SGZ::Logger.log( SGZLOG::Warning, "Variable \"" + Name + "\" does not exist!\n");
	return false;
}
Exemple #11
0
bool SDLEntity2D::ChangeVar ( std::string Name, std::string Value )
{
	/** Load up a Texture into an Animation*/
	SListIterator<SGZVarGroup*> VarITR = VarList.getIterator();

	for( VarITR.start(); VarITR.valid(); VarITR.forth() )
		if((VarITR.item()->Name.compare(Name))==0)
		{
			VarITR.item()->Variable = Value;
			return true;
		}

	SGZ::Logger.log( SGZLOG::Warning, "Variable \"" + Name + "\" does not exist!\n");
	return false;
}
Exemple #12
0
bool MTexture::blitTexture ( const std::string &Name,  const float x1, const float y1, const float u1, const float v1,
												const float x2, const float y2, const float u2, const float v2,
												const float x3, const float y3, const float u3, const float v3,
												const float x4, const float y4, const float u4, const float v4,
																								const int layer )
{
	SListIterator<TextureObj*> TextureITR = mTextureList.getIterator();
	for( TextureITR.start(); TextureITR.valid(); TextureITR.forth() )
		if(TextureITR.item()->mName.compare(Name)==0)
		{
			TextureITR.item()->mData->blitTexture(   x1, y1, u1, v1,
													 x2, y2, u2, v2,
													 x3, y3, u3, v3,
													 x4, y4, u4, v4,
													 layer);
			return true;
		}
	SGZ::Logger.log( SGZLOG::Warning, "Texture " + Name + " does not exist!\n");
	return false;
}
Exemple #13
0
bool SDLEntity2D::DeleteAnimation( std::string Name )
{
	SListIterator<SGZAnimGroup2D*> AnimListITR = AnimList.getIterator();

	for( AnimListITR.start(); AnimListITR.valid(); AnimListITR.forth() )
		if((AnimListITR.item()->AnimName.compare(Name))==0)
		{
			AnimListITR.item()->FrameITR.start();
			while (AnimListITR.item()->FrameITR.valid())
			{
				AnimListITR.item()->FrameList.remove(AnimListITR.item()->FrameITR);
				AnimListITR.item()->FrameITR.forth();
			}

			AnimList.remove(AnimListITR);
			return true;
		}

	SGZ::Logger.log( SGZLOG::Warning, "Animation \"" + Name + "\" does not exist!\n");
	return false;
}
Exemple #14
0
bool SDLEntity2D::Update ( float deltaTime )
{
	mDeltaTime = deltaTime;
	position.x += velocity.x * deltaTime;
	position.y += velocity.y * deltaTime;
	position.z += velocity.z * deltaTime;

	/// Update our beloved entity
	SListIterator<SGZAnimGroup2D*> AnimListITR = AnimList.getIterator();

	offset.x = (Uint16)position.x;
	offset.y = (Uint16)position.y;
	offset.w = (Uint16)entityWidth;
	offset.h = (Uint16)entityHeight;

	//CurrentFrame = SDL_GetVideoSurface();
	
	for( AnimListITR.start(); AnimListITR.valid(); AnimListITR.forth() )
		if((AnimListITR.item()->AnimName.compare(CurrentAnim))==0)
		{
			if(AnimListITR.item()->AnimTimer.currenttime() >= AnimListITR.item()->FrameITR.item()->delay)
			{
				AnimListITR.item()->FrameITR.forth();
				AnimListITR.item()->CurAnim++;
				AnimListITR.item()->AnimTimer.reset();
			}

			if (AnimListITR.item()->FrameList.size() == AnimListITR.item()->CurAnim)
			{
				AnimListITR.item()->CurAnim = 0;
				AnimListITR.item()->FrameITR.start();
			}
			
			if(AnimListITR.item()->FrameITR.valid())
			{
				frame.x = (Uint16)AnimListITR.item()->FrameITR.item()->u;
				frame.y = (Uint16)AnimListITR.item()->FrameITR.item()->v;
				frame.w = (Uint16)entityWidth;
				frame.h = (Uint16)entityHeight;

				CurrentFrame = static_cast<SDL_Surface*>(manTextures->getTexture(AnimListITR.item()->FrameITR.item()->TextureName));
				SDL_SetColorKey(CurrentFrame, SDL_SRCCOLORKEY, SDL_MapRGB(	CurrentFrame->format,
																			(Uint32)AnimListITR.item()->FrameITR.item()->colkey.r,
																			(Uint32)AnimListITR.item()->FrameITR.item()->colkey.g,
																			(Uint32)AnimListITR.item()->FrameITR.item()->colkey.b));

				offset.w = (Uint16)entityWidth;
				offset.h = (Uint16)entityHeight;
				offset.x = (Sint16)position.x;
				offset.y = (Sint16)position.y;
				
				Uint32 old32Colour = SDL_MapRGB(	CurrentFrame->format,
													oldColour.r,
													oldColour.g,
													oldColour.b);
				
				Uint32 new32Colour = SDL_MapRGB(	CurrentFrame->format,
													newColour.r,
													newColour.g,
													newColour.b);
													
				//SDL_LockSurface(CurrentFrame);
				
				SDL_BlitSurface(CurrentFrame, &frame, SDL_GetVideoSurface(), &offset );
													
				if (SDL_GetVideoSurface()->format->BitsPerPixel == 16) {
					Uint16 *pixels = (Uint16 *)SDL_GetVideoSurface()->pixels;
					for (int index_y = offset.y; index_y < offset.y + offset.h; ++index_y){
						for (int index_x = offset.x; index_x < offset.x + offset.w; ++index_x){
							Uint16 colour = pixels[ ( index_y * SDL_GetVideoSurface()->w ) + index_x ];
 
							if ( colour == old32Colour )
								pixels[ ( index_y * SDL_GetVideoSurface()->w ) + index_x ] = new32Colour;
							else
								pixels[ ( index_y * SDL_GetVideoSurface()->w ) + index_x ] = colour;
						}
					}
				}
				else {
					Uint32 *pixels = (Uint32 *)CurrentFrame->pixels;
					for (int index_y = 0; index_y < CurrentFrame->h; ++index_y){
						for (int index_x = 0; index_x < CurrentFrame->w; ++index_x){
							Uint32 colour = pixels[ ( index_y * CurrentFrame->w ) + index_x ];
 
							if ( colour == old32Colour )
								pixels[ ( index_y * CurrentFrame->w ) + index_x ] = new32Colour;
							else
								pixels[ ( index_y * CurrentFrame->w ) + index_x ] = colour;
						}
					}
				}
				
				//SDL_UnlockSurface(CurrentFrame);
			}
			
			return true;
		}

	return true;
}