Forest Fidelity: Fixed tree log rendering and added HQ leaves - v2.1.8
|
|
@ -71,11 +71,11 @@ make -j$(nproc)
|
||||||
|
|
||||||
## 📜 Version History
|
## 📜 Version History
|
||||||
|
|
||||||
### v2.1.7 - Log Realism (Latest)
|
### v2.1.8 - Forest Fidelity (Latest)
|
||||||
- **Visual Overhaul**: Added authentic Oak Log textures with separate bark and rings.
|
- **High-Detail Leaves**: Integrated a new high-definition leaves texture with improved alpha transparency.
|
||||||
- **Multi-Texture Rendering**: Implemented specialized draw calls for complex cube mapping.
|
- **Tree Log Fix**: Corrected the rendering pipeline to ensure trees use the multi-texture Oak Log mapping.
|
||||||
|
|
||||||
### v2.1.6 - Inventory Insight
|
### v2.1.7 - Log Realism
|
||||||
- **Item Tooltips**: Added mouse-over identification for all inventory items.
|
- **Item Tooltips**: Added mouse-over identification for all inventory items.
|
||||||
- **UI Polish**: Dynamic tooltip positioning and screen-edge detection.
|
- **UI Polish**: Dynamic tooltip positioning and screen-edge detection.
|
||||||
|
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 701 KiB |
BIN
assets/stick.png
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 513 B |
|
After Width: | Height: | Size: 701 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 513 B |
|
|
@ -1 +1 @@
|
||||||
v2.1.7
|
v2.1.8
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 701 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 513 B |
|
|
@ -1 +1 @@
|
||||||
v2.1.7
|
v2.1.8
|
||||||
|
|
|
||||||
19
src/main.cpp
|
|
@ -824,7 +824,7 @@ int main(void)
|
||||||
// By default, windows have minimize, maximize, and close buttons on the top bar.
|
// By default, windows have minimize, maximize, and close buttons on the top bar.
|
||||||
SetConfigFlags(FLAG_WINDOW_RESIZABLE | FLAG_VSYNC_HINT);
|
SetConfigFlags(FLAG_WINDOW_RESIZABLE | FLAG_VSYNC_HINT);
|
||||||
|
|
||||||
InitWindow(screenWidth, screenHeight, "MorriCraft v2.1.7");
|
InitWindow(screenWidth, screenHeight, "MorriCraft v2.1.8");
|
||||||
LoadConfig();
|
LoadConfig();
|
||||||
SetExitKey(KEY_NULL); // Prevent ESC from closing the window
|
SetExitKey(KEY_NULL); // Prevent ESC from closing the window
|
||||||
|
|
||||||
|
|
@ -944,8 +944,8 @@ int main(void)
|
||||||
blockTextures[DIRT] = LoadTexture("assets/dirt.png");
|
blockTextures[DIRT] = LoadTexture("assets/dirt.png");
|
||||||
blockTextures[GRASS] = LoadTexture("assets/grass.png");
|
blockTextures[GRASS] = LoadTexture("assets/grass.png");
|
||||||
blockTextures[COBBLESTONE] = LoadTexture("assets/cobblestone.png");
|
blockTextures[COBBLESTONE] = LoadTexture("assets/cobblestone.png");
|
||||||
blockTextures[LOG] = LoadTexture("assets/plank.png"); // Fallback for missing log.png
|
blockTextures[LOG] = LoadTexture("assets/oak_log_side.png");
|
||||||
blockTextures[LEAVES] = blockTextures[GRASS]; // Leaves share grass texture (tinted in render loop)
|
blockTextures[LEAVES] = LoadTexture("assets/leaves.png");
|
||||||
blockTextures[PLANK] = LoadTexture("assets/plank.png");
|
blockTextures[PLANK] = LoadTexture("assets/plank.png");
|
||||||
blockTextures[SAND] = LoadTexture("assets/sand.png");
|
blockTextures[SAND] = LoadTexture("assets/sand.png");
|
||||||
blockTextures[STONE] = LoadTexture("assets/stone.png");
|
blockTextures[STONE] = LoadTexture("assets/stone.png");
|
||||||
|
|
@ -1999,8 +1999,8 @@ int main(void)
|
||||||
DrawTexturePro(titleTexture, sourceRec, destRec, origin, 0.0f, WHITE);
|
DrawTexturePro(titleTexture, sourceRec, destRec, origin, 0.0f, WHITE);
|
||||||
EndMode2D();
|
EndMode2D();
|
||||||
|
|
||||||
// Show Version Number (v2.1.7) in Red
|
// Show Version Number (v2.1.8) in Red
|
||||||
DrawTextEx(customFont, "v2.1.7", (Vector2){ (float)currentWidth - 140, (float)currentHeight - 40 }, 22, 1.0f, RED);
|
DrawTextEx(customFont, "v2.1.8", (Vector2){ (float)currentWidth - 140, (float)currentHeight - 40 }, 22, 1.0f, RED);
|
||||||
|
|
||||||
// --- PLAYER NAME POPUP (IF MISSING) ---
|
// --- PLAYER NAME POPUP (IF MISSING) ---
|
||||||
if (playerName == "") {
|
if (playerName == "") {
|
||||||
|
|
@ -2609,14 +2609,17 @@ int main(void)
|
||||||
DrawGrassBlock(pos, blockTextures[GRASS].id, grassTopTexture.id, blockTextures[DIRT].id, blockTint);
|
DrawGrassBlock(pos, blockTextures[GRASS].id, grassTopTexture.id, blockTextures[DIRT].id, blockTint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (renderType == LOG) {
|
||||||
|
for (Chunk* chunk : visibleChunks) {
|
||||||
|
for (auto& pos : chunk->renderLists[LOG]) {
|
||||||
|
DrawLog(pos, logSideTexture.id, logTopTexture.id, blockTint);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (renderType == CRAFTING_TABLE) {
|
} else if (renderType == CRAFTING_TABLE) {
|
||||||
for (Chunk* chunk : visibleChunks) {
|
for (Chunk* chunk : visibleChunks) {
|
||||||
for (auto& pos : chunk->renderLists[CRAFTING_TABLE]) {
|
for (auto& pos : chunk->renderLists[CRAFTING_TABLE]) {
|
||||||
DrawCraftingTable(pos, craftingSideTexture.id, craftingTopTexture.id, blockTextures[DIRT].id, blockTint);
|
DrawCraftingTable(pos, craftingSideTexture.id, craftingTopTexture.id, blockTextures[DIRT].id, blockTint);
|
||||||
}
|
}
|
||||||
for (auto& pos : chunk->renderLists[LOG]) {
|
|
||||||
DrawLog(pos, logSideTexture.id, logTopTexture.id, blockTint);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
rlSetTexture(blockTextures[renderType].id);
|
rlSetTexture(blockTextures[renderType].id);
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
v2.1.7
|
v2.1.8
|
||||||
|
|
|
||||||