// openkknd - Unit Card System (SIMD Optimized) // Header file for unit card implementation #include #include 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