Common::String getTextFromAnyVar(const Variable &from) { switch (from.varType) { case SVT_STRING: return from.varData.theString; case SVT_FASTARRAY: { Common::String builder = "FAST:"; Common::String builder2 = ""; Common::String grabText = ""; for (int i = 0; i < from.varData.fastArray->size; i++) { builder2 = builder + " "; grabText = getTextFromAnyVar(from.varData.fastArray->fastVariables[i]); builder.clear(); builder = builder2 + grabText; } return builder; } case SVT_STACK: { Common::String builder = "ARRAY:"; Common::String builder2 = ""; Common::String grabText = ""; VariableStack *stacky = from.varData.theStack->first; while (stacky) { builder2 = builder + " "; grabText = getTextFromAnyVar(stacky->thisVar); builder.clear(); builder = builder2 + grabText; stacky = stacky->next; } return builder; } case SVT_INT: { Common::String buff = Common::String::format("%i", from.varData.intValue); return buff; } case SVT_FILE: { return resourceNameFromNum(from.varData.intValue); } case SVT_OBJTYPE: { ObjectType *thisType = g_sludge->_objMan->findObjectType(from.varData.intValue); if (thisType) return thisType->screenName; break; } default: break; } return typeName[from.varType]; }
int fatal(const Common::String &str1) { if (numResourceNames && resourceForFatal != -1) { Common::String r = resourceNameFromNum(resourceForFatal); Common::String newStr = g_sludge->fatalInfo + "\nResource: " + r + "\n\n" + str1; inFatal(newStr); } else { Common::String newStr = g_sludge->fatalInfo + "\n\n" + str1; inFatal(newStr); } return 0; }
char * getTextFromAnyVar (const variable & from) { switch (from.varType) { case SVT_STRING: return copyString (from.varData.theString); case SVT_FASTARRAY: { char * builder = copyString ("FAST:"); char * builder2; char * grabText; for (int i = 0; i < from.varData.fastArray -> size; i ++) { builder2 = joinStrings (builder, " "); if (! builder2) return NULL; delete builder; grabText = getTextFromAnyVar (from.varData.fastArray -> fastVariables[i]); builder = joinStrings (builder2, grabText); if (! builder) return NULL; delete grabText; grabText = NULL; delete builder2; builder2 = NULL; } return builder; } case SVT_STACK: { char * builder = copyString ("ARRAY:"); char * builder2; char * grabText; variableStack * stacky = from.varData.theStack -> first; while (stacky) { builder2 = joinStrings (builder, " "); if (! builder2) return NULL; delete builder; grabText = getTextFromAnyVar (stacky -> thisVar); builder = joinStrings (builder2, grabText); if (! builder) return NULL; delete grabText; grabText = NULL; delete builder2; builder2 = NULL; stacky = stacky -> next; } return builder; } case SVT_INT: { char * buff = new char[10]; if (! checkNew (buff)) return NULL; sprintf (buff, "%i", from.varData.intValue); return buff; } case SVT_FILE: { // char * buff = new char[15]; // if (! checkNew (buff)) return NULL; // sprintf (buff, "FILE %i", from.varData.intValue); return joinStrings ("", resourceNameFromNum (from.varData.intValue)); } /* case SVT_ANIM: { char * buff = new char[20]; if (! checkNew (buff)) return NULL; sprintf (buff, "%p", from.varData.animHandler); return buff; }*/ case SVT_OBJTYPE: { objectType * thisType = findObjectType (from.varData.intValue); if (thisType) return copyString (thisType -> screenName); } default: break; } return copyString (typeName[from.varType]); }