Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
175 lines
6.9 KiB
C++
175 lines
6.9 KiB
C++
#ifndef DSSCLIENT_H
|
|
#define DSSCLIENT_H
|
|
// DSSCLIENT.H
|
|
//
|
|
// Application-level constants and data structure definitions for DSS applications
|
|
// on the broadcast PC platform.
|
|
//
|
|
// Copyright (c) 1996 - 1997 Microsoft Corp
|
|
// All rights reserved.
|
|
|
|
// Upper edge events
|
|
|
|
typedef double NDCDATE; // from WTYPES.H
|
|
|
|
// Upper edge purchase details
|
|
|
|
typedef struct BPCDetails {
|
|
SHORT iChannel; // channel number. Might not be in tunable range
|
|
NDCDATE tStartTime; // starting time
|
|
NDCDATE tExpiry; // from HPO as two fields (for offers only)
|
|
LONG lDuration; // program item duration in seconds
|
|
LONG iItemID; // provider-supplied item identifier
|
|
LONG iLocation; // for DSS, is transponder of PIP
|
|
LONG lUserId; // for DSS, is CAM ID (history use, only)
|
|
LONG iStorageId; // provider-specific storage identifier
|
|
BSTR szTitle; // title.
|
|
LONG iRating; // event rating
|
|
BSTR szYear; // item year as string for UI
|
|
BSTR szDescription; // Description string
|
|
CURRENCY ViewCost; // event cost in units of smallest currency
|
|
CURRENCY TapeCost; // event cost to tape
|
|
PURCHASEACTION iAction; // Action/Status of item (see below)
|
|
LONG lStatus; // bitmask indicator of item status
|
|
LONG iReason; // explanation for service denial/error
|
|
BSTR szReason; // text expression of iReason
|
|
BSTR rgbCwpBuffer; // storage for encrypted cwp (DSS)
|
|
#ifdef __cplusplus
|
|
inline BPCDetails() {
|
|
memset(this, 0, sizeof(*this));
|
|
iRating = -1; // make sure we know this didn't come from verifier
|
|
}
|
|
inline BPCDetails(const BPCDetails &det) {
|
|
// shallow copy everything
|
|
memcpy(this, &det, sizeof(*this));
|
|
// deep copy the allocated structures
|
|
if (det.szDescription) szDescription = ::SysAllocString(det.szDescription);
|
|
if (det.szYear) szYear = ::SysAllocString(det.szYear);
|
|
if (det.szTitle) szTitle = ::SysAllocString(det.szTitle);
|
|
if (det.szReason) szReason = ::SysAllocString(det.szReason);
|
|
if (det.rgbCwpBuffer) rgbCwpBuffer = ::SysAllocString(det.rgbCwpBuffer);
|
|
}
|
|
inline ~BPCDetails() {
|
|
if (szDescription) ::SysFreeString(szDescription);
|
|
if (szYear) ::SysFreeString(szYear);
|
|
if (szTitle) ::SysFreeString(szTitle);
|
|
if (szReason) ::SysFreeString(szReason);
|
|
if (rgbCwpBuffer) ::SysFreeString(rgbCwpBuffer);
|
|
#ifdef _DEBUG
|
|
memset(this, 0, sizeof(*this));
|
|
#endif
|
|
}
|
|
inline BPCDetails &operator=(const BPCDetails &det) {
|
|
if (this != &det) {
|
|
// shallow copy everything
|
|
memcpy(this, &det, sizeof(*this));
|
|
// deep copy the allocated structures
|
|
if (det.szDescription) szDescription = ::SysAllocString(det.szDescription);
|
|
if (det.szYear) szYear = ::SysAllocString(det.szYear);
|
|
if (det.szTitle) szTitle = ::SysAllocString(det.szTitle);
|
|
if (det.szReason) szReason = ::SysAllocString(det.szReason);
|
|
if (det.rgbCwpBuffer) rgbCwpBuffer = ::SysAllocString(det.rgbCwpBuffer);
|
|
}
|
|
return *this;
|
|
}
|
|
inline bool operator==(const BPCDetails &det) const {
|
|
return (iItemID == det.iItemID && iStorageId == det.iStorageId);
|
|
}
|
|
inline bool operator!=(const BPCDetails &det) const {
|
|
return !(det == *this);
|
|
}
|
|
inline bool operator<(const BPCDetails &det) const {
|
|
return (iItemID < det.iItemID || (iItemID == det.iItemID && iStorageId < det.iStorageId));
|
|
}
|
|
inline bool operator>(const BPCDetails &det) const {
|
|
return (iItemID > det.iItemID || (iItemID == det.iItemID && iStorageId > det.iStorageId));
|
|
}
|
|
|
|
#endif
|
|
} BPCDETAILS, *LPBPCDETAILS;
|
|
|
|
typedef struct ProviderMsg {
|
|
LONG iMsgId; // used for association
|
|
BOOL fIsRead; // nonzero if read by user
|
|
LONG lUserId; // for DSS is 4 byte CAM ID
|
|
NDCDATE odDateTimeStamp; // OLE DATE type
|
|
NDCDATE odExpiry; // OLE DATE type
|
|
BSTR szTitle; // may not be null for tombstone
|
|
BSTR szMessageText; // if null, is tombstone
|
|
#ifdef __cplusplus
|
|
inline ProviderMsg() {
|
|
memset(this, 0, sizeof(*this));
|
|
}
|
|
inline ProviderMsg(const ProviderMsg &msg) {
|
|
// shallow copy everything
|
|
memcpy(this, &msg, sizeof(*this));
|
|
// deep copy the allocated structures
|
|
if (msg.szTitle) szTitle = ::SysAllocString(msg.szTitle);
|
|
if (msg.szMessageText) szMessageText = ::SysAllocString(msg.szMessageText);
|
|
}
|
|
inline ~ProviderMsg() {
|
|
if (szTitle) ::SysFreeString(szTitle);
|
|
if (szMessageText) ::SysFreeString(szMessageText);
|
|
#ifdef _DEBUG
|
|
memset(this, 0, sizeof(*this));
|
|
#endif
|
|
}
|
|
inline ProviderMsg &operator=(const ProviderMsg &msg) {
|
|
if (this != &msg) {
|
|
// shallow copy everything
|
|
memcpy(this, &msg, sizeof(*this));
|
|
// deep copy the allocated structures
|
|
if (msg.szTitle) szTitle = ::SysAllocString(msg.szTitle);
|
|
if (msg.szMessageText) szMessageText = ::SysAllocString(msg.szMessageText);
|
|
}
|
|
return *this;
|
|
}
|
|
inline bool operator==(const ProviderMsg &msg) const {
|
|
return (lUserId == msg.lUserId && iMsgId == msg.iMsgId);
|
|
}
|
|
inline bool operator!=(const ProviderMsg &msg) const {
|
|
return !(msg == *this);
|
|
}
|
|
inline bool operator<(const ProviderMsg &msg) const {
|
|
return (lUserId < msg.lUserId || (lUserId == msg.lUserId && iMsgId < msg.iMsgId));
|
|
}
|
|
inline bool operator>(const ProviderMsg &msg) const {
|
|
return (lUserId > msg.lUserId || (lUserId == msg.lUserId && iMsgId > msg.iMsgId));
|
|
}
|
|
|
|
#endif
|
|
} PROVIDERMSG,*LPPROVIDERMSG;
|
|
|
|
typedef struct ExplicitOsd {
|
|
DWORD dwAttributes;
|
|
BSTR bsString;
|
|
#ifdef __cplusplus
|
|
inline ExplicitOsd() { memset(this, 0, sizeof(*this)); }
|
|
inline ExplicitOsd(ExplicitOsd &osd) {
|
|
// shallow copy everything
|
|
memcpy(this, &osd, sizeof(*this));
|
|
// deep copy the allocated structures
|
|
if (osd.bsString) bsString = ::SysAllocString(osd.bsString);
|
|
}
|
|
inline ~ExplicitOsd() {
|
|
if (bsString) ::SysFreeString(bsString);
|
|
#ifdef _DEBUG
|
|
memset(this, 0, sizeof(*this));
|
|
#endif
|
|
}
|
|
inline ExplicitOsd &operator=(ExplicitOsd &osd) {
|
|
if (this != &osd) {
|
|
// shallow copy everything
|
|
memcpy(this, &osd, sizeof(*this));
|
|
// deep copy the allocated structures
|
|
if (osd.bsString) bsString = ::SysAllocString(osd.bsString);
|
|
}
|
|
return *this;
|
|
}
|
|
#endif
|
|
} EXPLICITOSD,*LPEXPLICITOSD;
|
|
|
|
#endif
|
|
|
|
// End of Source File
|
|
|