/* 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 . * */ #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 *_pTouchedList; // dossiers to show if alias touched it CBofList *_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 *_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