Files
scummvm-cursorfix/engines/bagel/spacebar/baglib/rp_object.h
2026-02-02 04:50:13 +01:00

163 lines
5.1 KiB
C++

/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef BAGEL_BAGLIB_RP_OBJECT_H
#define BAGEL_BAGLIB_RP_OBJECT_H
#include "bagel/spacebar/baglib/dossier_object.h"
#include "bagel/spacebar/baglib/expression.h"
#include "bagel/spacebar/baglib/movie_object.h"
#include "bagel/spacebar/baglib/text_object.h"
namespace Bagel {
namespace SpaceBar {
class DossierObj {
public:
DossierObj();
virtual ~DossierObj();
CBagDossierObject *_pDossier;
CBofString _sDossier;
CBagExpression *_xDosExp;
bool _bDisplayDossier;
};
enum RPStates {
RP_NO_MODE = 0,
RP_RESULTS,
RP_READ_DOSSIER,
RP_REVIEW,
RP_MAIN_MENU
};
class CBagRPObject : public CBagObject {
private:
CBofList<DossierObj *> *_pTouchedList; // dossiers to show if alias touched it
CBofList<DossierObj *> *_pUntouchedList; // dossiers to show if alias did not touch it
CBagMovieObject *_pMovieObj; // a movie to play
CBofString _sMovieObj; // Name of movie
CBagVar *_pVarObj; // associated global var
CBagTextObject *_pDescObj; // description of residue printed object
CBagTextObject *_pObjectName; // description of residue printed object
CBofString _sObjectName; // description of residue printed object
CBagVar *_pSaveVar; // Var to save info to
CBagVar *_pTouchedVar; // variable indicating touched or not
int _nRPTime; // time to execute
CBofRect _cOrigRect; // Original text rect
int16 _nCurDossier; // index of current dossier
// member data boolS
bool _bOrigRectInit : true; // Original text initialized
bool _bRPReported : true; // been reported yet?
bool _bResPrinted : true; // been submitted?
bool _bTouched : true; // been touched?
bool _bRPRead : true; // been read
bool _bRPTimeSet : true; // had time residue printing occurred?
bool _bCurVisible : true; // Current one being displayed?
bool _bInitialized : true; // initialization state
bool _bMoviePlayed : true; // Has the movie played yet?
static CBofList<CBagRPObject *> *_pRPList; // all the residue print objects
static int32 _nLastRPQCheck; // last time we surfed the queue.
static CBagVar *_turnCount; // Ptr to turnCount global
static CBagVar *_pLogStateVar; // Ptr to log state global
static CBagVar *_pPrevLogStateVar; // Ptr to prev log state global
static CBagVar *_pBarLogPages; // Ptr to total pages global
static CBagVar *_pPrevBarPage; //
static CBagVar *_pCurBarPage; // current bar page
static CBagRPObject *_pCurRPObject; // Most recent residue print object.
static CBagRPObject *_pActivateThisGuy; // The one we want to activate
static RPStates _eRPMode; // Current state of display
public:
CBagRPObject();
virtual ~CBagRPObject();
ParseCodes setInfo(CBagIfstream &istr) override;
ErrorCode attach() override;
ErrorCode detach() override;
bool runObject() override;
ErrorCode update(CBofBitmap *pBmp, CBofPoint pt, CBofRect *pSrcRect, int) override;
void onLButtonUp(uint32, CBofPoint *, void * = nullptr) override;
void setTouchedDos(CBofString &s, CBagExpression *x);
void setUntouchedDos(CBofString &s, CBagExpression *x);
bool activateRPObject();
void deactivateRPObject();
bool getTimeSet() {
return _bRPTimeSet;
}
void setTimeSet(bool b) {
_bRPTimeSet = b;
}
void evaluateDossiers();
void saveResiduePrintedVars();
void restoreResiduePrintedVars();
bool initialize();
CBagDossierObject *getActiveDossier();
void setActiveDossier(CBagDossierObject *);
static bool addToMsgQueue(CBagRPObject *);
static bool zoomed();
// Command (bagcoobj) objects, activated from script
static int runResiduePrintedQueue();
static int updateResiduePrintedQueue();
static void deactivateResiduePrintedQueue();
static void activateResiduePrintedReview();
static void deactivateResiduePrintedReview();
static void setLogState(RPStates eLogMode);
static RPStates getLogState();
static void setLogPages(int);
static void showResiduePrintedReview();
static void hideResiduePrintedReview();
static int residuePrintedResultsWaiting();
static void removeAllFromMsgQueue(CBagRPObject *pRPObj);
static void showPdaLog();
static void synchronizeResiduePrintedObjects(bool);
};
} // namespace SpaceBar
} // namespace Bagel
#endif