mirror of https://github.com/PrimeDecomp/prime.git
156 lines
5.3 KiB
Python
156 lines
5.3 KiB
Python
import re
|
|
import argparse
|
|
from pathlib import Path
|
|
|
|
_LITERAL_REPLACEMENTS = [
|
|
("std::string_view", "const rstl::string&"),
|
|
("std::vector", "rstl::vector"),
|
|
("std::list", "rstl::list"),
|
|
("std::pair", "rstl::pair"),
|
|
("std::optional", "rstl::optional_object"),
|
|
("std::nullopt", "rstl::optional_object_null()"),
|
|
|
|
("zeus::CTransform", "CTransform4f"),
|
|
("zeus::skZero2f", "CVector2f(0.f, 0.f)"),
|
|
("zeus::skZero3f", "CVector3f::Zero()"),
|
|
("zeus::skPurple", "CColor::Purple()"),
|
|
("zeus::skWhite", "CColor::White()"),
|
|
("zeus::CFrustum", "CFrustumPlanes"),
|
|
("zeus::lookAt", "CTransform4f::LookAt"),
|
|
("zeus::radToDeg", "CMath::Rad2Deg"),
|
|
("zeus::degToRad", "CMath::Deg2Rad"),
|
|
("zeus::skUp", "CVector3f::Up()"),
|
|
("zeus::skDown", "CVector3f::Down()"),
|
|
("zeus::skRight", "CVector3f::Right()"),
|
|
("zeus::skLeft", "CVector3f::Left()"),
|
|
("zeus::skForward", "CVector3f::Forward()"),
|
|
("zeus::skBack", "CVector3f::Back()"),
|
|
("zeus::", ""),
|
|
("u32 ", "uint "),
|
|
("s32 ", "int "),
|
|
("u16 ", "ushort "),
|
|
("char16_t", "wchar_t"),
|
|
("std::min(", "rstl::min_val("),
|
|
("std::max(", "rstl::max_val("),
|
|
|
|
("DEFINE_ENTITY", ""),
|
|
("visitor.Visit(this)", "visitor.Visit(*this)"),
|
|
|
|
("g_SimplePool", "gpSimplePool"),
|
|
("g_Renderer", "gpRender"),
|
|
("g_ResFactory", "gpResourceFactory"),
|
|
("g_GameState", "gpGameState"),
|
|
("g_MainStringTable", "gpStringTable"),
|
|
|
|
# Vector
|
|
(".magnitude()", ".Magnitude()"),
|
|
(".normalized()", ".AsNormalized()"),
|
|
(".canBeNormalized()", ".CanBeNormalized()"),
|
|
(".normalize()", ".Normalize()"),
|
|
(".basis[1]", ".GetColumn(kDY)"),
|
|
|
|
# Transform
|
|
(".frontVector()", ".GetForward()"),
|
|
|
|
# CStateManager
|
|
(".GetActiveRandom()", ".Random()"),
|
|
|
|
# Enums
|
|
("EMaterialTypes::", "kMT_"),
|
|
("EScriptObjectState::", "kSS_"),
|
|
("EScriptObjectMessage::", "kSM_"),
|
|
("EPlayerOrbitState::", "CPlayer::kOS_"),
|
|
("ESurfaceRestraints::", "kSR_"),
|
|
("EPlayerCameraState::", "kCS_"),
|
|
("EPlayerMorphBallState::", "kMS_"),
|
|
("EPlayerOrbitType::", "kOT_"),
|
|
("EPlayerOrbitRequest::", "kOB_"),
|
|
("EPlayerZoneInfo::", "kZI_"),
|
|
("EPlayerZoneType::", "kZT_"),
|
|
("EPlayerScanState::", "kSS_"),
|
|
("EGrappleState::", "kGS_"),
|
|
("EFootstepSfx::", "kFS_"),
|
|
("EGunHolsterState::", "kGH_"),
|
|
("CPlayer::EPlayerOrbitState::", "CPlayer::kOS_"),
|
|
("CPlayer::ESurfaceRestraints::", "CPlayer::kSR_"),
|
|
("CPlayer::EPlayerCameraState::", "CPlayer::kCS_"),
|
|
("CPlayer::EPlayerMorphBallState::", "CPlayer::kMS_"),
|
|
("CPlayer::EPlayerOrbitType::", "CPlayer::kOT_"),
|
|
("CPlayer::EPlayerOrbitRequest::", "CPlayer::kOB_"),
|
|
("CPlayer::EPlayerZoneInfo::", "CPlayer::kZI_"),
|
|
("CPlayer::EPlayerZoneType::", "CPlayer::kZT_"),
|
|
("CPlayer::EPlayerScanState::", "CPlayer::kSS_"),
|
|
("CPlayer::EGrappleState::", "CPlayer::kGS_"),
|
|
("CPlayer::EFootstepSfx::", "CPlayer::kFS_"),
|
|
("CPlayer::EGunHolsterState::", "CPlayer::kGH_"),
|
|
("CPlayerState::EPlayerVisor::", "CPlayerState::kPV_"),
|
|
("CPlayerState::EPlayerSuit::", "CPlayerState::kPS_"),
|
|
("CPlayerState::EBeamId::", "CPlayerState::kBI_"),
|
|
("CPlayerState::EItemType::", "CPlayerState::kIT_"),
|
|
("ControlMapper::ECommands::", "ControlMapper::kC_"),
|
|
("EFluidType::", "CFluidPlane::kFT_"),
|
|
("EPlayerMovementState::", "NPlayer::kMS_"),
|
|
("CMorphBall::ESpiderBallState::", "CMorphBall::kSBS_"),
|
|
("EProjectileAttrib::", "kPA_"),
|
|
("ERumbleFxId::", "kRFX_"),
|
|
("ERumblePriority::", "kRP_"),
|
|
|
|
# CActor
|
|
("x34_transform.origin", "GetTranslation()"),
|
|
("x34_transform", "GetTransform()"),
|
|
("xc4_fluidId", "InFluidId()"),
|
|
|
|
# CPhysicsActor
|
|
("x138_velocity", "GetVelocityWR()"),
|
|
|
|
# CPlayer
|
|
("SetOrbitRequest", "BreakOrbit"),
|
|
("ActivateMorphBallCamera", "ResetBallCamera"),
|
|
("ApplySubmergedPitchBend", "DoSfxEffects"),
|
|
|
|
# CCameraManager
|
|
("SetupBallCamera", "ResetCameraHint"),
|
|
|
|
# Math
|
|
("std::acos", "acosf"),
|
|
("std::fabs", "fabsf"),
|
|
("std::sqrt", "sqrtf"),
|
|
("clamp(", "CMath::Clamp("),
|
|
]
|
|
_RE_REPLACEMENTS = [
|
|
# SObjectTag{FOURCC('...'), ...} -> SObjectTag('...', ...)
|
|
(re.compile(r"SObjectTag{FOURCC\('(.*)'\),\s*(.*)}"), r"SObjectTag('\1', \2)"),
|
|
# const TCastToConstPtr<...> ... = ...) { -> const ...* = TCastToConstPtr<...>(...)) {
|
|
(re.compile(r"const TCastToConstPtr<([A-z0-9]+)> ([A-z0-9]+) = (.*)\) {"), r"const \1* \2 = TCastToConstPtr<\1>(\3)) {"),
|
|
# const TCastToConstPtr<...> ... = ...; -> const ...* = TCastToConstPtr<...>(...);
|
|
(re.compile(r"const TCastToConstPtr<([A-z0-9]+)> ([A-z0-9]+) = (.*);"), r"const \1* \2 = TCastToConstPtr<\1>(\3);"),
|
|
# g_tweakFoo->GetBar() -> gpTweakFoo->mBar
|
|
(re.compile(r"g_tweak([A-z0-9]+)->Get([A-z0-9]+)\(\)"), r"gpTweak\1->m\2"),
|
|
# vec.xyz() = ... -> vec.SetXYZ(...)
|
|
(re.compile(r"([A-z0-9]+)\.([xyz])\(\) = (.*);"), lambda m: f"{m.group(1)}.Set{m.group(2).upper()}({m.group(3)});"),
|
|
# vec.xyz() -> vec.GetXYZ()
|
|
(re.compile(r"\.([xyz])\(\)"), lambda m: f".Get{m.group(1).upper()}()"),
|
|
# lhs.dot(rhs) -> CVector3f::Dot(lhs, rhs)
|
|
(re.compile(r"([A-z0-9]+)\.dot\(([A-z0-9]+)\)([,;])"), r"CVector3f::Dot(\1, \2)\3"),
|
|
]
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("file", type=Path)
|
|
args = parser.parse_args()
|
|
|
|
contents: str = args.file.read_text()
|
|
|
|
for sub, replacement in _LITERAL_REPLACEMENTS:
|
|
contents = contents.replace(sub, replacement)
|
|
|
|
for re_obj, replacement in _RE_REPLACEMENTS:
|
|
contents = re_obj.sub(replacement, contents)
|
|
|
|
args.file.write_text(contents)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|