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

View File

@ -41,20 +41,24 @@ namespace Action {
enum struct DependencyType : byte {
kNone = 0,
kInventory = 1,
kEventFlag = 2,
kLogicCondition = 3,
kTotalTime = 4,
kSceneTime = 5,
kPlayerTime = 6,
kUnknownType7 = 7,
kUnknownType8 = 8,
kEvent = 2,
kLogic = 3,
kElapsedGameTime = 4,
kElapsedSceneTime = 5,
kElapsedPlayerTime = 6,
kSamsSight = 7, // Not implemented
kSamsSound = 8, // Not implemented
kSceneCount = 9,
kResetOnNewDay = 10,
kUseItem = 11,
kTimeOfDay = 12,
kTimerNotDone = 13,
kTimerDone = 14,
kDifficultyLevel = 15
kElapsedPlayerDay = 10,
kCursorType = 11,
kPlayerTOD = 12,
kTimerLessThanDependencyTime = 13,
kTimerGreaterThanDependencyTime = 14,
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

View File

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