#pragma once // TODO: check this enum eSurfaceType { SURFACE_DEFAULT, SURFACE_TARMAC, SURFACE_GRASS, SURFACE_DIRT, SURFACE_DIRTTRACK, SURFACE_PAVEMENT, SURFACE_METAL6, SURFACE_GLASS, SURFACE_SCAFFOLD, SURFACE_METAL_DOOR, // garage door SURFACE_BILLBOARD, SURFACE_STEEL, //? SURFACE_METAL_POLE, // ? SURFACE_STREET_LIGHT, SURFACE_METAL14, SURFACE_METAL15, SURFACE_METAL_FENCE, SURFACE_FLESH, SURFACE_SAND, SURFACE_PUDDLE, SURFACE_WOOD, SURFACE_WOOD_BOX, SURFACE_WOOD_PLANK, SURFACE_TIRE, SURFACE_HARD24, SURFACE_HEDGE, SURFACE_STONE, SURFACE_METAL27, SURFACE_METAL28, SURFACE_RUBBER29, SURFACE_LOOSE30, SURFACE_BOLLARD, SURFACE_GATE, // These are illegal SURFACE_SAND33, SURFACE_ROAD34, }; enum { ADHESIVE_RUBBER, ADHESIVE_HARD, ADHESIVE_ROAD, ADHESIVE_LOOSE, ADHESIVE_WET, NUMADHESIVEGROUPS }; struct CColPoint; class CSurfaceTable { static float ms_aAdhesiveLimitTable[NUMADHESIVEGROUPS][NUMADHESIVEGROUPS]; public: static void Initialise(Const char *filename); static int GetAdhesionGroup(uint8 surfaceType); static float GetWetMultiplier(uint8 surfaceType); static float GetAdhesiveLimit(CColPoint &colpoint); };