You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
4.2 KiB

#include "game.h"
#include "stdlib.h"
#include "raylib.h"
#include "sprite.h"
#include "List/list.h"
#include "Input/inputHandler.h"
#include "IsometricMap/isometricMap.h"
#include "stdio.h"
// returns pointer to new Game instance
Game *GameInit()
{
Game *game = (Game *)malloc(sizeof(Game));
game->cursorTextures[0] = LoadTexture("assets/cursor.gif");
game->cursorTextures[1] = LoadTexture("assets/cursor_down.gif");
// game->cursorSprite = {&(cursorTextures[0]), 450, 225};
// game->cursorSprite = (Sprite *) malloc(sizeof(Sprite));
game->cursorSprite = SpriteCreate(game->cursorTextures, 450, 225);
Image worker1flip = LoadImage("assets/worker/worker-1.png");
ImageFlipHorizontal(&worker1flip);
Image worker2flip = LoadImage("assets/worker/worker-2.png");
ImageFlipHorizontal(&worker2flip);
Image worker3flip = LoadImage("assets/worker/worker-3.png");
ImageFlipHorizontal(&worker3flip);
game->worker[6] = LoadTexture("assets/worker/worker-0.png");
game->worker[5] = LoadTexture("assets/worker/worker-1.png");
game->worker[7] = LoadTextureFromImage(worker1flip);
game->worker[4] = LoadTexture("assets/worker/worker-2.png");
game->worker[0] = LoadTextureFromImage(worker2flip);
game->worker[3] = LoadTexture("assets/worker/worker-3.png");
game->worker[1] = LoadTextureFromImage(worker3flip);
game->worker[2] = LoadTexture("assets/worker/worker-4.png");
game->inputHandler = (InputHandler *)malloc(sizeof(InputHandler));
game->inputHandler->pressed = 0;
game->inputHandler->rectStart.x = 0;
game->inputHandler->rectStart.y = 0;
game->inputHandler->cursorPos.x = 0;
game->inputHandler->cursorPos.y = 0;
game->inputHandler->cursorWorldPos.x = 0;
game->inputHandler->cursorWorldPos.y = 0;
game->inputHandler->cursorWorldTile.x = 0;
game->inputHandler->cursorWorldTile.y = 0;
game->inputHandler->selectedLayer = -1;
game->inputHandler->cursorTextures = game->cursorTextures;
game->inputHandler->cursorSprite = game->cursorSprite;
game->camera = (Camera2D *)malloc(sizeof(Camera2D));
game->camera->target.x = 0;
game->camera->target.y = 0;
game->camera->rotation = 0.0f;
game->camera->zoom = 1.0f;
game->camera->offset.x = 0;
game->camera->offset.y = 0;
game->sprites = ListInit();
game->layers = ((IsometricMap **)malloc(10 * sizeof(IsometricMap *)));
// Test Layers ---
int n = 0;
int i = 0;
int j = 0;
for (n = 0; n < 10; n++)
{
((game->layers))[n] = IsometricMapInit(n);
}
for (n = 0; n <= 10; n++)
{
for (i = 0; i < 100; i++)
{
for (j = 0; j < 100; j++)
{
switch (n)
{
case 0:
IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 0);
break;
case 1:
if (i > 35 && i < 50 && j > 45 && j < 60)
{
IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 0);
}
break;
case 2:
if (i > 40 && i < 44 && j > 50 && j < 54)
{
IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 2);
}
break;
}
if(i == j && n == 1){
IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 0);
}
if(i == j && n == 2){
IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 0);
}
if(i == j-1 && n == 1){
IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 0);
}
if(i-1 == j && n == 1){
IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 0);
}
}
}
}
for (n = 0; n <= 10; n++)
{
for (i = 0; i < 20 - n * 2; i++)
{
for (j = 0; j < 20 - n * 2; j++)
{
IsometricMapChangeTextureIdOfTile(game->layers, i, j, n, 0);
}
}
}
// -------
return game;
}