Isometric Rendering kinda working

main
JanEhehalt 3 years ago
parent f23eaec9e3
commit 251ce39015

@ -0,0 +1,16 @@
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu17",
"cppStandard": "gnu++17",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}

@ -1,5 +1,5 @@
spiel: main.o sprite.o inputHandler.o
gcc -o spiel main.o sprite.o inputHandler.o -lraylib -lGL -lm -lpthread -ldl -lrt -lX11
spiel: main.o sprite.o inputHandler.o isometricRenderer.o
gcc -o spiel main.o sprite.o inputHandler.o isometricRenderer.o -lraylib -lGL -lm -lpthread -ldl -lrt -lX11
main.o: main.c
gcc -c main.c -lraylib -lGL -lm -lpthread -ldl -lrt -lX11
@ -10,5 +10,8 @@ sprite.o: sprite.c
inputHandler.o: inputHandler.c
gcc -c inputHandler.c -lraylib -lGL -lm -lpthread -ldl -lrt -lX11
isometricRenderer.o: isometricRenderer.c
gcc -c isometricRenderer.c -lraylib -lGL -lm -lpthread -ldl -lrt -lX11
clean:
rm *.o spiel

Binary file not shown.

@ -0,0 +1,35 @@
#include "isometricRenderer.h"
#include "raylib.h"
#include <stdio.h>
void IsometricRendererRenderMap(IsometricRenderer *renderer, int height){
float originX = 0.0f;
float originY = 0.0f;
int i = 0;
int j = 0;
int amount = 1;
for(i=0; i<height; i++){
for(j=0; j<amount; j++){
float x = originX - amount/2 * renderer->texture.width + j * renderer->texture.width;
if(amount%2 == 1){
x -= renderer->texture.width/2;
}
float y = i * renderer->texture.height/2;
DrawTexture(renderer->texture, x, y, WHITE);
}
if(i < height/2){
amount++;
}
else{
amount--;
}
}
}

@ -0,0 +1,11 @@
#ifndef ISOMETRICRENDERER_H_
#define ISOMETRICRENDERER_H_
#include "raylib.h"
typedef struct IsometricRenderer{
Texture texture;
} IsometricRenderer;
void renderMap(int width, int height);
#endif

Binary file not shown.

@ -3,6 +3,7 @@
#include "sprite.h"
#include "inputHandler.h"
#include "raymath.h"
#include "isometricRenderer.h"
int main(){
@ -13,17 +14,20 @@ int main(){
texture = LoadTexture("assets/amulet.png");
Texture2D isometricTexture = LoadTexture("assets/grass.png");
IsometricRenderer isometricRenderer = {isometricTexture};
int spriteAmount = 0;
Sprite cursorSprite = {&texture, 450, 225};
InputHandler inputHandler;
Camera2D camera = { 0 };
camera.target = (Vector2){400, 225};
camera.target = (Vector2){0, 0};
camera.rotation = 0.0f;
camera.zoom = 1.0f;
SpriteAdd(sprites, &spriteAmount, &texture, 400, 400);
SpriteAdd(sprites, &spriteAmount, &texture, 0, 0);
SetTargetFPS(60);
while(!WindowShouldClose()){
@ -33,13 +37,19 @@ int main(){
ClearBackground(RAYWHITE);
BeginMode2D(camera);
IsometricRendererRenderMap(&isometricRenderer, 15);
int i;
//int length = sizeof(sprites)/sizeof(sprites[0]);
for(i=0; i < spriteAmount; i++){
DrawTexture(*sprites[i].texture, sprites[i].x, sprites[i].y, WHITE);
}
EndMode2D();
// Moving cursor Sprite to Mouse Pos and drawing it
cursorSprite.x = inputHandler.cursorPos.x - texture.width / 2;
cursorSprite.y = inputHandler.cursorPos.y - texture.height / 2;

BIN
main.o

Binary file not shown.

BIN
spiel

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save