87 lines
2.9 KiB
C++
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 */ |