Пример #1
0
void 			EnemyRender( Enemy* enemy )
{
	AnimationUpdate( &(enemy->ship_ani) );

	int pos_x = (int)roundf(enemy->pos.x-16);
	int pos_y = (int)roundf(enemy->pos.y-16);

    TextureRender(	enemy->sprite_texture, enemy->runner->render,
					pos_x, pos_y, &(enemy->ship_ani.rect) );
}
Пример #2
0
void PicRender(
	const Pic *p, SDL_Renderer *r, const struct vec2i pos, const color_t mask,
	const double radians, const struct vec2 scale)
{
	Rect2i dest = Rect2iNew(pos, p->size);
	// Apply scale to render dest
	// TODO: render with anchor at centre by default?
	if (!svec2_is_equal(scale, svec2_one()))
	{
		dest.Pos.x -= (mint_t)MROUND((scale.x - 1) * p->size.x / 2);
		dest.Pos.y -= (mint_t)MROUND((scale.y - 1) * p->size.y / 2);
		dest.Size.x = (mint_t)MROUND(p->size.x * scale.x);
		dest.Size.y = (mint_t)MROUND(p->size.y * scale.y);
	}
	const double angle = ToDegrees(radians);
	TextureRender(p->Tex, r, dest, mask, angle);
}
Пример #3
0
void AnimatedSpriteRender(SDL_Renderer* renderer, AnimatedSprite* aSprite, int x, int y)
{
	int nextPos;

	if(aSprite->autom && SDL_GetTicks() - aSprite->t0 >= aSprite->duration)
	{
		switch(aSprite->animMode)
		{
			case ANIM_VERTICAL:
				nextPos = aSprite->currentPos + aSprite->rectAnimation.h*aSprite->direction;
				if(nextPos >= (int)aSprite->texture->h || nextPos < 0)
				{
					aSprite->direction *= -1;
					nextPos = aSprite->currentPos + aSprite->rectAnimation.h*aSprite->direction;
				}
				aSprite->currentPos = nextPos;
				aSprite->rectAnimation.y = aSprite->currentPos;
				break;
		
			case ANIM_HORIZONTAL:
				nextPos = aSprite->currentPos + aSprite->rectAnimation.w*aSprite->direction;
				if(nextPos >= (int)aSprite->texture->w || nextPos < 0)
				{
					aSprite->direction *= -1;
					nextPos = aSprite->currentPos + aSprite->rectAnimation.w*aSprite->direction;
				}
				aSprite->currentPos = nextPos;
				aSprite->rectAnimation.x = aSprite->currentPos;
				break;

			default:
				break;
		}

		aSprite->t0 = SDL_GetTicks();
	}

	TextureRender(renderer, aSprite->texture, x, y, &aSprite->rectAnimation);
}