#include "stdafx.h"

typedef enum {
	fill = 150 // 150
};

enum loadConfig{
	CONFIGS_DVAR,
	CONFIGS_INFECTALL,
	CONFIGS_COHOST,
	CONFIGS_VIP
} loadConfig;

typedef enum {
	TEAM_FREE,
	TEAM_AXIS,
	TEAM_ALLIES,
	TEAM_SPECTATOR,
	TEAM_NUM_TEAMS
} team_t;

typedef enum {
	Settings_Timescale,
	Settings_Speedscale,
	Settings_Jumpheight,
	Settings_Forest_Trees,
	Settings_partyMax
} settings;



typedef enum {
	RT = 0x100,
	RS = 0x400,
	X = 0x2000,
	PRONE = 0x10000,
	CROUCH = 0x20000,
	A = 0x40000,
	RB = 0x400000,
	LB = 0x800000,
	LT = 0x8080000,
} buttons_t;

typedef enum {
	_UNVERIFIED,
	_VERIFIED,
	_HOST,
	_COHOST,
	_VIP
} menu_status_t;

enum Shaders_num
{
    Shaders = 7,
	Main = 0,
	Bottom = 1,
	Bottom_top = 2,
	Right = 3,
	Scrollbar = 4,
	Break1 = 5,
	Break2 = 6
};

enum Text_num
{
    Texts = 3,
	Title = 0,
	Controls = 1,
	Info = 2
};

enum Options_num
{
    Options_cnt = 15

};

struct usercmd_s
{
	int ServerTime;
	int Buttons;
	char Weapon;
	char OffHandIndex;
	char Padding[2];
	int Angle[3];
	char Unknown_data[0x10];
};

typedef enum {
	SESS_STATE_PLAYING,
	SESS_STATE_DEAD,
	SESS_STATE_SPECTATOR,
	SESS_STATE_INTERMISSION
} sessionState_t;

typedef enum {
	CON_DISCONNECTED,
	CON_CONNECTING,
	CON_CONNECTED
} clientConnected_t;

struct clientState_s
{
        int unknown;
        team_t team;
        char unknown_data[0x84];
};

struct playerState_s
{
        int commandTime;
		int Notsure;
		int Weird;
		int WeirdView;
		int eFlags;
		int NotSure2;
		char UnknownData2[4];
		float Origin[3];
		float Velocity[3];
        char unknown_data3[0x315C];
};

struct clientSession_t
{
		sessionState_t sessionState;
		int ClientNum;
		int Score;
		int Deaths;
		int Kills;
		int Assists;
		short ActiveScripts;
		char Padding[2];
		clientConnected_t Connect;
		usercmd_s cmd;
		usercmd_s oldcmd;
		int IsLocalClient;
		int UnknownInt;
		char Name[32];
		int MaxHealth;
		int EnterTime;
		char Unknown_Data[0xC];
		float moveSpeedScaleMultiplier;
		int ViewModelIndex;
        char unknown_data[0x10];
        clientState_s _cs;
        char unknown_data5[0x14C];
};

struct gclient_s
{
	playerState_s ps;
	clientSession_t sess;
    char UnKnowData[0x10];
    int buttons;
};
 
struct gentity_s
{
    char unknown_data[0x158];
    gclient_s *clientData;
};

struct XenonUserData
{
        int signInState;
        char name[0x20];
};

typedef enum {
	SV_CMD_CAN_IGNORE,
    SV_CMD_RELIABLE
} svscmd_type;

typedef enum {
	MENU_MAIN,
	MENU_ACCOUNT,
	MENU_INFECTIONS,
	MENU_WEAPONS,
	MENU_VISIONS,
	MENU_MODELS,
	MENU_PERKS,
	MENU_FUN,
	MENU_VIP,
    MENU_PLAYERS,
	MENU_COHOST,
	MENU_HOST,
	MENU_PLAYERSLIST,
	MENU_PLAYERSOPTIONS,
	MENU_PRESTIGES,
	MENU_GSETTINGS,
	MENU_GAMETYPES,
	MENU_INFECTIONS_VIEW,
	MENU_CLANTAG
} Current_Menu_t;

typedef enum
{
	TOP_RIGHT = 0xA8,
	TOPLEFT = 0x88,
	TOP_CENTERED = 0x78,            
	BOTTOM_RIGHT = 0xAA,          
	BOTTOM_LEFT = 0x8A,        
	BOTTOM_CENTER = 0x9A,       
	CENTER_MIDDLE = 0x92,        
	CENTER_LEFT = 0x82,         
	CENTER_RIGHT = 0xA2
};

