sqwarmed/sdk_src/game/server/swarm/asw_hack_wire_tile.h

87 lines
2.9 KiB
C++

#ifndef _DEFINED_ASW_HACK_WIRE_TILE
#define _DEFINED_ASW_HACK_WIRE_TILE
#include "asw_hack.h"
#define ASW_MAX_TILE_COLUMNS 8
#define ASW_MAX_TILE_ROWS 3
#define ASW_TILE_ARRAY_SIZE (ASW_MAX_TILE_COLUMNS*ASW_MAX_TILE_ROWS)
#define ASW_NUM_WIRES 4 // if you change this, change m_iWireXTileType network vars too
class CASW_Hack_Wire_Tile : public CASW_Hack
{
public:
CASW_Hack_Wire_Tile();
DECLARE_CLASS( CASW_Hack_Wire_Tile, CASW_Hack );
DECLARE_SERVERCLASS();
DECLARE_DATADESC();
virtual void ASWPostThink(CASW_Player *pPlayer, CASW_Marine *pMarine, CUserCmd *ucmd, float fDeltaTime);
virtual void SelectHackOption(int i);
virtual bool InitHack(CASW_Player* pHackingPlayer, CASW_Marine* pHackingMarine, CBaseEntity* pHackTarget);
void BuildWirePuzzle();
void BuildWire(int iWire);
void JumbleWire(int iWire);
virtual void OnHackComplete();
CNetworkVar(int, m_iNumColumns);
CNetworkVar(int, m_iNumRows);
CNetworkVar(int, m_iNumWires);
CNetworkArray( int, m_iWire1TileType, ASW_TILE_ARRAY_SIZE );
CNetworkArray( int, m_iWire1TilePosition, ASW_TILE_ARRAY_SIZE );
CNetworkArray( bool, m_iWire1TileLit, ASW_TILE_ARRAY_SIZE );
CNetworkArray( int, m_iWire2TileType, ASW_TILE_ARRAY_SIZE );
CNetworkArray( int, m_iWire2TilePosition, ASW_TILE_ARRAY_SIZE );
CNetworkArray( bool, m_iWire2TileLit, ASW_TILE_ARRAY_SIZE );
CNetworkArray( int, m_iWire3TileType, ASW_TILE_ARRAY_SIZE );
CNetworkArray( int, m_iWire3TilePosition, ASW_TILE_ARRAY_SIZE );
CNetworkArray( bool, m_iWire3TileLit, ASW_TILE_ARRAY_SIZE );
CNetworkArray( int, m_iWire4TileType, ASW_TILE_ARRAY_SIZE );
CNetworkArray( int, m_iWire4TilePosition, ASW_TILE_ARRAY_SIZE );
CNetworkArray( bool, m_iWire4TileLit, ASW_TILE_ARRAY_SIZE );
void SetTileRotation(int iWire, int x, int y, int iRotation);
void SetTileRotation(int iWire, int iTileIndex, int iRotation);
void SetTileType(int iWire, int x, int y, int iType);
void SetTileType(int iWire, int iTileIndex, int iType);
void SetTileLit(int iWire, int x, int y, bool bLit);
void SetTileLit(int iWire, int iTileIndex, bool bLit);
void UpdateLitTiles(int iWire);
// shared functions
bool AllWiresLit();
bool IsWireLit(int iWire);
bool StartTileConnected(int iWire);
bool EndTileConnected(int iWire);
bool TilesConnected(int iWire, int x1, int y1, int x2, int y2);
int GetTileRotation(int iWire, int x, int y);
int GetTileRotation(int iWire, int iTileIndex);
int GetTileType(int iWire, int x, int y);
int GetTileType(int iWire, int iTileIndex);
bool GetTileLit(int iWire, int x, int y);
bool GetTileLit(int iWire, int iTileIndex);
float GetWireCharge();
bool m_bSetupPuzzle;
CNetworkVar(float, m_fFastFinishTime);
bool m_bPlayedTimeOutSound;
CNetworkVar(float, m_fFinishedHackTime);
bool m_bWasWireLit[ ASW_NUM_WIRES ];
};
enum
{
ASW_WIRE_TILE_HORIZ = 0,
ASW_WIRE_TILE_LEFT,
ASW_WIRE_TILE_RIGHT,
};
#endif /* _DEFINED_ASW_HACK_WIRE_TILE */