Merge branch 'master' of ssh.marcbarbier.fr:Marc/gamejam-polytech
This commit is contained in:
@@ -25,6 +25,7 @@ set(SRC
|
||||
src/text.c
|
||||
src/menu.c
|
||||
src/input.c
|
||||
src/scaller.c
|
||||
)
|
||||
|
||||
# add the executable
|
||||
|
||||
+10
-2
@@ -8,7 +8,7 @@
|
||||
#include <SDL2/SDL_surface.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "scaller.h"
|
||||
|
||||
long timecode;
|
||||
long iter;
|
||||
@@ -29,10 +29,11 @@ static void game_main(void) {
|
||||
//main game code
|
||||
|
||||
if(iter == 0) {
|
||||
menu_render();
|
||||
RenderObject_t text;
|
||||
SDL_Color white = {255, 255, 255, 255};
|
||||
TTF_Init();
|
||||
if(text_renderText(&text, 0.f, 0.f, 1000, 1, white, "./assets/fonts/arial.ttf", 25, "Hello World") < 0){
|
||||
if(text_renderText(&text, 0.1f, 0.1f, 1000, 1, white, "./assets/fonts/arial.ttf", 25, "Hello World") < 0){
|
||||
printf("error");
|
||||
exit(1);
|
||||
}
|
||||
@@ -40,14 +41,21 @@ static void game_main(void) {
|
||||
SDL_Surface* img = IMG_Load("./assets/img/pp.png");
|
||||
|
||||
RenderObject_t duck = {
|
||||
<<<<<<< HEAD
|
||||
0.25,
|
||||
0.25,
|
||||
=======
|
||||
0.5,
|
||||
0.5,
|
||||
>>>>>>> 781f4ba7beb2793dbdb38f1f2ca35f8a5fb52da3
|
||||
0,
|
||||
0.50,
|
||||
0.50,
|
||||
0,
|
||||
img
|
||||
};
|
||||
scaller(duck.surface, 1, &duck.width, &duck.height);
|
||||
placer(duck.surface, 1, &duck.x, &duck.y);
|
||||
|
||||
renderer_renderObject(text);
|
||||
renderer_renderObject(duck);
|
||||
|
||||
+14
-19
@@ -1,34 +1,30 @@
|
||||
#include "menu.h"
|
||||
#include <SDL2/SDL_image.h>
|
||||
#include "renderer.h"
|
||||
#include "scaller.h"
|
||||
|
||||
static RenderId_t menuObjects[10];
|
||||
static unsigned menuObjectsSize = 0;
|
||||
|
||||
int menu_render(int windowWidth, int windowHeight){
|
||||
int menu_render(void){
|
||||
SDL_Surface* buttonImageSurface = IMG_Load("./assets/img/start.png");
|
||||
if(buttonImageSurface == NULL){
|
||||
printf("cannot load");
|
||||
return -1;
|
||||
}
|
||||
RenderObject_t buttonImage;
|
||||
float buttonScale = 0.3f;
|
||||
// float buttonX = ((float)windowWidth - (float)buttonImageSurface->w) / (2.f * (float)buttonImageSurface->w);
|
||||
// float buttonY = ((float)windowHeight - (float)buttonImageSurface->h) / (2.f * (float)buttonImageSurface->h);
|
||||
float buttonX = 0.5f - buttonScale * (float)buttonImageSurface->w / (2.f * (float)windowWidth);
|
||||
float buttonY = 0.5f - buttonScale * (float)buttonImageSurface->h / (2.f * (float)windowHeight);
|
||||
printf("buttonImageSurface->w: %d\n", buttonImageSurface->w);
|
||||
printf("buttonImageSurface->h: %d\n", buttonImageSurface->h);
|
||||
printf("windowWidth: %d\n", windowWidth);
|
||||
printf("buttonX: %f\n", buttonX);
|
||||
|
||||
RenderObject_t buttonImage = {
|
||||
buttonX,
|
||||
buttonY,
|
||||
0,
|
||||
buttonScale,
|
||||
buttonScale,
|
||||
0,
|
||||
buttonImageSurface
|
||||
};
|
||||
MonitorSize_t size = renderer_getMonitorSize();
|
||||
float aspectRatio = (float)size.width / size.height;
|
||||
|
||||
buttonImage.x = 0.5f;
|
||||
buttonImage.y = 0.5f;
|
||||
|
||||
scaller(buttonImageSurface, buttonScale, &buttonImage.width, &buttonImage.height);
|
||||
placer(buttonImageSurface, buttonScale, &buttonImage.x, &buttonImage.y);
|
||||
|
||||
buttonImage.surface = buttonImageSurface;
|
||||
menuObjects[menuObjectsSize] = renderer_renderObject(buttonImage);
|
||||
++menuObjectsSize;
|
||||
return 0;
|
||||
@@ -40,4 +36,3 @@ void menu_remove(void){
|
||||
}
|
||||
menuObjectsSize = 0;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "renderer.h"
|
||||
|
||||
int menu_render(int windowWidth, int windowHeight);
|
||||
int menu_render(void);
|
||||
|
||||
void menu_remove(void);
|
||||
|
||||
|
||||
+13
-12
@@ -46,7 +46,7 @@ void renderer_main(void(*game_main)(void)) {
|
||||
win = SDL_CreateWindow("GAME", // creates a window
|
||||
SDL_WINDOWPOS_CENTERED,
|
||||
SDL_WINDOWPOS_CENTERED,
|
||||
500, 500, 0);
|
||||
1280, 720, 0);
|
||||
|
||||
Uint32 render_flags = SDL_RENDERER_ACCELERATED;
|
||||
|
||||
@@ -95,17 +95,6 @@ void renderer_main(void(*game_main)(void)) {
|
||||
|
||||
for(int i = 0; i < objectCount; i++) {
|
||||
RenderItem_t * object = &objects[i];
|
||||
if(object->cache == NULL) {
|
||||
SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, object->object.surface);
|
||||
if(texture == NULL) {
|
||||
fprintf(stderr, "Error while creating texture %s is_null: %d\n", SDL_GetError(), object->object.surface == NULL);
|
||||
exit(1);
|
||||
}
|
||||
SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);
|
||||
object->cache = texture;
|
||||
printf("Built cache\n");
|
||||
}
|
||||
|
||||
int error = SDL_RenderCopyEx(renderer, object->cache, NULL, &object->rect, object->object.angle_degre, NULL, SDL_FLIP_NONE);
|
||||
if(error != 0) {
|
||||
fprintf(stderr, "Render error in object %d with error %s\n", object->id, SDL_GetError());
|
||||
@@ -117,6 +106,16 @@ void renderer_main(void(*game_main)(void)) {
|
||||
}
|
||||
}
|
||||
|
||||
static void buildCache(RenderItem_t * object) {
|
||||
SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, object->object.surface);
|
||||
if(texture == NULL) {
|
||||
fprintf(stderr, "Error while creating texture %s is_null: %d\n", SDL_GetError(), object->object.surface == NULL);
|
||||
exit(1);
|
||||
}
|
||||
SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);
|
||||
object->cache = texture;
|
||||
}
|
||||
|
||||
RenderId_t renderer_renderObject(RenderObject_t object) {
|
||||
RenderId_t itemId = objectCount++;
|
||||
|
||||
@@ -134,6 +133,8 @@ RenderId_t renderer_renderObject(RenderObject_t object) {
|
||||
itemId
|
||||
};
|
||||
|
||||
buildCache(&item);
|
||||
|
||||
objects[itemId] = item;
|
||||
//the objects are sorted
|
||||
qsort(objects, objectCount, sizeof(RenderItem_t), (__compar_fn_t)compartSort);
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
#include "renderer.h"
|
||||
#include <SDL2/SDL_surface.h>
|
||||
#include "scaller.h"
|
||||
|
||||
void scaller(SDL_Surface * surface, float scale, float * width, float * height) {
|
||||
MonitorSize_t size = renderer_getMonitorSize();
|
||||
*width = (float)surface->w / size.width * scale;
|
||||
*height = (float)surface->h / size.height * scale;
|
||||
}
|
||||
|
||||
void placer(SDL_Surface * surface, float scale, float * x, float * y) {
|
||||
MonitorSize_t size = renderer_getMonitorSize();
|
||||
*x = *x - scale * surface->w / (2.f * (float)size.width);
|
||||
*y = *y - scale * surface->h / (2.f * (float)size.height);
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
#ifndef __SCALLER_H__
|
||||
#define __SCALLER_H__
|
||||
|
||||
#include <SDL2/SDL_surface.h>
|
||||
|
||||
void scaller(SDL_Surface * surface, float scale, float * width, float * height);
|
||||
void placer(SDL_Surface * surface, float scale, float * x, float * y);
|
||||
|
||||
#endif
|
||||
+4
-2
@@ -1,6 +1,7 @@
|
||||
#include <SDL2/SDL_error.h>
|
||||
#include <unistd.h>
|
||||
#include "renderer.h"
|
||||
#include "scaller.h"
|
||||
#include "text.h"
|
||||
#include <SDL2/SDL_log.h>
|
||||
|
||||
@@ -72,10 +73,11 @@ int text_renderText(RenderObject_t* renderObject, float x, float y, int z, float
|
||||
renderObject->x = x;
|
||||
renderObject->y = y;
|
||||
renderObject->z = z;
|
||||
renderObject->width = w * scale / 500;
|
||||
renderObject->height = h * scale / 500;
|
||||
renderObject->angle_degre = 0;
|
||||
renderObject->surface = surface;
|
||||
|
||||
scaller(surface, scale, &renderObject->width, &renderObject->height);
|
||||
placer(renderObject->surface, scale, &renderObject->x, &renderObject->y);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user