mirror of
https://github.com/AdAstra-LD/DS-Pokemon-Rom-Editor.git
synced 2026-09-09 19:55:18 -05:00
Added an error message to Script Editor for missing usescript references
+ Script save file functions now return true when everything was saved correctly, false otherwise + Return value of the script save functions is checked to determine whether or not to mark current script file as changed
This commit is contained in:
@@ -6876,9 +6876,10 @@ namespace DSPRE {
|
||||
} else if (userEdited.fileID == int.MaxValue) {
|
||||
MessageBox.Show("This " + typeof(ScriptFile).Name + " is couldn't be saved since it's empty.", "Can't save", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
} else { //check if ScriptFile instance was created succesfully
|
||||
userEdited.SaveToFileDefaultDir(selectScriptFileComboBox.SelectedIndex);
|
||||
currentScriptFile = userEdited;
|
||||
ScriptEditorSetClean();
|
||||
if (userEdited.SaveToFileDefaultDir(selectScriptFileComboBox.SelectedIndex)) {
|
||||
currentScriptFile = userEdited;
|
||||
ScriptEditorSetClean();
|
||||
}
|
||||
}
|
||||
}
|
||||
private void clearCurrentLevelScriptButton_Click(object sender, EventArgs e) {
|
||||
|
||||
@@ -6,12 +6,12 @@ using static DSPRE.RomInfo;
|
||||
namespace DSPRE.ROMFiles {
|
||||
public abstract class RomFile {
|
||||
public abstract byte[] ToByteArray();
|
||||
public void SaveToFile(string path, bool showSuccessMessage = true) {
|
||||
public bool SaveToFile(string path, bool showSuccessMessage = true) {
|
||||
|
||||
byte[] romFileToByteArray = ToByteArray();
|
||||
if (romFileToByteArray is null) {
|
||||
Console.WriteLine(GetType().Name + " couldn't be saved!");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
File.WriteAllBytes(path, romFileToByteArray);
|
||||
@@ -19,10 +19,12 @@ namespace DSPRE.ROMFiles {
|
||||
if (showSuccessMessage) {
|
||||
MessageBox.Show(GetType().Name + " saved successfully!", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
protected internal void SaveToFileDefaultDir(DirNames dir, int IDtoReplace, bool showSuccessMessage = true) {
|
||||
protected internal bool SaveToFileDefaultDir(DirNames dir, int IDtoReplace, bool showSuccessMessage = true) {
|
||||
string path = RomInfo.gameDirs[dir].unpackedDir + "\\" + IDtoReplace.ToString("D4");
|
||||
this.SaveToFile(path, showSuccessMessage);
|
||||
return this.SaveToFile(path, showSuccessMessage);
|
||||
}
|
||||
protected internal void SaveToFileExplorePath(string fileType, string fileExtension, string suggestedFileName, bool showSuccessMessage = true) {
|
||||
fileExtension = "*." + fileExtension;
|
||||
|
||||
@@ -700,6 +700,12 @@ namespace DSPRE.ROMFiles {
|
||||
AddReference(ref refList, (ushort)currentCmd.id, parameterList, (int)writer.BaseStream.Position, currentFunction);
|
||||
}
|
||||
} else {
|
||||
int functionUsescript = currentFunction.usedScript - 1;
|
||||
if (functionUsescript >= scriptOffsets.Count) {
|
||||
MessageBox.Show($"Function #{currentFunction.manualUserID} refers to Script {currentFunction.usedScript}, which does not exist.\n" +
|
||||
$"This Script File can't be saved.", "Can't resolve UseScript reference", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return null;
|
||||
}
|
||||
functionOffsets.Add(new ContainerReference() {
|
||||
ID = currentFunction.manualUserID,
|
||||
offsetInFile = scriptOffsets[currentFunction.usedScript - 1].offsetInFile
|
||||
@@ -749,9 +755,9 @@ namespace DSPRE.ROMFiles {
|
||||
if (refList[i].typeOfInvoked is containerTypes.Action) { //isApplyMovement
|
||||
result = actionOffsets.Find(entry => entry.ID == refList[i].invokedID);
|
||||
|
||||
if (result.Equals((0, 0)))
|
||||
if (result.Equals(default(ContainerReference))) {
|
||||
undeclaredActions.Add(refList[i].invokedID);
|
||||
else {
|
||||
} else {
|
||||
int relativeOffset = (int)(result.offsetInFile - refList[i].invokedAt - 4);
|
||||
writer.Write(relativeOffset);
|
||||
unreferencedActions.Remove(refList[i].invokedID);
|
||||
@@ -759,9 +765,9 @@ namespace DSPRE.ROMFiles {
|
||||
} else {
|
||||
result = functionOffsets.Find(entry => entry.ID == refList[i].invokedID);
|
||||
|
||||
if (result.Equals((0, 0)))
|
||||
if (result.Equals(default(ContainerReference))) {
|
||||
undeclaredFuncs.Add(refList[i].invokedID);
|
||||
else {
|
||||
} else {
|
||||
int relativeOffset = (int)(result.offsetInFile - refList[i].invokedAt - 4);
|
||||
writer.Write(relativeOffset);
|
||||
|
||||
@@ -871,8 +877,8 @@ namespace DSPRE.ROMFiles {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void SaveToFileDefaultDir(int IDtoReplace, bool showSuccessMessage = true) {
|
||||
SaveToFileDefaultDir(DirNames.scripts, IDtoReplace, showSuccessMessage);
|
||||
public bool SaveToFileDefaultDir(int IDtoReplace, bool showSuccessMessage = true) {
|
||||
return SaveToFileDefaultDir(DirNames.scripts, IDtoReplace, showSuccessMessage);
|
||||
}
|
||||
public void SaveToFileExplorePath(string suggestedFileName, bool blindmode) {
|
||||
SaveFileDialog sf = new SaveFileDialog {
|
||||
|
||||
Reference in New Issue
Block a user