mirror of
https://github.com/nillerusr/source-engine.git
synced 2025-03-13 06:01:53 +00:00
103 lines
3.1 KiB
C++
103 lines
3.1 KiB
C++
#ifndef _DEFINED_C_ASW_HACK_WIRE_TILE
|
|
#define _DEFINED_C_ASW_HACK_WIRE_TILE
|
|
|
|
#include "c_asw_hack.h"
|
|
#include <vgui_controls/PHandle.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)
|
|
|
|
class CASW_VGUI_Frame;
|
|
|
|
class C_ASW_Hack_Wire_Tile : public C_ASW_Hack
|
|
{
|
|
public:
|
|
C_ASW_Hack_Wire_Tile();
|
|
virtual ~C_ASW_Hack_Wire_Tile();
|
|
|
|
DECLARE_CLASS( C_ASW_Hack_Wire_Tile, C_ASW_Hack );
|
|
DECLARE_CLIENTCLASS();
|
|
DECLARE_PREDICTABLE();
|
|
|
|
bool ShouldPredict();
|
|
void ClickedNode(int iNodeNum, bool bRightSide);
|
|
|
|
void SetTileRotation(int iWire, int x, int y, int iRotation);
|
|
void SetTileRotation(int iWire, int iTileIndex, int iRotation);
|
|
|
|
void UpdateLitTiles(int iWire);
|
|
void SetTileLit(int iWire, int x, int y, bool bLit);
|
|
void SetTileLit(int iWire, int iTileIndex, bool bLit);
|
|
|
|
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 InitLockedTiles();
|
|
void SetTileLocked(int iWire, int iTileIndex, int iLocked);
|
|
int GetTileLocked(int iWire, int iTileIndex);
|
|
int m_iTileLocked[4][ASW_TILE_ARRAY_SIZE];
|
|
void CycleRows();
|
|
float m_fNextLockCycleTime;
|
|
|
|
void OnDataChanged( DataUpdateType_t updateType );
|
|
void ClientThink();
|
|
virtual void FrameDeleted(vgui::Panel *pPanel);
|
|
|
|
// 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();
|
|
|
|
vgui::DHANDLE<CASW_VGUI_Frame> m_hFrame;
|
|
|
|
float m_fFastFinishTime;
|
|
float m_fStartedHackTime;
|
|
float m_fFinishedHackTime;
|
|
|
|
int m_iTempPredictedTilePosition[4][ASW_TILE_ARRAY_SIZE];
|
|
int m_iTempPredictedTileLit[4][ASW_TILE_ARRAY_SIZE];
|
|
float m_iTempPredictedTilePositionTime[4][ASW_TILE_ARRAY_SIZE];
|
|
float m_iTempPredictedTileLitTime[4][ASW_TILE_ARRAY_SIZE];
|
|
|
|
private:
|
|
bool m_bLaunchedHackPanel;
|
|
|
|
C_ASW_Hack_Wire_Tile( const C_ASW_Hack_Wire_Tile & ); // not defined, not accessible
|
|
};
|
|
|
|
enum
|
|
{
|
|
ASW_WIRE_TILE_HORIZ = 0,
|
|
ASW_WIRE_TILE_LEFT,
|
|
ASW_WIRE_TILE_RIGHT,
|
|
};
|
|
|
|
#endif /* _DEFINED_C_ASW_HACK_WIRE_TILE */ |