Exemplo n.º 1
0
int LuaCreateAnimation(lua_State* _State) {
	struct Sprite* _Sprite = NULL;
	const char* _File = luaL_checkstring(_State, 1);\
	struct Resource* _Resource = ResourceGet(_File);
	SDL_Point _Pos = {0, 0};

	_Sprite = CreateSprite(ResourceGetData(_Resource), 0, &_Pos);
	LuaCtor(_State, _Sprite, LOBJ_SPRITE);
	return 1;
}
Exemplo n.º 2
0
struct Sprite* ConstructSprite(struct Sprite* _Sprite, struct Resource* _Image, int _Layer, const SDL_Point* _TilePos) {
	SDL_Texture* _Texture = ResourceGetData(_Image);

	if(_Texture == NULL) {
		free(_Sprite);
		return NULL;
	}
	_Sprite->Image = _Image;
	_Sprite->TilePos = *_TilePos;
	_Sprite->Rect.x = 0;
	_Sprite->Rect.y = 0;
	SDL_QueryTexture(_Texture, NULL, NULL, &_Sprite->Rect.w, &_Sprite->Rect.h);
	_Sprite->SpritePos.w = _Sprite->Rect.w;
	_Sprite->SpritePos.h = _Sprite->Rect.h;
	return _Sprite;
}
Exemplo n.º 3
0
int LuaAnimationCreateFrames(lua_State* _State) {
	int _Width = luaL_checkinteger(_State, 1);
	int _Height = luaL_checkinteger(_State, 2);
	int _FrameCt = luaL_checkinteger(_State, 3);
	const char* _KeyName = luaL_checkstring(_State, 4);
	struct AnimationLoading* _Data = NULL;
	struct Resource* _Image = NULL;

	lua_pushvalue(_State, LUA_REGISTRYINDEX);
	lua_pushstring(_State, ANIM_LUASTR);
	lua_rawget(_State, -2);
	_Data = lua_touserdata(_State, -1);
	if(_Data->ImageName == NULL)
		return luaL_error(_State, "Animation has no image loaded.");
	_Image = ResourceGet(_Data->ImageName);
	if(SDL_QueryTexture(ResourceGetData(_Image), NULL, NULL, &_Data->Dims.x, &_Data->Dims.y) != 0) {
		luaL_error(_State, SDL_GetError());
		DestroyResource(_Image);
		return 0;
	}
	DestroyResource(_Image);
	if(_FrameCt * _Width > _Data->Dims.x || _FrameCt * _Height > _Data->Dims.y)
		return luaL_error(_State, "Frame exceeds dimensions.");
	for(int i = _Data->FrameSz; i < _FrameCt && i < ANIM_MAXFRAMES; ++i) {
		_Data->Frames[i + _Data->FrameSz].Speed = _Data->DefaultSpeed;
		_Data->Frames[i + _Data->FrameSz].Rect.x = i * _Width;
		_Data->Frames[i + _Data->FrameSz].Rect.y = i * _Height;
		_Data->Frames[i + _Data->FrameSz].Rect.w = _Width;
		_Data->Frames[i + _Data->FrameSz].Rect.h = _Height;
		++_Data->FrameSz;
	}
	_Data->y = _Data->y + _Height;
	_Data->Keys[_Data->KeySz].Name = calloc(strlen(_KeyName) + 1, sizeof(char));
	strcpy((char*)_Data->Keys[_Data->KeySz].Name, _KeyName);
	++_Data->KeySz;
	return 0;
}
Exemplo n.º 4
0
int SpriteOnDraw(const struct Sprite* _Sprite) {
	return SDL_RenderCopy(g_Renderer, ResourceGetData(_Sprite->Image), &_Sprite->Rect, &_Sprite->SpritePos);
}