$NewPlayerAlias = $NewPlayerAlias.Split([IO.Path]::GetInvalidFileNameChars()) -join '_'
$OldPlayerAlias = $OldPlayerAlias.Split([IO.Path]::GetInvalidFileNameChars()) -join '_'
# Trim a string down to a specified amount of characters
if ($OldPlayerAlias.Length -gt 15) {
$OldPlayerAlias = $OldPlayerAlias.Substring(0, 15);
}
if ($NewPlayerAlias.Length -gt 15) {
$NewPlayerAlias = $NewPlayerAlias.Substring(0, 15);
}
# Scaffold an "old" profile using the included template
if (!$OldPlayerAlias) {
$OldPlayerAlias = "ProfileTemplate";
Copy-Item -Path "$InstallDirectory\ProfileTemplate" -Destination "$InstallDirectory\player\$OldPlayerAlias" -Recurse
}
Copy-Item -Path "$InstallDirectory\player\$OldPlayerAlias" -Destination "$InstallDirectory\player\$NewPlayerAlias" -Recurse
Remove-Item "$InstallDirectory\player\$OldPlayerAlias" -Recurse -ErrorAction Ignore
Rename-Item "$InstallDirectory\player\$NewPlayerAlias\$OldPlayerAlias.plr" "$InstallDirectory\player\$NewPlayerAlias\$NewPlayerAlias.plr"
Rename-Item "$InstallDirectory\player\$NewPlayerAlias\$OldPlayerAlias.mpc" "$InstallDirectory\player\$NewPlayerAlias\$NewPlayerAlias.mpc"
# Use regex to replace text within a file. Quotes are escaped by double quoting ("")
Write-ReplaceContentInFile -Pattern '"gameName": "(.+)",' -Substitution """gameName"": ""$NewPlayerAlias's Game""," -FilePath "$InstallDirectory\registry.json"
Write-ReplaceContentInFile -Pattern '"playerShortname": "(.+)",' -Substitution """playerShortname"": ""$NewPlayerAlias""," -FilePath "$InstallDirectory\registry.json"