2016-02-05 23:14:27 -05:00
|
|
|
#pragma once
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "BaseControlDevice.h"
|
|
|
|
|
2016-06-22 19:23:08 -04:00
|
|
|
struct ZapperButtonState
|
|
|
|
{
|
|
|
|
bool TriggerPressed = false;
|
|
|
|
bool LightNotDetected = false;
|
|
|
|
|
|
|
|
uint8_t ToByte()
|
|
|
|
{
|
|
|
|
return (LightNotDetected ? 0x08 : 0x00) | (TriggerPressed ? 0x10 : 0x00);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2016-02-05 23:14:27 -05:00
|
|
|
class Zapper : public BaseControlDevice
|
|
|
|
{
|
|
|
|
private:
|
2016-07-30 17:27:14 -04:00
|
|
|
bool _pulled = false;
|
|
|
|
int32_t _xPosition = -1;
|
|
|
|
int32_t _yPosition = -1;
|
2016-02-05 23:14:27 -05:00
|
|
|
|
|
|
|
protected:
|
2016-12-17 23:14:47 -05:00
|
|
|
virtual uint8_t RefreshState() override;
|
|
|
|
uint8_t ProcessNetPlayState(uint32_t netplayState) override;
|
|
|
|
void StreamState(bool saving) override;
|
2016-06-22 19:23:08 -04:00
|
|
|
ZapperButtonState GetZapperState();
|
2016-02-05 23:14:27 -05:00
|
|
|
|
|
|
|
public:
|
|
|
|
using BaseControlDevice::BaseControlDevice;
|
|
|
|
|
2016-12-17 23:14:47 -05:00
|
|
|
virtual uint8_t GetPortOutput() override;
|
2016-02-05 23:14:27 -05:00
|
|
|
|
2016-12-17 23:14:47 -05:00
|
|
|
virtual uint32_t GetNetPlayState() override;
|
2016-02-05 23:14:27 -05:00
|
|
|
};
|