struct Bots
{
   int clientNum;
};
 

    typedef enum _XNotifyUITypes : DWORD { 
            XNOTIFYUI_TYPE_FRIENDONLINE = 0, 
            XNOTIFYUI_TYPE_GAMEINVITE = 1, 
            XNOTIFYUI_TYPE_FRIENDREQUEST = 2, 
            XNOTIFYUI_TYPE_GENERIC = 3, 
            XNOTIFYUI_TYPE_MULTIPENDING = 4, 
            XNOTIFYUI_TYPE_PERSONALMESSAGE = 5, 
            XNOTIFYUI_TYPE_SIGNEDOUT = 6, 
            XNOTIFYUI_TYPE_SIGNEDIN = 7, 
            XNOTIFYUI_TYPE_SIGNEDINLIVE = 8, 
            XNOTIFYUI_TYPE_SIGNEDINNEEDPASS = 9, 
            XNOTIFYUI_TYPE_CHATREQUEST = 10, 
            XNOTIFYUI_TYPE_CONNECTIONLOST = 11, 
            XNOTIFYUI_TYPE_DOWNLOADCOMPLETE = 12, 
            XNOTIFYUI_TYPE_SONGPLAYING = 13, 
            XNOTIFYUI_TYPE_PREFERRED_REVIEW = 14, 
            XNOTIFYUI_TYPE_AVOID_REVIEW = 15, 
            XNOTIFYUI_TYPE_COMPLAINT = 16, 
            XNOTIFYUI_TYPE_CHATCALLBACK = 17, 
            XNOTIFYUI_TYPE_REMOVEDMU = 18, 
            XNOTIFYUI_TYPE_REMOVEDGAMEPAD = 19, 
            XNOTIFYUI_TYPE_CHATJOIN = 20, 
            XNOTIFYUI_TYPE_CHATLEAVE = 21, 
            XNOTIFYUI_TYPE_GAMEINVITESENT = 22, 
            XNOTIFYUI_TYPE_CANCELPERSISTENT = 23, 
            XNOTIFYUI_TYPE_CHATCALLBACKSENT = 24, 
            XNOTIFYUI_TYPE_MULTIFRIENDONLINE = 25, 
            XNOTIFYUI_TYPE_ONEFRIENDONLINE = 26, 
            XNOTIFYUI_TYPE_ACHIEVEMENT = 27, 
            XNOTIFYUI_TYPE_HYBRIDDISC = 28, 
            XNOTIFYUI_TYPE_MAILBOX = 29, 
            XNOTIFYUI_TYPE_VIDEOCHATINVITE = 30, 
            XNOTIFYUI_TYPE_DOWNLOADCOMPLETEDREADYTOPLAY = 31, 
            XNOTIFYUI_TYPE_CANNOTDOWNLOAD = 32, 
            XNOTIFYUI_TYPE_DOWNLOADSTOPPED = 33, 
             XNOTIFYUI_TYPE_CONSOLEMESSAGE = 34, 
            XNOTIFYUI_TYPE_GAMEMESSAGE = 35, 
            XNOTIFYUI_TYPE_DEVICEFULL = 36, 
            XNOTIFYUI_TYPE_CHATMESSAGE = 38, 
            XNOTIFYUI_TYPE_MULTIACHIEVEMENTS = 39, 
            XNOTIFYUI_TYPE_NUDGE = 40, 
            XNOTIFYUI_TYPE_MESSENGERCONNECTIONLOST = 41, 
            XNOTIFYUI_TYPE_MESSENGERSIGNINFAILED = 43, 
            XNOTIFYUI_TYPE_MESSENGERCONVERSATIONMISSED = 44, 
            XNOTIFYUI_TYPE_FAMILYTIMERREMAINING = 45, 
            XNOTIFYUI_TYPE_CONNECTIONLOSTRECONNECT = 46, 
            XNOTIFYUI_TYPE_EXCESSIVEPLAYTIME = 47, 
            XNOTIFYUI_TYPE_PARTYJOINREQUEST = 49, 
            XNOTIFYUI_TYPE_PARTYINVITESENT = 50, 
            XNOTIFYUI_TYPE_PARTYGAMEINVITESENT = 51, 
             XNOTIFYUI_TYPE_PARTYKICKED = 52, 
            XNOTIFYUI_TYPE_PARTYDISCONNECTED = 53, 
            XNOTIFYUI_TYPE_PARTYCANNOTCONNECT = 56, 
            XNOTIFYUI_TYPE_PARTYSOMEONEJOINED = 57, 
            XNOTIFYUI_TYPE_PARTYSOMEONELEFT = 58, 
            XNOTIFYUI_TYPE_GAMERPICTUREUNLOCKED = 59, 
            XNOTIFYUI_TYPE_AVATARAWARDUNLOCKED = 60, 
            XNOTIFYUI_TYPE_PARTYJOINED = 61, 
            XNOTIFYUI_TYPE_REMOVEDUSB = 62, 
            XNOTIFYUI_TYPE_PLAYERMUTED = 63, 
            XNOTIFYUI_TYPE_PLAYERUNMUTED = 64, 
            XNOTIFYUI_TYPE_CHATMESSAGE2 = 65, 
            XNOTIFYUI_TYPE_KINECTCONNECTED = 66, 
            XNOTIFYUI_TYPE_KINECTBREAK = 67, 
             XNOTIFYUI_TYPE_ETHERNET = 68, 
            XNOTIFYUI_TYPE_KINECTPLAYERRECOGNIZED = 69, 
            XNOTIFYUI_TYPE_CONSOLESHUTTINGDOWNSOONALERT = 70, 
            XNOTIFYUI_TYPE_PROFILESIGNEDINELSEWHERE = 71, 
            XNOTIFYUI_TYPE_LASTSIGNINELSEWHERE = 73, 
            XNOTIFYUI_TYPE_KINECTDEVICEUNSUPPORTED = 74, 
            XNOTIFYUI_TYPE_WIRELESSDEVICETURNOFF = 75, 
            XNOTIFYUI_TYPE_UPDATING = 76, 
            XNOTIFYUI_TYPE_SMARTGLASSAVAILABLE = 77 
        } XNotifyUITypes;

