Initial commit

This commit is contained in:
2026-02-02 04:50:13 +01:00
commit 5b11698731
22592 changed files with 7677434 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
/* 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/>.
*
*/
#include "titanic/game/maitred/maitred_arm_holder.h"
namespace Titanic {
BEGIN_MESSAGE_MAP(CMaitreDArmHolder, CDropTarget)
ON_MESSAGE(MaitreDArmHolder)
ON_MESSAGE(ActMsg)
END_MESSAGE_MAP()
void CMaitreDArmHolder::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
CDropTarget::save(file, indent);
}
void CMaitreDArmHolder::load(SimpleFile *file) {
file->readNumber();
CDropTarget::load(file);
}
bool CMaitreDArmHolder::MaitreDArmHolder(CMaitreDArmHolder *msg) {
_dropEnabled = false;
return true;
}
bool CMaitreDArmHolder::ActMsg(CActMsg *msg) {
if (msg->_action == "LoseArm") {
_bounds = Rect();
setVisible(false);
}
return true;
}
} // End of namespace Titanic

View File

@@ -0,0 +1,49 @@
/* 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 TITANIC_MAITRED_ARM_HOLDER_H
#define TITANIC_MAITRED_ARM_HOLDER_H
#include "titanic/core/drop_target.h"
namespace Titanic {
class CMaitreDArmHolder : public CDropTarget {
DECLARE_MESSAGE_MAP;
bool MaitreDArmHolder(CMaitreDArmHolder *msg);
bool ActMsg(CActMsg *msg);
public:
CLASSDEF;
/**
* Save the data for the class to file
*/
void save(SimpleFile *file, int indent) override;
/**
* Load the data for the class from file
*/
void load(SimpleFile *file) override;
};
} // End of namespace Titanic
#endif /* TITANIC_MAITRED_ARM_HOLDER_H */

View File

@@ -0,0 +1,75 @@
/* 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/>.
*
*/
#include "titanic/game/maitred/maitred_body.h"
#include "titanic/translation.h"
namespace Titanic {
BEGIN_MESSAGE_MAP(CMaitreDBody, CMaitreDProdReceptor)
ON_MESSAGE(EnterViewMsg)
ON_MESSAGE(AnimateMaitreDMsg)
ON_MESSAGE(ActMsg)
END_MESSAGE_MAP()
void CMaitreDBody::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
file->writeNumberLine(_armed, indent);
CMaitreDProdReceptor::save(file, indent);
}
void CMaitreDBody::load(SimpleFile *file) {
file->readNumber();
_armed = file->readNumber();
CMaitreDProdReceptor::load(file);
}
bool CMaitreDBody::EnterViewMsg(CEnterViewMsg *msg) {
return true;
}
bool CMaitreDBody::AnimateMaitreDMsg(CAnimateMaitreDMsg *msg) {
static const char *const ARMED_CLIPS[5] = {
"Talking 1", "Talking 2", "Talking 3", "Talking 4", nullptr
};
static const char *const UNARMED_CLIPS[5] = {
"Armless Talking 1", "Armless Talking 2", "Armless Talking 3",
"Armless Talking 4", nullptr
};
if (!hasActiveMovie()) {
playRandomClip(_armed ? ARMED_CLIPS : UNARMED_CLIPS);
}
return true;
}
bool CMaitreDBody::ActMsg(CActMsg *msg) {
if (msg->_action == "LoseArm") {
_armed = false;
loadFrame(262);
playSound(TRANSLATE("c#75.wav", "c#57.wav"));
}
return true;
}
} // End of namespace Titanic

View File

@@ -0,0 +1,53 @@
/* 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 TITANIC_MAITRED_BODY_H
#define TITANIC_MAITRED_BODY_H
#include "titanic/game/maitred/maitred_prod_receptor.h"
namespace Titanic {
class CMaitreDBody : public CMaitreDProdReceptor {
DECLARE_MESSAGE_MAP;
bool EnterViewMsg(CEnterViewMsg *msg);
bool AnimateMaitreDMsg(CAnimateMaitreDMsg *msg);
bool ActMsg(CActMsg *msg);
private:
bool _armed;
public:
CLASSDEF;
CMaitreDBody() : CMaitreDProdReceptor(), _armed(true) {}
/**
* Save the data for the class to file
*/
void save(SimpleFile *file, int indent) override;
/**
* Load the data for the class from file
*/
void load(SimpleFile *file) override;
};
} // End of namespace Titanic
#endif /* TITANIC_MAITRED_BODY_H */

