Some progress

This commit is contained in:
2025-05-29 22:37:44 +02:00
parent f6e59e74c7
commit d01bdbe819
11 changed files with 331 additions and 65 deletions

View File

@@ -108,11 +108,11 @@ void registerItem(char name[20], SDL_Renderer *renderer) {
memcpy(ItemRegistry[itemRegistryIndex].name, name, dot - name);
char texturePath[80];
snprintf(texturePath, 80, "./assets/items/%s", name);
ItemRegistry[itemRegistryIndex].texture = IMG_LoadTexture(renderer, texturePath);
SDL_SetTextureBlendMode(ItemRegistry[itemRegistryIndex].texture, SDL_BLENDMODE_BLEND);
ItemRegistry[itemRegistryIndex].textureOnBelt = ScaleTexture(renderer, ItemRegistry[itemRegistryIndex].texture,
ItemRegistry[itemRegistryIndex].texture[ORIENT_LEFT] = IMG_LoadTexture(renderer, texturePath);
SDL_SetTextureBlendMode(ItemRegistry[itemRegistryIndex].texture[0], SDL_BLENDMODE_BLEND);
ItemRegistry[itemRegistryIndex].textureOnBelt[ORIENT_LEFT] = ScaleTexture(renderer, ItemRegistry[itemRegistryIndex].texture[ORIENT_LEFT],
TILE_SIZE / 2, TILE_SIZE / 2);
SDL_SetTextureBlendMode(ItemRegistry[itemRegistryIndex].textureOnBelt, SDL_BLENDMODE_BLEND);
SDL_SetTextureBlendMode(ItemRegistry[itemRegistryIndex].textureOnBelt[ORIENT_LEFT], SDL_BLENDMODE_BLEND);
ItemRegistry[itemRegistryIndex].type = itemRegistryIndex;
itemRegistryIndex++;
@@ -248,12 +248,12 @@ void renderItem(ItemOnBelt item, SDL_Renderer *renderer, int lane) {
adjustRect(&rect);
// (Optional debug overlay)
SDL_Rect tileArea = {item.tileX * TILE_SIZE, item.tileY * TILE_SIZE,
TILE_SIZE, TILE_SIZE};
SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND);
SDL_SetRenderDrawColor(renderer, 255, 0, 0, 32);
adjustRect(&tileArea);
SDL_RenderFillRect(renderer, &tileArea);
// SDL_Rect tileArea = {item.tileX * TILE_SIZE, item.tileY * TILE_SIZE,
// TILE_SIZE, TILE_SIZE};
// SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND);
// SDL_SetRenderDrawColor(renderer, 255, 0, 0, 32);
// adjustRect(&tileArea);
// SDL_RenderFillRect(renderer, &tileArea);
char tempStr[50];
@@ -267,11 +267,8 @@ void renderItem(ItemOnBelt item, SDL_Renderer *renderer, int lane) {
SDL_SetRenderDrawColor(renderer, 255, 0, 0, 32);
adjustRect(&rectA);
SDL_RenderFillRect(renderer, &rectA);
SDL_RenderCopy(renderer, ItemRegistry[item.type].textureOnBelt, NULL, &rect);
SDL_Texture *oldRenderTarget = SDL_GetRenderTarget(renderer);
SDL_SetRenderTarget(renderer, NULL);
SDL_RenderCopy(renderer, ItemRegistry[item.type].textureOnBelt[ORIENT_LEFT], NULL, &rect);
renderText(renderer, fonts[3], tempStr, rectA.x, rectA.y);
SDL_SetRenderTarget(renderer, oldRenderTarget);
}
void renderBeltItems(SDL_Renderer *renderer) {
@@ -287,6 +284,23 @@ void putItem(int x, int y, uint16_t itemType, uint8_t lane, uint8_t itemIndex) {
}
void loadItems(SDL_Renderer *renderer) {
for(int i = 0; i < tileTypeIndex; i++) {
TileType tile = TileRegistry[i];
strcpy(ItemRegistry[itemRegistryIndex].name, tile.name);
memcpy(ItemRegistry[itemRegistryIndex].texture, tile.textures, sizeof (tile.textures));
for (int a = 0; a < ORIENT_DIRECTION_COUNT; a++) {
SDL_SetTextureBlendMode(ItemRegistry[itemRegistryIndex].texture[a], SDL_BLENDMODE_BLEND);
ItemRegistry[itemRegistryIndex].textureOnBelt[a] = ScaleTexture(renderer, tile.textures[a],
TILE_SIZE / 2, TILE_SIZE / 2);
SDL_SetTextureBlendMode(ItemRegistry[itemRegistryIndex].textureOnBelt[a], SDL_BLENDMODE_BLEND);
}
ItemRegistry[itemRegistryIndex].type = itemRegistryIndex;
itemRegistryIndex++;
}
DIR *dir = opendir("./assets/items");
if (dir) {
struct dirent *entry;

View File

@@ -3,6 +3,7 @@
//
#include <SDL2/SDL.h>
#include "../util/util.h"
#ifndef FACTORYGAME_ITEM_H
#define FACTORYGAME_ITEM_H
@@ -10,8 +11,8 @@
typedef struct {
uint16_t type;
char name[20];
SDL_Texture * texture;
SDL_Texture * textureOnBelt;
SDL_Texture * texture[ORIENT_DIRECTION_COUNT];
SDL_Texture * textureOnBelt[ORIENT_DIRECTION_COUNT];
} Item;
#define ITEMREGISTRY_SIZE 512
@@ -31,6 +32,8 @@ void loadItems(SDL_Renderer *renderer);
void renderItem(ItemOnBelt item, SDL_Renderer *renderer, int lane);
extern uint16_t itemRegistryIndex;
extern uint8_t laneTarget;
extern float speed;