enum color_t
{
    Red = 0,
    Green = 1,
    Yellow = 2,
    Blue = 3,
    Cyan = 4,
    Pink = 5,
    White = 6,
    Default = 7,
    Unknown = 8,
    Black = 9,
};

struct hudelem_color_t
{
byte r;
byte g;
byte b;
byte a;
};
 
struct hudelem_s
{
int type;                     // 0x00-0x04
float y;                      // 0x04-0x08
float x;                      // 0x08-0x0C
float z;                      // 0x0C-0x10
int targetEntNum;             // 0x10-0x14
float fontScale;              // 0x14-0x18
float fromFontScale;          // 0x18-0x1C
int fontScaleStartTime;       // 0x1C-0x20
int fontScaleTime;            // 0x20-0x24
int label;                    // 0x24-0x28
int font;                     // 0x28-0x2C
int alignOrg;                 // 0x2C-0x30
int alignScreen;              // 0x30-0x34
hudelem_color_t color;        // 0x34-0x38
hudelem_color_t fromColor;    // 0x38-0x3C
int fadeStartTime;            // 0x3C-0x40
int fadeTime;                 // 0x40-0x44
int height;                   // 0x44-0x48
int width;                    // 0x48-0x4C
int materialIndex;            // 0x4C-0x50
int fromHeight;               // 0x50-0x54
int fromWidth;                // 0x54-0x58
int scaleStartTime;           // 0x58-0x5C
int scaleTime;                // 0x5C-0x60
float fromY;                  // 0x60-0x64
float fromX;                  // 0x64-0x68
int fromAlignOrg;             // 0x68-0x6C
int fromAlignScreen;          // 0x6C-0x70
int moveStartTime;            // 0x70-0x74
int moveTime;                 // 0x74-0x78
float value;                  // 0x78-0x7C
int time;                     // 0x7C-0x80
int duration;                 // 0x80-0x84
int text;                     // 0x84-0x88
float sort;                   // 0x88-0x8C
hudelem_color_t glowColor;    // 0x8C-0x90
int fxBirthTime;              // 0x90-0x94
int fxLetterTime;             // 0x94-0x98
int fxDecayStartTime;         // 0x98-0x9C
int fxDecayDuration;          // 0x9C-0xA0
int soundID;                  // 0xA0-0xA4
int flags;                    // 0xA4-0xA8
};
 
struct game_hudelem_s
{
hudelem_s elem;               // 0x00-0xA8
int clientNum;                // 0xA8-0xAC
int teamNum;                  // 0xAC-0xB0
int archived;                 // 0xB0-0xB4
};
 

typedef struct scr_entref_t
{
 short entnum;
 short classnum;
} scr_entref_t;

typedef enum weapFireType_t
{
Full_Auto,
Single_Shot,
Round_Burst2,
Round_Burst3,
Round_Burst4,
StackedFire,
};
 
typedef enum weapType_t
{
Bullet,
Grenade,
Projectile,
Binoculars,
Num
};
 
typedef enum penetrateType
{
none,
small,
medium,
large
};