ScTemplateItemValue(std::string const & name) { SetReplacement(name.c_str()); }
//========================================================================== // // Starts a new actor definition // //========================================================================== static PClassActor *ParseActorHeader(FScanner &sc, Baggage *bag) { FName typeName; FName parentName; FName replaceName; bool native = false; int DoomEdNum = -1; // Get actor name sc.MustGetString(); char *colon = strchr(sc.String, ':'); if (colon != NULL) { *colon++ = 0; } typeName = sc.String; // Do some tweaking so that a definition like 'Actor:Parent' which is read as a single token is recognized as well // without having resort to C-mode (which disallows periods in actor names.) if (colon == NULL) { sc.MustGetString (); if (sc.String[0]==':') { colon = sc.String + 1; } } if (colon != NULL) { if (colon[0] == 0) { sc.MustGetString (); colon = sc.String; } } if (colon == NULL) { sc.UnGet(); } parentName = colon; // Check for "replaces" if (sc.CheckString ("replaces")) { // Get actor name sc.MustGetString (); replaceName = sc.String; if (replaceName == typeName) { sc.ScriptMessage ("Cannot replace class %s with itself", typeName.GetChars()); FScriptPosition::ErrorCounter++; } } // Now, after the actor names have been parsed, it is time to switch to C-mode // for the rest of the actor definition. sc.SetCMode (true); if (sc.CheckNumber()) { if (sc.Number>=-1 && sc.Number<32768) DoomEdNum = sc.Number; else { // does not need to be fatal. sc.ScriptMessage ("DoomEdNum must be in the range [-1,32767]"); FScriptPosition::ErrorCounter++; } } if (sc.CheckString("native")) { native = true; } try { PClassActor *info = CreateNewActor(sc, typeName, parentName, native); info->DoomEdNum = DoomEdNum > 0 ? DoomEdNum : -1; info->SourceLumpName = Wads.GetLumpFullPath(sc.LumpNum); SetReplacement(sc, info, replaceName); ResetBaggage (bag, info == RUNTIME_CLASS(AActor) ? NULL : static_cast<PClassActor *>(info->ParentClass)); bag->Info = info; bag->Lumpnum = sc.LumpNum; #ifdef _DEBUG bag->ClassName = typeName; #endif return info; } catch (CRecoverableError &err) { sc.ScriptError("%s", err.GetMessage()); return NULL; } }
ScTemplateItemValue(char const * name) { SetReplacement(name); }