View File

@@ -0,0 +1,94 @@
/* 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/>.
*
*/
#include "titanic/game/maitred/maitred_legs.h"
namespace Titanic {
BEGIN_MESSAGE_MAP(CMaitreDLegs, CMaitreDProdReceptor)
ON_MESSAGE(EnterViewMsg)
ON_MESSAGE(AnimateMaitreDMsg)
END_MESSAGE_MAP()
void CMaitreDLegs::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
file->writeNumberLine(_flag, indent);
CMaitreDProdReceptor::save(file, indent);
}
void CMaitreDLegs::load(SimpleFile *file) {
file->readNumber();
_flag = file->readNumber();
CMaitreDProdReceptor::load(file);
}
bool CMaitreDLegs::EnterViewMsg(CEnterViewMsg *msg) {
_flag = true;
loadFrame(0);
return true;
}
bool CMaitreDLegs::AnimateMaitreDMsg(CAnimateMaitreDMsg *msg) {
static const char *const WIGGLE_CLIPS[4] = {
"Hip Wiggle", "Knee Bend", "Wire Wiggle", nullptr
};
static const char *const FIGHTING_CLIPS[4] = {
"Fighting 1", "Fighting 2", "Leg Fidget", nullptr
};
static const char *const ARCING_SOUNDS[9] = {
"MaitreD Arcing 1.wav", "MaitreD Arcing 2.wav",
"MaitreD Arcing 3.wav", "MaitreD Arcing 4.wav",
"MaitreD Arcing 5.wav", "MaitreD Arcing 6.wav",
"MaitreD Arcing 7.wav", "MaitreD Arcing 8.wav",
"MaitreD Arcing 9.wav"
};
switch (msg->_value) {
case 0:
if (_flag) {
playRandomClip(FIGHTING_CLIPS);
if (getRandomNumber(2) != 0)
playSound(ARCING_SOUNDS[getRandomNumber(8)],
40 + getRandomNumber(30));
} else {
playClip("Walk Right");
_flag = true;
}
break;
case 1:
if (_flag) {
playClip("Walk Left");
_flag = false;
} else {
playRandomClip(WIGGLE_CLIPS);
}
break;
default:
break;
}
return true;
}
} // End of namespace Titanic

View File

@@ -0,0 +1,52 @@
/* 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 TITANIC_MAITRED_LEGS_H
#define TITANIC_MAITRED_LEGS_H
#include "titanic/game/maitred/maitred_prod_receptor.h"
namespace Titanic {
class CMaitreDLegs : public CMaitreDProdReceptor {
DECLARE_MESSAGE_MAP;
bool EnterViewMsg(CEnterViewMsg *msg);
bool AnimateMaitreDMsg(CAnimateMaitreDMsg *msg);
private:
bool _flag;
public:
CLASSDEF;
CMaitreDLegs() : CMaitreDProdReceptor(), _flag(true) {}
/**
* Save the data for the class to file
*/
void save(SimpleFile *file, int indent) override;
/**
* Load the data for the class from file
*/
void load(SimpleFile *file) override;
};
} // End of namespace Titanic
#endif /* TITANIC_MAITRED_LEGS_H */

View File

