Some progress
This commit is contained in:
42
items/item.c
42
items/item.c
@@ -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;
|
||||
|
@@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user