kitchen: README + MISSIONS/engine-c keep-drop notes
This commit is contained in:
parent
1d351918da
commit
575d7d29b8
130 changed files with 9817 additions and 1 deletions
83
engine-c/include/unit_card.h
Normal file
83
engine-c/include/unit_card.h
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
// openkknd - Unit Card System (SIMD Optimized)
|
||||
// Header file for unit card implementation
|
||||
|
||||
#include <stdint.h>
|
||||
#include <immintrin.h>
|
||||
|
||||
typedef struct {
|
||||
char name[32];
|
||||
char faction[16];
|
||||
uint32_t cost;
|
||||
uint32_t hp;
|
||||
uint32_t max_hp;
|
||||
uint32_t attack;
|
||||
uint32_t defense;
|
||||
uint32_t speed;
|
||||
uint32_t range;
|
||||
char description[256];
|
||||
char image_path[128];
|
||||
uint8_t unit_type;
|
||||
uint8_t special_abilities_count;
|
||||
char special_abilities[64][16];
|
||||
} UnitCard;
|
||||
|
||||
typedef struct {
|
||||
UnitCard **units;
|
||||
size_t unit_count;
|
||||
size_t capacity;
|
||||
} UnitRegistry;
|
||||
|
||||
// Unit type constants
|
||||
#define UNIT_INFANTRY 1
|
||||
#define UNIT_VEHICLE 2
|
||||
#define UNIT_SPECIAL 3
|
||||
#define UNIT_ALL 0
|
||||
|
||||
// Flag for SIMD instructions
|
||||
#define HAVE_AVX2 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// Core unit functions
|
||||
UnitCard* create_unit_card(const char* name, const char* faction,
|
||||
uint32_t cost, uint32_t hp, uint32_t attack,
|
||||
uint32_t defense, uint32_t speed, uint32_t range,
|
||||
const char* description, const char* image,
|
||||
uint8_t unit_type);
|
||||
|
||||
void free_unit_card(UnitCard* unit);
|
||||
|
||||
// Registry functions
|
||||
UnitRegistry* create_registry();
|
||||
void destroy_registry(UnitRegistry* registry);
|
||||
|
||||
int add_unit(UnitRegistry* registry, UnitCard* unit);
|
||||
UnitCard* get_unit_by_name(UnitRegistry* registry, const char* name);
|
||||
UnitCard** get_units_by_faction(UnitRegistry* registry, const char* faction,
|
||||
size_t* out_count);
|
||||
UnitCard** get_units_by_type(UnitRegistry* registry, uint8_t unit_type,
|
||||
size_t* out_count);
|
||||
|
||||
// SIMD optimized functions
|
||||
void spread_damage_SIMD(const UnitCard* units[], size_t unit_count,
|
||||
uint32_t damage, uint32_t* remaining_hp);
|
||||
|
||||
void apply_healing_SIMD(UnitCard** units, size_t unit_count,
|
||||
uint32_t heal_amount);
|
||||
|
||||
// Serialization functions
|
||||
int save_units_to_json(UnitRegistry* registry, const char* filepath);
|
||||
int load_units_from_json(UnitRegistry* registry, const char* filepath);
|
||||
|
||||
// Memory management
|
||||
void unit_card_to_json(UnitCard* unit, char* buffer, size_t buffer_size);
|
||||
UnitCard* json_to_unit_card(const char* json_string);
|
||||
|
||||
// Performance statistics
|
||||
void print_performance_stats(UnitRegistry* registry);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue