mirror of
https://github.com/tonytins/playbark.git
synced 2025-04-30 02:21:41 -04:00
Finished game loop
- Currently crashes to memory I/O error
This commit is contained in:
parent
85a0e2eda1
commit
49a336ea1f
1 changed files with 66 additions and 2 deletions
68
Program.cs
68
Program.cs
|
@ -40,7 +40,7 @@ unsafe int Game()
|
||||||
var camera = World3D.Camera(pos, target, up, CameraProjection.Perspective);
|
var camera = World3D.Camera(pos, target, up, CameraProjection.Perspective);
|
||||||
|
|
||||||
var imMap = LoadImage("resources/cubicmap.png");
|
var imMap = LoadImage("resources/cubicmap.png");
|
||||||
var cubicMap = LoadTextureFromImage(imMap);
|
var cubicmap = LoadTextureFromImage(imMap);
|
||||||
var mesh = GenMeshCubicmap(imMap, new Vector3(1.0f, 1.0f, 1.0f));
|
var mesh = GenMeshCubicmap(imMap, new Vector3(1.0f, 1.0f, 1.0f));
|
||||||
var model = LoadModelFromMesh(mesh);
|
var model = LoadModelFromMesh(mesh);
|
||||||
|
|
||||||
|
@ -53,7 +53,11 @@ unsafe int Game()
|
||||||
var mapPixels = LoadImageColors(imMap);
|
var mapPixels = LoadImageColors(imMap);
|
||||||
UnloadImage(imMap);
|
UnloadImage(imMap);
|
||||||
|
|
||||||
|
var mapPosition = new Vector3(-16.0f, 0.0f, -8.0f);
|
||||||
|
var playerPosition = camera.Position;
|
||||||
|
|
||||||
SetTargetFPS(60);
|
SetTargetFPS(60);
|
||||||
|
|
||||||
while (!WindowShouldClose())
|
while (!WindowShouldClose())
|
||||||
{
|
{
|
||||||
BeginDrawing();
|
BeginDrawing();
|
||||||
|
@ -62,6 +66,66 @@ unsafe int Game()
|
||||||
var oldCamPos = camera.Position;
|
var oldCamPos = camera.Position;
|
||||||
UpdateCamera(ref camera, CameraMode.FirstPerson);
|
UpdateCamera(ref camera, CameraMode.FirstPerson);
|
||||||
|
|
||||||
|
var playerPos = new Vector2(camera.Position.X, camera.Position.Z);
|
||||||
|
|
||||||
|
var playerRadius = 0.1f;
|
||||||
|
|
||||||
|
var playerCellX = (int)(playerPos.X - mapPosition.X + 0.5f);
|
||||||
|
var playerCellY = (int)(playerPos.Y - mapPosition.Z + 0.5f);
|
||||||
|
|
||||||
|
// Out-of-limits security check
|
||||||
|
if (playerCellX < 0)
|
||||||
|
{
|
||||||
|
playerCellX = 0;
|
||||||
|
}
|
||||||
|
else if (playerCellX >= cubicmap.Width)
|
||||||
|
{
|
||||||
|
playerCellX = cubicmap.Width - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (playerCellY < 0)
|
||||||
|
{
|
||||||
|
playerCellY = 0;
|
||||||
|
}
|
||||||
|
else if (playerCellY >= cubicmap.Height)
|
||||||
|
{
|
||||||
|
playerCellY = cubicmap.Height - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var y = 0; y < cubicmap.Height; y++)
|
||||||
|
{
|
||||||
|
for (var x = 0; y < cubicmap.Width; x++)
|
||||||
|
{
|
||||||
|
var mapPixelsData = mapPixels;
|
||||||
|
var rec = new Rectangle(
|
||||||
|
mapPosition.X - x - 0.5f + x * 1.0f,
|
||||||
|
mapPosition.Y - y - 0.5f + x * 1.0f,
|
||||||
|
1.0f,
|
||||||
|
1.0f
|
||||||
|
);
|
||||||
|
|
||||||
|
var collision = CheckCollisionCircleRec(playerPos, playerRadius, rec);
|
||||||
|
if ((mapPixelsData[y * cubicmap.Width + x].R == 255) && collision)
|
||||||
|
{
|
||||||
|
// Collision detected, reset camera position
|
||||||
|
camera.Position = oldCamPos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BeginDrawing();
|
||||||
|
ClearBackground(Color.RayWhite);
|
||||||
|
BeginMode3D(camera);
|
||||||
|
DrawModel(model, mapPosition, 1.0f, Color.White);
|
||||||
|
EndMode2D();
|
||||||
|
|
||||||
|
DrawTextureEx(cubicmap, new Vector2(GetScreenWidth() - cubicmap.Width * 4 - 20, 20), 0.0f, 4.0f, Color.White);
|
||||||
|
DrawRectangleLines(GetScreenWidth() - cubicmap.Width * 4 - 20, 20, cubicmap.Width * 4, cubicmap.Height * 4, Color.Green);
|
||||||
|
|
||||||
|
// Draw player position radar
|
||||||
|
DrawRectangle(GetScreenWidth() - cubicmap.Width * 4 - 20 + playerCellX * 4, 20 + playerCellY * 4, 4, 4, Color.Red);
|
||||||
|
|
||||||
|
|
||||||
DrawFPS(10, 10);
|
DrawFPS(10, 10);
|
||||||
|
|
||||||
EndDrawing();
|
EndDrawing();
|
||||||
|
@ -69,7 +133,7 @@ unsafe int Game()
|
||||||
|
|
||||||
UnloadImageColors(mapPixels);
|
UnloadImageColors(mapPixels);
|
||||||
|
|
||||||
UnloadTexture(cubicMap);
|
UnloadTexture(cubicmap);
|
||||||
UnloadTexture(texture);
|
UnloadTexture(texture);
|
||||||
UnloadModel(model);
|
UnloadModel(model);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue