void LogicHEfunshop::op_1004(int32 *args) { double data[8], at, sq; int32 x, y; int i=0; for (i = 0; i <= 6; i += 2) { data[i] = getFromArray(args[0], 0, 519 + i); data[i + 1] = getFromArray(args[0], 0, 519 + i + 1); } int s = checkShape((int32)data[0], (int32)data[1], (int32)data[4], (int32)data[5], (int32)data[2], (int32)data[3], (int32)data[6], (int32)data[7], &x, &y); if (s != 1) { error("LogicHEfunshop::op_1004: Your shape has defied the laws of physics"); return; } for (i = 0; i <= 6; i += 2) { data[i] -= (double)x; data[i + 1] -= (double)y; } double a1 = (double)args[1] * DEG2RAD; for (i = 0; i <= 6; i += 2) { at = atan2(data[i + 1], data[i]); sq = sqrt(data[i + 1] * data[i + 1] + data[i] * data[i]); if (at <= 0) at += 2 * M_PI; data[i] = cos(at + a1) * sq; data[i + 1] = sin(at + a1) * sq; } double minx = data[0]; double miny = data[1]; for (i = 0; i <= 6; i += 2) { if (data[i] < minx) minx = data[i]; if (data[i + 1] < miny) miny = data[i + 1]; } for (i = 0; i <= 6; i += 2) { data[i] -= minx; data[i + 1] -= miny; putInArray(args[0], 0, 519 + i, scumm_round(data[i])); putInArray(args[0], 0, 519 + i + 1, scumm_round(data[i + 1])); } }
void LogicHEfunshop::op_1005(int32 *args) { double data[8]; double args1, args2; int i; for (i = 520; i <= 526; i += 2) { data[i - 520] = getFromArray(args[0], 0, i - 1); data[i - 520 + 1] = getFromArray(args[0], 0, i); } args1 = (double)args[1] * 0.01 + 1; args2 = (double)args[2] * 0.01 + 1; for (i = 0; i < 4; i++) { data[2 * i] *= args1; data[2 * i + 1] *= args2; } for (i = 520; i <= 526; i += 2) { putInArray(args[0], 0, i - 1, scummRound(data[i - 520])); putInArray(args[0], 0, i, scummRound(data[i - 520 + 1])); } }
std::shared_ptr< ConfigValue > TypelibConfiguration::getFromValue(Typelib::Value& value) { const Typelib::Type &type(value.getType()); switch(type.getCategory()) { case Typelib::Type::Array: return getFromArray(value); break; case Typelib::Type::Compound: return getFromCompound(value); break; case Typelib::Type::Container: return getFromContainer(value); break; case Typelib::Type::Enum: return getFromEnum(value); break; case Typelib::Type::NullType: break; case Typelib::Type::Numeric: return getFromNumeric(value); break; case Typelib::Type::Opaque: break; case Typelib::Type::Pointer: break; default: throw std::runtime_error("Got Unsupported Category"); } std::shared_ptr<SimpleConfigValue> config(new SimpleConfigValue("Nothing")); config->setName("Unsupported"); return config; }