@@ -0,0 +1,123 @@
/* 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/>.
*
*/
#include "titanic/game/maitred/maitred_prod_receptor.h"
#include "titanic/npcs/maitre_d.h"
namespace Titanic {
BEGIN_MESSAGE_MAP(CMaitreDProdReceptor, CGameObject)
ON_MESSAGE(MouseButtonDownMsg)
ON_MESSAGE(MouseMoveMsg)
ON_MESSAGE(ProdMaitreDMsg)
ON_MESSAGE(DisableMaitreDProdReceptor)
END_MESSAGE_MAP()
void CMaitreDProdReceptor::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
file->writeNumberLine(_prodSource, indent);
file->writeNumberLine(_counter, indent);
file->writeNumberLine(_proddable, indent);
CGameObject::save(file, indent);
}
void CMaitreDProdReceptor::load(SimpleFile *file) {
file->readNumber();
_prodSource = (ProdSource)file->readNumber();
_counter = file->readNumber();
_proddable = file->readNumber();
CGameObject::load(file);
}
bool CMaitreDProdReceptor::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
if (_prodSource == MAITRED_BUTTOCKS && static_cast<CGameObject *>(getParent())->hasActiveMovie()) {
return false;
} else {
CProdMaitreDMsg prodMsg(126);
prodMsg.execute(this);
return true;
}
}
bool CMaitreDProdReceptor::MouseMoveMsg(CMouseMoveMsg *msg) {
if (!getDraggingObject())
return true;
if (_prodSource == MAITRED_BUTTOCKS && static_cast<CGameObject *>(getParent())->hasActiveMovie())
return false;
else if (++_counter < 20)
return true;
_counter = 0;
CProdMaitreDMsg prodMsg(126);
if (isEquals("Stick"))
prodMsg._value = 121;
else if (isEquals("Hammer"))
prodMsg._value = 122;
else if (isEquals("Lemon"))
prodMsg._value = 123;
else if (isEquals("Chicken"))
prodMsg._value = 124;
else if (isEquals("Perch"))
prodMsg._value = 125;
CMaitreD *maitreD = dynamic_cast<CMaitreD *>(findRoomObject("MaitreD"));
if (maitreD && maitreD->_speechCounter == 0)
prodMsg.execute(this);
return true;
}
bool CMaitreDProdReceptor::ProdMaitreDMsg(CProdMaitreDMsg *msg) {
if (_proddable) {
CMaitreD *maitreD = static_cast<CMaitreD *>(findRoomObject("MaitreD"));
if (maitreD->_speechCounter == 0) {
CViewItem *view = findView();
startTalking(maitreD, msg->_value, view);
switch (_prodSource) {
case MAITRED_LEGS:
startTalking(maitreD, 128, view);
break;
case MAITRED_BUTTOCKS:
startTalking(maitreD, 129, view);
break;
case MAITRED_GENERAL:
startTalking(maitreD, 127, view);
break;
default:
startTalking(maitreD, 130, view);
break;
}
}
}
return true;
}
bool CMaitreDProdReceptor::DisableMaitreDProdReceptor(CDisableMaitreDProdReceptor *msg) {
_proddable = false;
return true;
}
} // End of namespace Titanic

View File

@@ -0,0 +1,59 @@
/* 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 TITANIC_MAITRED_PROD_RECEPTOR_H
#define TITANIC_MAITRED_PROD_RECEPTOR_H
#include "titanic/core/game_object.h"
namespace Titanic {
enum ProdSource { MAITRED_BODY = 0, MAITRED_LEGS = 1, MAITRED_BUTTOCKS = 2, MAITRED_GENERAL = 3 };
class CMaitreDProdReceptor : public CGameObject {
DECLARE_MESSAGE_MAP;
bool MouseButtonDownMsg(CMouseButtonDownMsg *msg);
bool MouseMoveMsg(CMouseMoveMsg *msg);
bool ProdMaitreDMsg(CProdMaitreDMsg *msg);
bool DisableMaitreDProdReceptor(CDisableMaitreDProdReceptor *msg);
protected:
ProdSource _prodSource;
int _counter;
bool _proddable;
public:
CLASSDEF;
CMaitreDProdReceptor() : CGameObject(),
_prodSource(MAITRED_BODY), _counter(0), _proddable(true) {}
/**
* Save the data for the class to file
*/
void save(SimpleFile *file, int indent) override;
/**
* Load the data for the class from file
*/
void load(SimpleFile *file) override;
};
} // End of namespace Titanic
#endif /* TITANIC_MAITRED_PROD_RECEPTOR_H */