22#ifndef TITANIC_GAME_OBJECT_H
23#define TITANIC_GAME_OBJECT_H
25#include "audio/mixer.h"
26#include "common/stream.h"
27#include "titanic/core/named_item.h"
28#include "titanic/sound/proximity.h"
29#include "titanic/sound/sound_manager.h"
30#include "titanic/support/mouse_cursor.h"
31#include "titanic/support/credit_text.h"
32#include "titanic/support/movie_range_info.h"
33#include "titanic/support/rect.h"
34#include "titanic/support/strings.h"
35#include "titanic/support/movie_clip.h"
36#include "titanic/pet_control/pet_section.h"
37#include "titanic/gfx/text_control.h"
38#include "titanic/game_state.h"
42enum Find { FIND_GLOBAL = 1, FIND_ROOM = 2, FIND_PET = 4, FIND_MAILMAN = 8 };
43enum Found { FOUND_NONE = 0, FOUND_GLOBAL = 1, FOUND_ROOM = 2, FOUND_PET = 3, FOUND_MAILMAN = 4 };
44enum RoomFlagsComparison { RFC_LOCATION = 1, RFC_CLASS_ELEVATOR = 2, RFC_TITANIA = 3 };
46enum StarControlAction {
52 STAR_VIEW_CONSTELLATIONS,
53 STAR_VIEW_RANDOM_STAR,
55 STAR_TOGGLE_STEREO_PAIR,
56 STAR_TOGGLE_HOME_PHOTO,
57 STAR_TOGGLE_SOLAR_RENDERING,
58 STAR_TOGGLE_POS_FRAME,
69class CDontSaveFileItem;
74class CMouseDragStartMsg;
83 static int _soundHandles[4];
88 void loadResource(
const CString &name);
93 void processMoveRangeInfo();
99 bool clipRect(
const Rect &rect1,
Rect &rect2)
const;
107 byte _toggleR, _toggleG, _toggleB;
114 uint _textBorderRight;
233 int playSound(
const CString &name, uint volume = 100,
int balance = 0,
bool repeated =
false);
308 int addTimer(
int endVal, uint firstDuration, uint repeatDuration);
313 int addTimer(uint firstDuration, uint repeatDuration = 0);
344 bool compareViewNameTo(
const CString &name)
const;
561 bool _handleMouseFlag;
633 bool checkPoint(
const Point &pt,
bool ignoreSurface =
false,
bool visibleOnly =
false);
662 void playMovie(
int startFrame,
int endFrame, uint flags);
667 void playMovie(
int startFrame,
int endFrame,
int initialFrame, uint flags);
857 void sendMail(uint currRoomFlags, uint newRoomFlags);
884 bool petCheckNode(
const CString &name);
SoundType
Definition: mixer.h:73
@ kMusicSoundType
Definition: mixer.h:76
@ kPlainSoundType
Definition: mixer.h:74
Definition: credit_text.h:48
Definition: dont_save_file_item.h:29
Definition: game_object.h:79
void setPassengerClass(PassengerClass newClass)
bool mailExists(uint roomFlags) const
void makeDirty(const Rect &r)
CRoomItem * locateRoom(const CString &name) const
Common::SeekableReadStream * getResource(const CString &name)
void setTextFontNumber(int fontNumber)
bool checkStartDragging(CMouseDragStartMsg *msg)
Point getMousePos() const
void petAddToCarryParcel(CGameObject *obj)
int addTimer(int endVal, uint firstDuration, uint repeatDuration)
CGameObject * findMailByFlags(RoomFlagsComparison compareType, uint roomFlags)
CViewItem * parseView(const CString &viewString)
CGameObject * findRoomObject(const CString &name) const
virtual bool isPet() const
void setTextHasBorders(bool hasBorders)
void talkSetDialRegion(const CString &name, int dialNum, int regionNum)
Found find(const CString &name, CGameObject **item, int findAreas)
void setMailDest(uint roomFlags)
bool playCutscene(uint startFrame, uint endFrame)
void petDisplayMessage(const CString &str, int param=0)
void playMovie(int startFrame, int endFrame, uint flags)
void sendMail(uint currRoomFlags, uint newRoomFlags)
void petDisplayMessage(int unused, StringId stringId)
void setTalking(CTrueTalkNPC *npc, bool viewFlag, CViewItem *view=nullptr)
CMailMan * getMailMan() const
int playSound(const CString &name, uint volume=100, int balance=0, bool repeated=false)
uint getNodeEnterTicks() const
CTextCursor * getTextCursor() const
void mouseEnableControl()
int talkGetDialRegion(const CString &name, int dialNum)
void playMovie(int startFrame, int endFrame, int initialFrame, uint flags)
bool starIsSolved() const
void petSetRoomsWellEntry(int entryNum)
CStarControl * getStarControl() const
CPetControl * getPetControl() const
void petMoveToHiddenRoom()
void loadSound(const CString &name)
int playSound(const CString &name, CProximity &prox)
CGameObject * getDraggingObject() const
void moveToView(const CString &name)
void setPosition(const Point &newPos)
bool clipExistsByStart(const CString &name, int startFrame=0) const
bool stateGetParrotMet() const
void loadImage(const CString &name, bool pendingFlag=true)
void setAmbientSoundVolume(VolumeMode mode, uint seconds, int handleIndex)
CString getRoomName() const
bool clipExistsByEnd(const CString &name, int endFrame=0) const
void dragMove(const Point &pt)
void petSetArea(PetArea newArea) const
void playAmbientSound(const CString &resName, VolumeMode mode, bool initialMute, bool repeated, int handleIndex, Audio::Mixer::SoundType soundType=Audio::Mixer::kMusicSoundType)
void loadFrame(int frameNumber)
int petGetRoomsWellEntry() const
CString getRoomNodeName() const
int getFrameNumber() const
Definition: game_object.h:692
bool isBotDisallowedLocation()
void petOnSummonBot(const CString &name, int val)
void petHighlightGlyph(int id)
int getClipDuration(const CString &name, int frameRate=14) const
void petDisplayMessage(int unused, const CString &str)
void startTalking(CTrueTalkNPC *npc, uint id, CViewItem *view=nullptr)
CTreeItem * getDontSaveChild(ClassDef *classDef) const
PassengerClass getPassengerClass() const
CRoomItem * getHiddenRoom() const
void draw(CScreenManager *screenManager) override
void load(SimpleFile *file) override
static bool compareRoomFlags(RoomFlagsComparison compareType, uint flags1, uint flags2)
CGameObject * findMail(uint roomFlags) const
CGameObject * findInRoom(const CString &name)
bool checkPoint(const Point &pt, bool ignoreSurface=false, bool visibleOnly=false)
int getMovieFrame() const
bool compareRoomNameTo(const CString &name)
void setMovieFrameRate(double rate)
int getRandomNumber(int max, int *oldVal=nullptr)
void petSetRemoteTarget()
CGameObject * getNextMail(CGameObject *prior)
void save(SimpleFile *file, int indent) override
CGameObject * getMailManNextObject(CGameObject *prior) const
CString getViewFullName() const
void setText(const CString &str, int border=0, int borderRight=0)
bool petDoorOrBellbotPresent() const
CGameObject * getHiddenObject(const CString &name) const
void gotoView(const CString &viewName, const CString &clipName)
int addTimer(uint firstDuration, uint repeatDuration=0)
void setToggleColor(byte r, byte g, byte b)
uint getNodeChangedCtr() const
bool petDismissBot(const CString &name)
int queueSound(const CString &name, uint priorHandle, uint volume=100, int balance=0, bool repeated=false, Audio::Mixer::SoundType soundType=Audio::Mixer::kPlainSoundType)
CRoomItem * findRoomByName(const CString &name)
CTreeItem * findUnder(CTreeItem *parent, const CString &name) const
void stopAmbientSound(bool transition, int handleIndex)
int getParrotResponse() const
void mouseDisableControl()
int startAnimTimer(const CString &action, uint firstDuration, uint repeatDuration=0)
Rect getBounds() const override
void petDisplayMessage(StringId stringId, int param=0)
void addMail(uint destRoomFlags)
void startTalking(const CString &name, uint id, CViewItem *view=nullptr)
Point getControid() const
Season stateGetSeason() const
bool changeView(const CString &viewName, const CString &clipName)
void loadMovie(const CString &name, bool pendingFlag=true)
void playClip(uint startFrame, uint endFrame)
bool hasActiveMovie() const
void stopSoundChannel(bool channel3)
void movieSetPlaying(bool flag)
void freeSurface() override
bool isSoundActive(int handle) const
void setVisible(bool val)
void stopAnimTimer(int id)
void unlockInputHandler()
bool findPoint(Quadrant quadrant, Point &pt)
void mouseSetPosition(const Point &pt, double rate)
void stopSound(int handle, uint seconds=0)
CRoomItem * getRoom() const
const CMovieClipList * getMovieClips() const override
Definition: game_object.h:592
PassengerClass getPriorClass() const
CString getFullViewName()
void petSetRoomsElevatorBroken(bool flag)
void playRandomClip(const char *const *names, uint flags=0)
void playMovie(uint flags)
CViewItem * getView() const
bool surfaceHasFrame() const
void petReassignRoom(PassengerClass passClassNum)
void draw(CScreenManager *screenManager, const Point &destPos, const Rect &srcRect)
void movieEvent(int frameNumber)
CGameObject * getMailManFirstObject() const
bool changeView(const CString &viewName)
CMusicRoom * getMusicRoom() const
void draw(CScreenManager *screenManager, const Rect &destRect, const Rect &srcRect)
void setTextColor(byte r, byte g, byte b)
void setSoundVolume(int handle, uint percent, uint seconds)
Movement getMovement() const
void draw(CScreenManager *screenManager, const Point &destPos)
void starFn(StarControlAction action)
void stateSetSoundMakerAllowed(bool flag)
CDontSaveFileItem * getDontSave() const
void playClip(const CString &name, uint flags=0)
CNodeItem * getNode() const
Definition: mail_man.h:29
Definition: mouse_messages.h:150
Definition: movie_clip.h:69
Definition: movie_range_info.h:76
Definition: music_room.h:33
Definition: named_item.h:33
Definition: node_item.h:29
Definition: pet_control.h:45
Definition: proximity.h:36
Definition: room_item.h:33
Definition: screen_manager.h:49
Definition: star_control.h:33
Definition: text_control.h:35
Definition: text_cursor.h:33
Definition: tree_item.h:37
Definition: true_talk_npc.h:43
Definition: video_surface.h:43
Definition: view_item.h:32
Definition: saveable_object.h:35
Definition: simple_file.h:49