strichmaennchen git · main
git clone https://git.christianimmanuel.de/games/strichmaennchen.gitwget https://git.christianimmanuel.de/games/strichmaennchen/archive/strichmaennchen.tar.gzgame.c raw
#include "game.h"
#include "object.h"
#include "human.h"
#include "glfuncs.h"
#include <math.h>
#include <stdio.h>
#include <float.h>
#define M_PI 3.14159265358979323846
#define DEG2RAD(d) ((d) * (M_PI / 180.0f))
bool Game_init(Game* game) {
//game->time = Time_init(3600.0f);
game->time = Time_init(3.0f);
World_init(&game->world);
Human *player = Human_create(vec3(1,4,0), CUBE_VERTICES_MODERN, vec3(0.5f,1.6f,0.25f), true, 60);
player->isPlayer = true;
Human *human = Human_create(vec3(0,4,0), CUBE_VERTICES_MODERN, vec3(0.5f,1.6f,0.25f), false, 60);
Human *human_1 = Human_create(vec3(0,2,0), CUBE_VERTICES_MODERN, vec3(0.5f,1.6f,0.25f), false, 60);
Object* ground = Object_create(OBJ_GROUND, CUBE_VERTICES_GROUND, vec3(0,-1,0), vec3(130, 1, 130), 0);
Object* ground_1 = Object_create(OBJ_GROUND, CUBE_VERTICES_WARM, vec3(-8,0,1), vec3(1, 1, 1), 20);
Object* tree = Object_create(OBJ_TREE, CUBE_VERTICES_WARM, vec3(3,0,2), vec3(0.5f, 10, 0.5f), 0);
World_addHuman(&game->world, player);
World_addHuman(&game->world, human);
World_addHuman(&game->world, human_1);
World_addObject(&game->world, ground);
World_addObject(&game->world, ground_1);
World_addObject(&game->world, tree);
Object* cylinder = Object_create(OBJ_CYLINDER, CUBE_VERTICES_WARM, vec3(-3,0,1), vec3(1,3,1), 1000);
Object_setRotation(cylinder, (Vec3){DEG2RAD(90), 0, 0});
Object* cylinder_1 = Object_create(OBJ_CYLINDER, CUBE_VERTICES_MODERN, vec3(-3,0,3), vec3(1,3,1), 100);
World_addObject(&game->world, cylinder);
World_addObject(&game->world, cylinder_1);
Object* cube = Object_create(OBJ_CUBE, CUBE_VERTICES_MODERN, vec3(2,2,8), vec3(1,3,1), 100);
Object_setRotation(cube, (Vec3){DEG2RAD(90), 0, 0});
Object* cuber = Object_create(OBJ_CUBE, CUBE_VERTICES_MODERN, vec3(1,0,2), vec3(2,1,2), 20);
World_addObject(&game->world, cube);
World_addObject(&game->world, cuber);
/*
Object* cube = Object_create(OBJ_WALL, CUBE_VERTICES_MODERN, vec3(1,0,8), vec3(1,1,1), 20);
Object* cube_1 = Object_create(OBJ_WALL, CUBE_VERTICES_MODERN, vec3(3,0,8), vec3(1,1,1), 20);
Object* cube_2 = Object_create(OBJ_WALL, CUBE_VERTICES_MODERN, vec3(5,0,8), vec3(1,1,1), 20);
Object* cube_3 = Object_create(OBJ_WALL, CUBE_VERTICES_MODERN, vec3(7,0,8), vec3(1,1,1), 20);
Object* cube_4 = Object_create(OBJ_WALL, CUBE_VERTICES_MODERN, vec3(0,0,8), vec3(1,1,1), 20);
cube_1->rotation.y = DEG2RAD(90);
cube_2->rotation.y = DEG2RAD(180);
cube_3->rotation.y = DEG2RAD(270);
cube_4->rotation.y = DEG2RAD(270);
World_addObject(&game->world, cube);
World_addObject(&game->world, cube_1);
World_addObject(&game->world, cube_2);
World_addObject(&game->world, cube_3);
World_addObject(&game->world, cube_4);
*/
// for (int j = 0; j<10; j++) for (int i = 0; i<10; i++) World_addHuman(&game->world, Human_create(vec3(i,5,j), CUBE_VERTICES_MODERN, vec3(0.5f,1.6f,0.25f), false, 60));
/*
Object* triangle = Object_create(OBJ_TRIANGLE, vec3(2.0f, 4.0f, 1.0f), vec3(0.5f,0.5f,0.0f), vec3(0,0,0));
Object* axes = Object_create(OBJ_AXES, vec3(0,0,0), vec3(0,0,0), vec3(0,0,0));
Object* pyramid = Object_create(OBJ_PYRAMID, vec3(0,0,0), vec3(2.0f,2.0f,2.0f), vec3(1,0,1));
Object* ground_1 = Object_create(OBJ_GROUND, CUBE_VERTICES_WARM, vec3(0,4,0), vec3(10, 1, 10), 0);
*/
game->player = player;
if ( !human || !ground)
return false;
/*
World_addObject(&game->world, triangle);
World_addObject(&game->world, triangle_1);
World_addObject(&game->world, pyramid);
World_addObject(&game->world, cube);
*/
Object* house_main = Object_create(OBJ_HOUSE_MAIN, CUBE_VERTICES_WARM, vec3(10,0,20), vec3(18.0f,11.0f,12.0f), 20);
Object_setRotation(house_main, (Vec3){0, DEG2RAD(180), 0});
World_addObject(&game->world, house_main);
Object* house_main_1 = Object_create(OBJ_HOUSE_MAIN, CUBE_VERTICES_WARM, vec3(-5,0,23), vec3(18.0f,11.0f,12.0f), 20);
Object_setRotation(house_main_1, (Vec3){0, DEG2RAD(90), 0});
World_addObject(&game->world, house_main_1);
Object* barn = Object_create(OBJ_BARN, CUBE_VERTICES_WARM, vec3(2,0,-20), vec3(24.0f,11.0f,12.0f), 20);
Object_setRotation(barn, (Vec3){0, DEG2RAD(180), 0});
World_addObject(&game->world, barn);
Object* house_side_wall_back = Object_create(OBJ_WALL, CUBE_VERTICES_WARM, vec3(27,0,0), vec3(0.5,5,28), 20);
Object* house_side_wall_side_1 = Object_create(OBJ_WALL, CUBE_VERTICES_WARM, vec3(23.125,0,14.25f), vec3(8.25,5,0.5), 20);
Object* house_side_wall_side_2 = Object_create(OBJ_WALL, CUBE_VERTICES_WARM, vec3(23.125,0,9), vec3(8.25,5,0.5), 20);
Object* house_side_wall_side_3 = Object_create(OBJ_WALL, CUBE_VERTICES_WARM, vec3(23.125,0,-4), vec3(8.25,5,0.5), 20);
Object* house_side_wall_side_4 = Object_create(OBJ_WALL, CUBE_VERTICES_WARM, vec3(23.125,0,-14), vec3(8.25,5,0.5), 20);
Object* house_side_wall_front = Object_create(OBJ_WALL, CUBE_VERTICES_WARM, vec3(19.25f,3,0), vec3(0.5,2,28), 20);
Object* house_side_wall_front_1 = Object_create(OBJ_WALL, CUBE_VERTICES_WARM, vec3(19.25f,0,13.5f), vec3(0.5,3,2), 20);
Object* house_side_wall_front_2 = Object_create(OBJ_WALL, CUBE_VERTICES_WARM, vec3(19.25f,0,7), vec3(0.5,3,8), 20);
Object* house_side_wall_front_3 = Object_create(OBJ_WALL, CUBE_VERTICES_WARM, vec3(19.25f,0,-5), vec3(0.5,3,8), 20);
Object* house_side_wall_roof = Object_create(OBJ_WALL, CUBE_VERTICES_WARM, vec3(23.125,5,0), vec3(8.25,0.5,28.5), 20);
World_addObject(&game->world, house_side_wall_back);
World_addObject(&game->world, house_side_wall_side_1);
World_addObject(&game->world, house_side_wall_side_2);
World_addObject(&game->world, house_side_wall_side_3);
World_addObject(&game->world, house_side_wall_side_4);
World_addObject(&game->world, house_side_wall_front);
World_addObject(&game->world, house_side_wall_front_1);
World_addObject(&game->world, house_side_wall_front_2);
World_addObject(&game->world, house_side_wall_front_3);
World_addObject(&game->world, house_side_wall_roof);
Object* hof_bar_pillar_1 = Object_create(OBJ_CYLINDER_STATIC, CUBE_VERTICES_WARM, vec3(-10.2,0,-13.8), vec3(0.4f,3,0.4f), 100);
Object* hof_bar_pillar_2 = Object_create(OBJ_CYLINDER_STATIC, CUBE_VERTICES_WARM, vec3(-10.2,0, -5), vec3(0.4f,3,0.4f), 100);
Object* hof_bar_pillar_3 = Object_create(OBJ_CYLINDER_STATIC, CUBE_VERTICES_WARM, vec3(-16.2,0,-13.8), vec3(0.4f,3,0.4f), 100);
Object* hof_bar_pillar_4 = Object_create(OBJ_CYLINDER_STATIC, CUBE_VERTICES_WARM, vec3(-16.2,0, -5), vec3(0.4f,3,0.4f), 100);
World_addObject(&game->world, hof_bar_pillar_1);
World_addObject(&game->world, hof_bar_pillar_2);
World_addObject(&game->world, hof_bar_pillar_3);
World_addObject(&game->world, hof_bar_pillar_4);
Object* hof_bar_pillar_top_f = Object_create(OBJ_CYLINDER_STATIC, CUBE_VERTICES_WARM, vec3(-10.2,-1.4, -9.4), vec3(0.4f,8.8,0.4f), 100);
Object* hof_bar_pillar_top_b = Object_create(OBJ_CYLINDER_STATIC, CUBE_VERTICES_WARM, vec3(-16.2,-1.4, -9.4), vec3(0.4f,8.8,0.4f), 100);
Object* hof_bar_pillar_top_r = Object_create(OBJ_CYLINDER_STATIC, CUBE_VERTICES_WARM, vec3(-13.2,0, -13.8), vec3(0.4f,6.0,0.4f), 100);
Object* hof_bar_pillar_top_l = Object_create(OBJ_CYLINDER_STATIC, CUBE_VERTICES_WARM, vec3(-13.2,0, -5), vec3(0.4f,6.0,0.4f), 100);
Object_setRotation(hof_bar_pillar_top_f, (Vec3){DEG2RAD(90), 0, 0});
Object_setRotation(hof_bar_pillar_top_b, (Vec3){DEG2RAD(90), 0, 0});
Object_setRotation(hof_bar_pillar_top_r, (Vec3){DEG2RAD(90), 0, DEG2RAD(90)});
Object_setRotation(hof_bar_pillar_top_l, (Vec3){DEG2RAD(90), 0, DEG2RAD(90)});
World_addObject(&game->world, hof_bar_pillar_top_f);
World_addObject(&game->world, hof_bar_pillar_top_b);
World_addObject(&game->world, hof_bar_pillar_top_r);
World_addObject(&game->world, hof_bar_pillar_top_l);
//World_addObject(&game->world, cube_1);
//World_addObject(&game->world, Object_create(OBJ_CUBE, CUBE_VERTICES_WARM, vec3(-0.2f,0,2.5f), vec3(1,1,1), 20));
//World_addObject(&game->world, axes);
/*
World_addObject(&game->world, ground_1);
World_addObject(&game->world, cube);
World_addObject(&game->world, ground_1);
World_addObject(&game->world, ground_2);
World_addObject(&game->world, ground_3);
*/
return true;
}
void Game_update(Game* game, Userinput* input, float dt) {
if (input->rotate_object_forward) {
printf("rotate forward\n");
}
if (input->rotate_object_sideway) {
printf("rotate sideway\n");
}
World_update(&game->world, dt);
}
void Game_render(Game* game, Renderer* renderer, Camera* camera) {
Renderer_clear(0.0f, 0.0f, 0.0f, 1.0f);
World_renderShadows(&game->world, renderer, game->time);
World_render(&game->world, renderer, camera, game->time);
}
void Game_shutdown(Game* game) {
printf("asd%p", game);
Time_destroy(game->time);
//if (game->triangle) Object_destroy(game->triangle);
//if (game->axes) Object_destroy(game->axes);
}