aboutsummaryrefslogtreecommitdiff
path: root/analyzer/parser/fight_results.h
diff options
context:
space:
mode:
authorMosder <xmosder12@gmail.com>2026-07-21 20:28:29 +0200
committerMosder <xmosder12@gmail.com>2026-07-21 20:28:29 +0200
commite20946d04232cdf9d21aac3a2e7352a548ba50ae (patch)
treec30d8136c14e9576f8432e6c223af0997ed7f47b /analyzer/parser/fight_results.h
parentaab4922ae3dfac9e80e0328fb7dce2f40b9cffd2 (diff)
refactor: moved parser/fight_results.* into parser/fight_results/
Diffstat (limited to 'analyzer/parser/fight_results.h')
-rw-r--r--analyzer/parser/fight_results.h452
1 files changed, 0 insertions, 452 deletions
diff --git a/analyzer/parser/fight_results.h b/analyzer/parser/fight_results.h
deleted file mode 100644
index 59d1e45..0000000
--- a/analyzer/parser/fight_results.h
+++ /dev/null
@@ -1,452 +0,0 @@
-// parser/fight_results.h
-// utilities for parsing the fight results data
-
-#include "parser/parser_defs.h"
-#include "utils/tcp.h"
-
-#ifndef FIGHT_RESULTS_H
-#define FIGHT_RESULTS_H
-
-// Payload structure:
-// FIGHT_RESULTS_START EntityResults (SEPARATOR_ENTITY EntityResults)* FIGHT_RESULTS_END
-#define FIGHT_RESULTS_START "3;19;"
-#define FIGHT_RESULTS_END "[--];"
-#define SEPARATOR_ENTITY "[--]"
-#define SEPARATOR_RESULT "&"
-
-// values of field "team" in EntityResults
-#define TEAM_FRIEND 1
-#define TEAM_ENEMY 2
-
-// EntityResults structure:
-// field (SEPARATOR_RESULT field)*
-// fields are defined in order in the EntityResults struct
-#define ENTITY_FIELD_COUNT 35
-// clang-format off
-#define ENTITY_FIELD_TYPES { \
- /* team */ INT, \
- /* name */ STRING, \
- /* exp */ INT, \
- /* field4 */ FLOAT, \
- /* gold */ INT, \
- /* field6 */ FLOAT, \
- /* field7 */ STRING, \
- /* gear */ STRING, \
- /* field9 */ INT, \
- /* items */ STRING, \
- /* field11 */ INT, \
- /* field12 */ INT, \
- /* field13 */ FLOAT, \
- /* field14 */ FLOAT, \
- /* field15 */ FLOAT, \
- /* level */ INT, \
- /* field17 */ DOUBLE, \
- /* field18 */ FLOAT, \
- /* field19 */ INT, \
- /* field20 */ INT, \
- /* field21 */ FLOAT, \
- /* field22 */ FLOAT, \
- /* field23 */ INT, \
- /* field24 */ INT, \
- /* psycho */ INT, \
- /* drifs */ STRING, \
- /* splinters */ INT, \
- /* field28 */ INT, \
- /* field29 */ STRING, \
- /* field30 */ INT, \
- /* field31 */ INT, \
- /* field32 */ INT, \
- /* field33 */ INT, \
- /* field34 */ STRING, \
- /* saturation */ STRING, \
-}
-#define ENTITY_FIELD_ADDRESSES(entity_results) {\
- &entity_results.team, \
- &entity_results.name, \
- &entity_results.exp, \
- &entity_results.field4, \
- &entity_results.gold, \
- &entity_results.field6, \
- &entity_results.field7, \
- &entity_results.gear, \
- &entity_results.field9, \
- &entity_results.items, \
- &entity_results.field11, \
- &entity_results.field12, \
- &entity_results.field13, \
- &entity_results.field14, \
- &entity_results.field15, \
- &entity_results.level, \
- &entity_results.field17, \
- &entity_results.field18, \
- &entity_results.field19, \
- &entity_results.field20, \
- &entity_results.field21, \
- &entity_results.field22, \
- &entity_results.field23, \
- &entity_results.field24, \
- &entity_results.psycho, \
- &entity_results.drifs, \
- &entity_results.splinters, \
- &entity_results.field28, \
- &entity_results.field29, \
- &entity_results.field30, \
- &entity_results.field31, \
- &entity_results.field32, \
- &entity_results.field33, \
- &entity_results.field34, \
- &entity_results.saturation, \
-}
-// clang-format on
-typedef struct {
- int team; // friend or enemy
- char *name;
- int exp;
- float field4;
- int gold;
- float field6;
- char *field7;
- char *gear; // rares, sets, syngs, orbs
- int field9;
- char *items; // regular items
- int field11;
- int field12;
- float field13;
- float field14; // some multiplier most likely exp/gold/psycho/something else idk
- float field15;
- int level;
- double field17;
- float field18;
- int field19;
- int field20;
- float field21;
- float field22;
- int field23;
- int field24;
- int psycho;
- char *drifs;
- int splinters;
- int field28;
- char *field29;
- int field30;
- int field31;
- int field32;
- int field33;
- char *field34;
- char *saturation;
-} EntityResults;
-
-// items/gear/drifs fields parsing info
-#define INIT_ITEMS_CAPACITY 8
-#define SINGLE_ITEM_BUFFER_LEN 128
-#define SEPARATOR_ITEMS "[-]"
-#define SEPARATOR_DRIFS "???" // TODO: change it to correct one which idk at this moment
-#define SEPARATOR_GEARS "???" // TODO: change it to correct one which idk at this moment
-// Item struct - for keeping item string and type
-typedef enum { NORMAL, DRIF, ORB, SYNG, SET, RARE, EPIC } ItemType;
-typedef struct {
- char *data;
- ItemType type;
-} Item;
-
-// Drif structure:
-// field (SEPARATOR_DRIF_FIELDS field)*
-// fields are defined in order in the Drif struct
-#define DRIF_FIELD_COUNT 18
-#define SEPARATOR_DRIF_FIELDS ","
-// clang-format off
-#define DRIF_FIELD_TYPES { \
- /* field1 */ STRING, \
- /* field2 */ INT, \
- /* size */ INT, \
- /* field4 */ STRING, \
- /* field5 */ INT, \
- /* id */ INT, \
- /* value1 */ FLOAT, \
- /* value2 */ FLOAT, \
- /* field9 */ INT, \
- /* field10 */ INT, \
- /* field11 */ STRING, \
- /* size_str */ STRING, \
- /* field13 */ INT, \
- /* power */ INT, \
- /* field15 */ INT, \
- /* field16 */ INT, \
- /* name */ STRING, \
- /* field18 */ STRING, \
-}
-#define DRIF_FIELD_ADDRESSES(drif) {\
- &drif.field1, \
- &drif.field2, \
- &drif.size, \
- &drif.field4, \
- &drif.field5, \
- &drif.id, \
- &drif.value1, \
- &drif.value2, \
- &drif.field9, \
- &drif.field10, \
- &drif.field11, \
- &drif.size_str, \
- &drif.field13, \
- &drif.power, \
- &drif.field15, \
- &drif.field16, \
- &drif.name, \
- &drif.field18, \
-}
-// clang-format on
-typedef struct {
- char *field1; // just says "drif"
- int field2;
- int size; // 1 - sub, 2 - bi, 3 - magni, 4 - arcy
- char *field4;
- int field5;
- int id; // id of orb type
- float value1; // value1, value2 (in %) - one is start value, the other is value per lvl (both are the same)
- float value2; // value1, value2 (in %) - one is start value, the other is value per lvl (both are the same)
- int field9;
- int field10;
- char *field11;
- char *size_str; // sub - small, medium - bi, big - magni, ??? - arcy
- int field13;
- int power; // how much space it takes
- int field15;
- int field16;
- char *name; // <size>drif <name>
- char *field18;
-} Drif;
-
-// Gear structure:
-// field (SEPARATOR_GEAR_FIELDS field)*
-// fields are defined in order in the Gear struct
-#define GEAR_FIELD_COUNT 19
-#define SEPARATOR_GEAR_FIELDS "$"
-// values of field "type" in Gear
-#define TYPE_SYNG_NORMAL 0
-#define TYPE_SET 1
-#define TYPE_RARE 2
-// clang-format off
-#define GEAR_FIELD_TYPES { \
- /* stats */ STRING, \
- /* resistances */ STRING, \
- /* info */ STRING, \
- /* reqs */ STRING, \
- /* field5 */ STRING, \
- /* psycho */ STRING, \
- /* field7 */ STRING, \
- /* field8 */ STRING, \
- /* field9 */ STRING, \
- /* syng_tier */ STRING, \
- /* field11 */ INT, \
- /* field12 */ INT, \
- /* field13 */ INT, \
- /* field14 */ STRING, \
- /* type */ INT, \
- /* field16 */ INT, \
- /* orb */ STRING, \
- /* field18 */ STRING, \
- /* field19 */ STRING, \
-}
-#define GEAR_FIELD_ADDRESSES(gear) {\
- &gear.stats, \
- &gear.resistances, \
- &gear.info, \
- &gear.reqs, \
- &gear.field5, \
- &gear.psycho, \
- &gear.field7, \
- &gear.field8, \
- &gear.field9, \
- &gear.syng_tier, \
- &gear.field11, \
- &gear.field12, \
- &gear.field13, \
- &gear.field14, \
- &gear.type, \
- &gear.field16, \
- &gear.orb, \
- &gear.field18, \
- &gear.field19, \
-}
-// clang-format on
-typedef struct {
- char *stats; // strength, dexterity, power, knowledge, hp, mana, stamina
- char *resistances; // slashing, crushing, piercing, fire, cold, energy, mental
- char *info; // GearInfo struct data
- char *reqs; // requirements (str, dex, pow, know), weight, something else
- char *field5;
- char *psycho; // psycho effects (id,%) for syngs
- char *field7;
- char *field8;
- char *field9;
- char *syng_tier; // lvl 20 - 1, lvl 30 - 2, etc..., null for non-syngs
- int field11;
- int field12;
- int field13;
- char *field14;
- int type; // 0 - normal item or syng, 1 - set, 2 - rare
- int field16; // 10 for rare, -1 for others ???
- char *orb; // orb info
- char *field18;
- char *field19;
-} Gear;
-
-// GearInfo structure:
-// field (SEPARATOR_GEAR_INFO_FIELDS field)*
-// fields are defined in order in the GearInfo struct
-#define GEAR_INFO_FIELD_COUNT 23
-#define SEPARATOR_GEAR_INFO_FIELDS ","
-// clang-format off
-#define GEAR_INFO_FIELD_TYPES { \
- /* name */ STRING, \
- /* field2 */ INT, \
- /* lvl */ INT, \
- /* price */ INT, \
- /* field5 */ INT, \
- /* field6 */ INT, \
- /* field7 */ INT, \
- /* rank */ INT, \
- /* field9 */ INT, \
- /* field10 */ INT, \
- /* field11 */ INT, \
- /* durability */ INT, \
- /* field13 */ STRING, \
- /* field14 */ INT, \
- /* field15 */ INT, \
- /* charges */ FLOAT, \
- /* field17 */ STRING, \
- /* field18 */ INT, \
- /* stars */ INT, \
- /* field20 */ INT, \
- /* field21 */ INT, \
- /* field22 */ INT, \
- /* field23 */ INT, \
-}
-#define GEAR_INFO_FIELD_ADDRESSES(gear_info) {\
- &gear_info.name, \
- &gear_info.field2, \
- &gear_info.lvl, \
- &gear_info.price, \
- &gear_info.field5, \
- &gear_info.field6, \
- &gear_info.field7, \
- &gear_info.rank, \
- &gear_info.field9, \
- &gear_info.field10, \
- &gear_info.field11, \
- &gear_info.durability, \
- &gear_info.field13, \
- &gear_info.field14, \
- &gear_info.field15, \
- &gear_info.charges, \
- &gear_info.field17, \
- &gear_info.field18, \
- &gear_info.stars, \
- &gear_info.field20, \
- &gear_info.field21, \
- &gear_info.field22, \
- &gear_info.field23, \
-}
-// clang-format on
-typedef struct {
- char *name; // item name
- int field2;
- int lvl; // level requirement
- int price; // gold price value
- int field5;
- int field6;
- int field7;
- int rank; // I-XII
- int field9;
- int field10;
- int field11;
- int durability; // in %
- char *field13;
- int field14;
- int field15;
- float charges; // charge count
- char *field17;
- int field18;
- int stars; // incrustation level: 0 - b1, 1 - b2, ... (-100 for syngs)
- int field20;
- int field21;
- int field22;
- int field23;
-} GearInfo;
-
-// Orb structure:
-// field (SEPARATOR_ORB_FIELDS field)*
-// fields are defined in order in the Orb struct
-#define ORB_FIELD_COUNT 9
-#define SEPARATOR_ORB_FIELDS ","
-// clang-format off
-#define ORB_FIELD_TYPES { \
- /* field1 */ STRING, \
- /* field2 */ INT, \
- /* field3 */ INT, \
- /* field4 */ STRING, \
- /* field5 */ INT, \
- /* id */ INT, \
- /* size */ INT, \
- /* value */ FLOAT, \
- /* field9 */ STRING, \
-}
-#define ORB_FIELD_ADDRESSES(orb) {\
- &orb.field1, \
- &orb.field2, \
- &orb.field3, \
- &orb.field4, \
- &orb.field5, \
- &orb.id, \
- &orb.size, \
- &orb.value, \
- &orb.field9, \
-}
-// clang-format on
-typedef struct {
- char *field1; // just says "orb"
- int field2;
- int field3;
- char *field4;
- int field5;
- int id; // id of orb type
- int size; // 1 - sub, 2 - bi, 3 - magni, 4 - arcy
- float value; // value in % you gain from the orb
- char *field9;
-} Orb;
-
-// fight results data for friendly
-typedef struct {
- char *name;
- int exp;
- int gold;
- Item *items;
- size_t num_items;
- int level;
- int psycho;
- int splinters;
- char *saturation_type;
- int saturation;
-} FriendlyResults;
-
-// fight results data for enemy
-typedef struct {
- char *name;
- int level;
-} EnemyResults;
-
-#define MAX_ENTITIES_PER_SIDE 8
-
-// entire fight resutls
-typedef struct {
- size_t num_friendly;
- FriendlyResults friendly_results[MAX_ENTITIES_PER_SIDE];
- size_t num_enemy;
- EnemyResults enemy_results[MAX_ENTITIES_PER_SIDE];
-} FightResults;
-
-extern find_function_t find_fight_results;
-extern parse_function_t parse_fight_results;
-
-#endif