1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-03-13 07:14:31 +00:00

Merge pull request #2694 from Capostrophic/show

Make Show fallback to global variables when sensible (bug #5278)
This commit is contained in:
Roman Siromakha 2020-02-09 20:56:42 +01:00 committed by GitHub
commit 158f610b61
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 15 deletions

View File

@ -197,6 +197,7 @@
Bug #5255: "GetTarget, player" doesn't return 1 during NPC hello Bug #5255: "GetTarget, player" doesn't return 1 during NPC hello
Bug #5261: Creatures can sometimes become stuck playing idles and never wander again Bug #5261: Creatures can sometimes become stuck playing idles and never wander again
Bug #5269: Editor: Cell lighting in resaved cleaned content files is corrupted Bug #5269: Editor: Cell lighting in resaved cleaned content files is corrupted
Bug #5278: Console command Show doesn't fall back to global variable after local var not found
Feature #1774: Handle AvoidNode Feature #1774: Handle AvoidNode
Feature #2229: Improve pathfinding AI Feature #2229: Improve pathfinding AI
Feature #3025: Analogue gamepad movement controls Feature #3025: Analogue gamepad movement controls

View File

@ -923,31 +923,27 @@ namespace MWScript
if (!ptr.isEmpty()) if (!ptr.isEmpty())
{ {
const std::string& script = ptr.getClass().getScript(ptr); const std::string& script = ptr.getClass().getScript(ptr);
if (script.empty()) if (!script.empty())
{
output << ptr.getCellRef().getRefId() << " has no script " << std::endl;
}
else
{ {
const Compiler::Locals& locals = const Compiler::Locals& locals =
MWBase::Environment::get().getScriptManager()->getLocals(script); MWBase::Environment::get().getScriptManager()->getLocals(script);
char type = locals.getType(var); char type = locals.getType(var);
std::string refId = ptr.getCellRef().getRefId();
if (refId.find(' ') != std::string::npos)
refId = '"' + refId + '"';
switch (type) switch (type)
{ {
case 'l': case 'l':
case 's': case 's':
output << ptr.getCellRef().getRefId() << "." << var << ": " << ptr.getRefData().getLocals().getIntVar(script, var); output << refId << "." << var << " = " << ptr.getRefData().getLocals().getIntVar(script, var);
break; break;
case 'f': case 'f':
output << ptr.getCellRef().getRefId() << "." << var << ": " << ptr.getRefData().getLocals().getFloatVar(script, var); output << refId << "." << var << " = " << ptr.getRefData().getLocals().getFloatVar(script, var);
break;
default:
output << "unknown local '" << var << "' for '" << ptr.getCellRef().getRefId() << "'";
break; break;
} }
} }
} }
else if (output.rdbuf()->in_avail() == 0)
{ {
MWBase::World *world = MWBase::Environment::get().getWorld(); MWBase::World *world = MWBase::Environment::get().getWorld();
char type = world->getGlobalVariableType (var); char type = world->getGlobalVariableType (var);
@ -955,16 +951,16 @@ namespace MWScript
switch (type) switch (type)
{ {
case 's': case 's':
output << runtime.getContext().getGlobalShort (var); output << var << " = " << runtime.getContext().getGlobalShort (var);
break; break;
case 'l': case 'l':
output << runtime.getContext().getGlobalLong (var); output << var << " = " << runtime.getContext().getGlobalLong (var);
break; break;
case 'f': case 'f':
output << runtime.getContext().getGlobalFloat (var); output << var << " = " << runtime.getContext().getGlobalFloat (var);
break; break;
default: default:
output << "unknown global variable"; output << "unknown variable";
} }
} }
runtime.getContext().report(output.str()); runtime.getContext().report(output.str());