NANCY: Rename action record dependency types

Renamed the dependency types for ActionRecords to match their
official ones. Also added the dependency types found in nancy3.
This commit is contained in:
Kaloyan Chehlarski 2023-03-07 01:00:40 +02:00
parent 8190f09acc
commit 1fa1de39b6
3 changed files with 51 additions and 53 deletions

View File

@ -186,7 +186,7 @@ void ActionManager::processActionRecords() {
} }
break; break;
case DependencyType::kEventFlag: case DependencyType::kEvent:
if (NancySceneState.getEventFlag(dep.label, dep.condition)) { if (NancySceneState.getEventFlag(dep.label, dep.condition)) {
// nancy1 has code for some timer array that never gets used // nancy1 has code for some timer array that never gets used
// and is discarded from nancy2 onward // and is discarded from nancy2 onward
@ -194,7 +194,7 @@ void ActionManager::processActionRecords() {
} }
break; break;
case DependencyType::kLogicCondition: case DependencyType::kLogic:
if (NancySceneState._flags.logicConditions[dep.label].flag == dep.condition) { if (NancySceneState._flags.logicConditions[dep.label].flag == dep.condition) {
// Wait for specified time before satisfying dependency condition // Wait for specified time before satisfying dependency condition
Time elapsed = NancySceneState._timers.lastTotalTime - NancySceneState._flags.logicConditions[dep.label].timestamp; Time elapsed = NancySceneState._timers.lastTotalTime - NancySceneState._flags.logicConditions[dep.label].timestamp;
@ -205,30 +205,24 @@ void ActionManager::processActionRecords() {
} }
break; break;
case DependencyType::kTotalTime: case DependencyType::kElapsedGameTime:
if (NancySceneState._timers.lastTotalTime >= dep.timeData) { if (NancySceneState._timers.lastTotalTime >= dep.timeData) {
dep.satisfied = true; dep.satisfied = true;
} }
break; break;
case DependencyType::kSceneTime: case DependencyType::kElapsedSceneTime:
if (NancySceneState._timers.sceneTime >= dep.timeData) { if (NancySceneState._timers.sceneTime >= dep.timeData) {
dep.satisfied = true; dep.satisfied = true;
} }
break; break;
case DependencyType::kPlayerTime: case DependencyType::kElapsedPlayerTime:
// TODO almost definitely wrong, as the original engine treats player time differently // TODO almost definitely wrong, as the original engine treats player time differently
if (NancySceneState._timers.playerTime >= dep.timeData) { if (NancySceneState._timers.playerTime >= dep.timeData) {
dep.satisfied = true; dep.satisfied = true;
} }
break;
case DependencyType::kUnknownType7:
warning("Unknown Dependency type 7");
break;
case DependencyType::kUnknownType8:
warning("Unknown Dependency type 8");
break; break;
case DependencyType::kSceneCount: case DependencyType::kSceneCount:
// This dependency type keeps its data in the time variables // This dependency type keeps its data in the time variables
@ -255,7 +249,7 @@ void ActionManager::processActionRecords() {
} }
break; break;
case DependencyType::kResetOnNewDay: case DependencyType::kElapsedPlayerDay:
if (record->_days == -1) { if (record->_days == -1) {
record->_days = NancySceneState._timers.playerTime.getDays(); record->_days = NancySceneState._timers.playerTime.getDays();
dep.satisfied = true; dep.satisfied = true;
@ -265,14 +259,14 @@ void ActionManager::processActionRecords() {
if (record->_days < NancySceneState._timers.playerTime.getDays()) { if (record->_days < NancySceneState._timers.playerTime.getDays()) {
record->_days = NancySceneState._timers.playerTime.getDays(); record->_days = NancySceneState._timers.playerTime.getDays();
for (uint j = 0; j < record->_dependencies.size(); ++j) { for (uint j = 0; j < record->_dependencies.size(); ++j) {
if (record->_dependencies[j].type == DependencyType::kPlayerTime) { if (record->_dependencies[j].type == DependencyType::kElapsedPlayerTime) {
record->_dependencies[j].satisfied = false; record->_dependencies[j].satisfied = false;
} }
} }
} }
break; break;
case DependencyType::kUseItem: { case DependencyType::kCursorType: {
bool hasUnsatisfiedDeps = false; bool hasUnsatisfiedDeps = false;
for (uint j = 0; j < record->_dependencies.size(); ++j) { for (uint j = 0; j < record->_dependencies.size(); ++j) {
if (j != i && record->_dependencies[j].satisfied == false) { if (j != i && record->_dependencies[j].satisfied == false) {
@ -293,19 +287,19 @@ void ActionManager::processActionRecords() {
dep.satisfied = true; dep.satisfied = true;
break; break;
} }
case DependencyType::kTimeOfDay: case DependencyType::kPlayerTOD:
if (dep.label == NancySceneState._timers.timeOfDay) { if (dep.label == NancySceneState._timers.timeOfDay) {
dep.satisfied = true; dep.satisfied = true;
} }
break; break;
case DependencyType::kTimerNotDone: case DependencyType::kTimerLessThanDependencyTime:
if (NancySceneState._timers.timerTime <= dep.timeData) { if (NancySceneState._timers.timerTime <= dep.timeData) {
dep.satisfied = true; dep.satisfied = true;
} }
break; break;
case DependencyType::kTimerDone: case DependencyType::kTimerGreaterThanDependencyTime:
if (NancySceneState._timers.timerTime > dep.timeData) { if (NancySceneState._timers.timerTime > dep.timeData) {
dep.satisfied = true; dep.satisfied = true;
} }
@ -318,7 +312,7 @@ void ActionManager::processActionRecords() {
break; break;
default: default:
warning("Unknown Dependency type %i", (int)dep.type); warning("Unimplemented Dependency type %i", (int)dep.type);
break; break;
} }
} }

View File

@ -41,20 +41,24 @@ namespace Action {
enum struct DependencyType : byte { enum struct DependencyType : byte {
kNone = 0, kNone = 0,
kInventory = 1, kInventory = 1,
kEventFlag = 2, kEvent = 2,
kLogicCondition = 3, kLogic = 3,
kTotalTime = 4, kElapsedGameTime = 4,
kSceneTime = 5, kElapsedSceneTime = 5,
kPlayerTime = 6, kElapsedPlayerTime = 6,
kUnknownType7 = 7, kSamsSight = 7, // Not implemented
kUnknownType8 = 8, kSamsSound = 8, // Not implemented
kSceneCount = 9, kSceneCount = 9,
kResetOnNewDay = 10, kElapsedPlayerDay = 10,
kUseItem = 11, kCursorType = 11,
kTimeOfDay = 12, kPlayerTOD = 12,
kTimerNotDone = 13, kTimerLessThanDependencyTime = 13,
kTimerDone = 14, kTimerGreaterThanDependencyTime = 14,
kDifficultyLevel = 15 kDifficultyLevel = 15,
kClosedCaptioning = 16, // Not implemented
kSound = 17, // Not implemented
kOpenParentheses = 18, // Not implemented
kCloseParentheses = 19 // Not implemented
}; };
// Describes a condition that needs to be fulfilled before the // Describes a condition that needs to be fulfilled before the

View File

@ -419,32 +419,32 @@ bool NancyConsole::Cmd_listAcionRecords(int argc, const char **argv) {
g_nancy->getStaticData().itemNames[dep.label].c_str(), g_nancy->getStaticData().itemNames[dep.label].c_str(),
dep.condition == kInvHolding ? "kInvHolding" : "kInvEmpty"); dep.condition == kInvHolding ? "kInvHolding" : "kInvEmpty");
break; break;
case DependencyType::kEventFlag : case DependencyType::kEvent :
debugPrintf("kEventFlag, flag %u, %s, %s", debugPrintf("kEvent, flag %u, %s, %s",
dep.label, dep.label,
g_nancy->getStaticData().eventFlagNames[dep.label].c_str(), g_nancy->getStaticData().eventFlagNames[dep.label].c_str(),
dep.condition == kEvOccurred ? "kEvOccurred" : "kEvNotOccurred"); dep.condition == kEvOccurred ? "kEvOccurred" : "kEvNotOccurred");
break; break;
case DependencyType::kLogicCondition : case DependencyType::kLogic :
debugPrintf("kLogicCondition, flag %u, %s", debugPrintf("kLogic, flag %u, %s",
dep.label, dep.label,
dep.condition == kLogUsed ? "kLogUsed" : "kLogNotUsed"); dep.condition == kLogUsed ? "kLogUsed" : "kLogNotUsed");
break; break;
case DependencyType::kTotalTime : case DependencyType::kElapsedGameTime :
debugPrintf("kTotalTime, %i hours, %i minutes, %i seconds, %i milliseconds", debugPrintf("kElapsedGameTime, %i hours, %i minutes, %i seconds, %i milliseconds",
dep.hours, dep.hours,
dep.minutes, dep.minutes,
dep.seconds, dep.seconds,
dep.milliseconds); dep.milliseconds);
break; break;
case DependencyType::kSceneTime : case DependencyType::kElapsedSceneTime :
debugPrintf("kSceneTime, %i hours, %i minutes, %i seconds, %i milliseconds", debugPrintf("kElapsedSceneTime, %i hours, %i minutes, %i seconds, %i milliseconds",
dep.hours, dep.hours,
dep.minutes, dep.minutes,
dep.seconds, dep.seconds,
dep.milliseconds); dep.milliseconds);
break; break;
case DependencyType::kPlayerTime : case DependencyType::kElapsedPlayerTime :
debugPrintf("kPlayerTime, %i hours, %i minutes, %i seconds, %i milliseconds", debugPrintf("kPlayerTime, %i hours, %i minutes, %i seconds, %i milliseconds",
dep.hours, dep.hours,
dep.minutes, dep.minutes,
@ -457,24 +457,24 @@ bool NancyConsole::Cmd_listAcionRecords(int argc, const char **argv) {
dep.milliseconds == 1 ? ">" : dep.milliseconds == 2 ? "<" : "==", dep.milliseconds == 1 ? ">" : dep.milliseconds == 2 ? "<" : "==",
dep.seconds); dep.seconds);
break; break;
case DependencyType::kResetOnNewDay : case DependencyType::kElapsedPlayerDay :
debugPrintf("kResetOnNewDay"); debugPrintf("kElapsedPlayerDay");
break; break;
case DependencyType::kUseItem : case DependencyType::kCursorType :
debugPrintf("kUseItem, item %u, %s, %s", debugPrintf("kCursorType, item %u, %s, %s",
dep.label, dep.label,
g_nancy->getStaticData().itemNames[dep.label].c_str(), g_nancy->getStaticData().itemNames[dep.label].c_str(),
dep.condition == ActionManager::kCursInvHolding ? "kCursInvHolding" : "kCursInvNotHolding"); dep.condition == ActionManager::kCursInvHolding ? "kCursInvHolding" : "kCursInvNotHolding");
break; break;
case DependencyType::kTimeOfDay : case DependencyType::kPlayerTOD :
debugPrintf("kTimeOfDay, %s", debugPrintf("kPlayerTOD, %s",
dep.label == 0 ? "kPlayerDay" : dep.label == 1 ? "kPLayerNight" : "kPLayerDuskDawn"); dep.label == 0 ? "kPlayerDay" : dep.label == 1 ? "kPLayerNight" : "kPLayerDuskDawn");
break; break;
case DependencyType::kTimerNotDone : case DependencyType::kTimerLessThanDependencyTime :
debugPrintf("kTimerNotDone"); debugPrintf("kTimerLessThanDependencyTime");
break; break;
case DependencyType::kTimerDone : case DependencyType::kTimerGreaterThanDependencyTime :
debugPrintf("kTimerDone"); debugPrintf("kTimerGreaterThanDependencyTime");
break; break;
case DependencyType::kDifficultyLevel : case DependencyType::kDifficultyLevel :
debugPrintf("kDifficultyLevel, level %i", dep.condition); debugPrintf("kDifficultyLevel, level %i", dep.condition);