first commit
commit
a4f341596d
@ -0,0 +1,2 @@
|
||||
.vscode
|
||||
notes
|
@ -0,0 +1,66 @@
|
||||
|
||||
#include <raylib.h>
|
||||
#include "WindowManager.h"
|
||||
|
||||
|
||||
|
||||
WindowManager::WindowManager( char* title, float screen_width, float screen_height ) {
|
||||
_title = title;
|
||||
_screenWidth = screen_width;
|
||||
_screenHeight = screen_height;
|
||||
_aspectRatio = (double)screen_width / screen_height;
|
||||
InitWindow(_screenWidth, _screenHeight, _title);
|
||||
Screen = LoadRenderTexture(_screenWidth, _screenHeight);
|
||||
ScaledScreen = LoadRenderTexture(_screenWidth, _screenHeight);
|
||||
_scaledHeight = screen_height;
|
||||
_scaledWidth = screen_width;
|
||||
}
|
||||
|
||||
|
||||
void WindowManager::UpdateScale() {
|
||||
// Changed
|
||||
bool hasChanged = (_screenWidth != GetScreenWidth()) || (_screenHeight != GetScreenHeight());
|
||||
|
||||
if ( hasChanged ) {
|
||||
|
||||
// Update Scaled Size
|
||||
int width = GetScreenWidth();
|
||||
int height = GetScreenHeight();
|
||||
double aspectRatio = (double)width / height;
|
||||
|
||||
int newWidth = 0;
|
||||
int newHeight = 0;
|
||||
|
||||
if (aspectRatio > _aspectRatio) {
|
||||
_scaledWidth = height * _aspectRatio;
|
||||
_scaledHeight = height;
|
||||
} else {
|
||||
_scaledWidth = width;
|
||||
_scaledHeight = width / _aspectRatio;
|
||||
}
|
||||
|
||||
// Update Texture Size
|
||||
ScaledScreen = LoadRenderTexture(_scaledWidth, _scaledHeight);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void WindowManager::Display () {
|
||||
|
||||
BeginTextureMode(ScaledScreen);
|
||||
DrawTexturePro(Screen.texture, { 0, 0, static_cast<float>(_screenWidth), -static_cast<float>(_screenHeight) }, { 0, 0, static_cast<float>(ScaledScreen.texture.width), static_cast<float>(ScaledScreen.texture.height) }, { 0, 0 }, 0.0f, WHITE);
|
||||
EndTextureMode();
|
||||
|
||||
float xStart = -(GetScreenWidth() - _scaledWidth) / 2;
|
||||
float yStart = -(GetScreenHeight() - _scaledHeight) / 2;
|
||||
|
||||
BeginDrawing();
|
||||
ClearBackground(BLACK);
|
||||
|
||||
|
||||
DrawTexturePro(Screen.texture, { 0, 0, static_cast<float>(_screenWidth), -static_cast<float>(_screenHeight) }, { 0, 0, static_cast<float>(ScaledScreen.texture.width), static_cast<float>(ScaledScreen.texture.height) }, { xStart, yStart }, 0.0f, WHITE);
|
||||
|
||||
EndDrawing();
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
#ifndef WINDOWMANAGER_H
|
||||
#define WINDOWMANAGER_H
|
||||
|
||||
#include <raylib.h>
|
||||
|
||||
|
||||
class WindowManager
|
||||
{
|
||||
public:
|
||||
WindowManager(char* title, float screen_width, float screen_height);
|
||||
void UpdateScale ();
|
||||
void Display ();
|
||||
RenderTexture2D Screen;
|
||||
RenderTexture2D ScaledScreen;
|
||||
|
||||
private:
|
||||
|
||||
char* _title;
|
||||
float _screenWidth;
|
||||
float _screenHeight;
|
||||
double _aspectRatio;
|
||||
|
||||
int _scaledWidth;
|
||||
int _scaledHeight;
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,108 @@
|
||||
#include <raylib.h>
|
||||
#include <string>
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <memory>
|
||||
|
||||
#include "./world/Chunk.h"
|
||||
#include "./WindowManager/WindowManager.h"
|
||||
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
|
||||
// Initialize the window and raylib
|
||||
WindowManager windowManager("My Title", 320, 240);
|
||||
|
||||
std::string userInput;
|
||||
|
||||
SetTargetFPS(60);
|
||||
|
||||
Texture2D texture = LoadTextureFromImage(ImageFromImage(LoadImage("tiles.png"), { 0, 0, 8, 8 }));
|
||||
std::map<std::string, Texture2D*> myMap;
|
||||
myMap["grass"] = &texture;
|
||||
Chunk chunk(100, 100, 50, BLUE);
|
||||
chunk.LoadTextures(myMap);
|
||||
|
||||
// Enable window resizing
|
||||
SetWindowState(FLAG_WINDOW_RESIZABLE);
|
||||
|
||||
while (!WindowShouldClose())
|
||||
{
|
||||
|
||||
windowManager.UpdateScale();
|
||||
|
||||
BeginTextureMode(windowManager.Screen);
|
||||
ClearBackground(BLACK);
|
||||
DrawText("Drawing on Render Texture", 10, 10, 20, RED);
|
||||
DrawRectangle(160, 120, 160, 120, RED);
|
||||
|
||||
ClearBackground(GRAY);
|
||||
|
||||
double xStart = (GetScreenWidth() - windowManager.ScaledScreen.texture.width) / 2;
|
||||
double yStart = (GetScreenHeight() - windowManager.ScaledScreen.texture.height) / 2;
|
||||
|
||||
// Display the user input on the screen
|
||||
DrawText(userInput.c_str(), 10, 10, 20, BLACK);
|
||||
DrawRectangle(200, 200 / 2 - 50, 100, 100, RED);
|
||||
chunk.Draw();
|
||||
|
||||
EndTextureMode();
|
||||
|
||||
// Scaled Texture
|
||||
|
||||
|
||||
|
||||
float deltaTime = GetFrameTime();
|
||||
// Update
|
||||
|
||||
|
||||
// Check for mouse input
|
||||
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON))
|
||||
{
|
||||
int mouseX = GetMouseX();
|
||||
int mouseY = GetMouseY();
|
||||
|
||||
// Print the mouse coordinates
|
||||
printf("Mouse clicked at (%d, %d)\n", mouseX, mouseY);
|
||||
}
|
||||
|
||||
|
||||
// Check for user input
|
||||
if (IsKeyPressed(KEY_BACKSPACE) && userInput.length() > 0)
|
||||
{
|
||||
// Remove the last character from the input string
|
||||
userInput.pop_back();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Check if any key is being pressed
|
||||
int key = GetKeyPressed();
|
||||
|
||||
|
||||
if ( IsKeyPressed(KEY_A) ) {
|
||||
}
|
||||
|
||||
|
||||
if (key > 0)
|
||||
{
|
||||
// Append the pressed key to the input string
|
||||
userInput += static_cast<char>(key);
|
||||
}
|
||||
}
|
||||
|
||||
// Display
|
||||
windowManager.Display();
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Close the window and raylib
|
||||
CloseWindow();
|
||||
|
||||
return 0;
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
#include <raylib.h>
|
||||
#include "Chunk.h"
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <memory>
|
||||
#include <iostream>
|
||||
#include <raylib.h>
|
||||
|
||||
|
||||
|
||||
|
||||
Chunk::Chunk(int x, int y, int size, Color color)
|
||||
: m_x(x), m_y(y), m_size(size), m_color(color)
|
||||
{}
|
||||
|
||||
|
||||
void Chunk::LoadTextures(std::map<std::string, Texture2D*> textures) {
|
||||
// Access and process the textures
|
||||
myMap = textures;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Chunk::Draw()
|
||||
{
|
||||
if (myMap["grass"]) DrawTexturePro(*(myMap["grass"]), { 0, 0, static_cast<float>(myMap["grass"]->width), static_cast<float>(myMap["grass"]->height) },
|
||||
{ 0, 0, static_cast<float>(myMap["grass"]->width * 2), static_cast<float>(myMap["grass"]->height * 2) },
|
||||
{ 0, 0 }, 0.0f, WHITE);
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
#ifndef SQUARE_H
|
||||
#define SQUARE_H
|
||||
|
||||
#include <raylib.h>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <memory>
|
||||
|
||||
|
||||
class Chunk
|
||||
{
|
||||
public:
|
||||
Chunk(int x, int y, int size, Color color);
|
||||
void Draw();
|
||||
void LoadTextures(std::map<std::string, Texture2D*> textures);
|
||||
|
||||
private:
|
||||
int chunkTiles[8][8];
|
||||
int m_x;
|
||||
int m_y;
|
||||
int m_size;
|
||||
Color m_color;
|
||||
std::map<std::string, Texture2D*> myMap;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue