From 095a6b5adb92482ab116bb04fca855977731d89f Mon Sep 17 00:00:00 2001 From: Alec Harley Date: Tue, 25 Aug 2020 11:22:20 -0700 Subject: [PATCH] ConversationEditor writes .java I think there was one issue not fixed in these changes - I can't find it in my Discord history though. I'm also unable to build ConversationEditor on the master branch due to linker errors. --- .../src/win32/ScriptShellView.cpp | 6 +- .../src/win32/ScriptTreeView.cpp | 4 +- .../src/win32/SwgConversationEditorDoc.cpp | 60 +++++++++++-------- 3 files changed, 40 insertions(+), 30 deletions(-) diff --git a/src/game/server/application/SwgConversationEditor/src/win32/ScriptShellView.cpp b/src/game/server/application/SwgConversationEditor/src/win32/ScriptShellView.cpp index a4390b8a0..f392ad212 100644 --- a/src/game/server/application/SwgConversationEditor/src/win32/ScriptShellView.cpp +++ b/src/game/server/application/SwgConversationEditor/src/win32/ScriptShellView.cpp @@ -78,10 +78,10 @@ void ScriptShellView::OnUpdate(CView * const pSender, LPARAM const lHint, CObjec buffer.Format ("Created %s.stf\r\n", shellData->m_shortFileName); AddTexts (buffer); - buffer.Format ("Created %s.script\r\n", shellData->m_shortFileName); + buffer.Format ("Created %s.java\r\n", shellData->m_shortFileName); AddTexts (buffer); - buffer.Format ("Compiling %s.script\r\n", shellData->m_shortFileName); + buffer.Format ("Compiling %s.java\r\n", shellData->m_shortFileName); AddTexts (buffer); CreateShellRedirect (commandLine); @@ -114,7 +114,7 @@ void ScriptShellView::OnUpdate(CView * const pSender, LPARAM const lHint, CObjec CString m_fullDataScriptFileName (shellData->m_fullScriptFileName); m_fullDataScriptFileName.Replace ("/dsrc/", "/data/"); - m_fullDataScriptFileName.Replace (".script", ".class"); + m_fullDataScriptFileName.Replace (".java", ".class"); CreateShellRedirect (p4 + " edit " + m_fullDataScriptFileName); CreateShellRedirect (p4 + " add " + m_fullDataScriptFileName); diff --git a/src/game/server/application/SwgConversationEditor/src/win32/ScriptTreeView.cpp b/src/game/server/application/SwgConversationEditor/src/win32/ScriptTreeView.cpp index 9ad16866e..2b72ca24d 100644 --- a/src/game/server/application/SwgConversationEditor/src/win32/ScriptTreeView.cpp +++ b/src/game/server/application/SwgConversationEditor/src/win32/ScriptTreeView.cpp @@ -1112,9 +1112,9 @@ void ScriptTreeView::OnScriptAddlibrary() Conversation::LibrarySet & librarySet = document->getLibrarySet (); - CFileDialog dlg (true, "*.scriptlib", 0, (OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR), "ScriptLib Files *.scriptlib|*.scriptlib||"); + CFileDialog dlg (true, "*.java", 0, (OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR), "ScriptLib Files *.java|*.java||"); dlg.m_ofn.lpstrInitialDir = RecentDirectory::find ("Script"); - dlg.m_ofn.lpstrDefExt = "scriptlib"; + dlg.m_ofn.lpstrDefExt = "java"; dlg.m_ofn.lpstrTitle = "Add Script Library"; if (dlg.DoModal () == IDOK) { diff --git a/src/game/server/application/SwgConversationEditor/src/win32/SwgConversationEditorDoc.cpp b/src/game/server/application/SwgConversationEditor/src/win32/SwgConversationEditorDoc.cpp index 439506c0c..578bc7c5d 100644 --- a/src/game/server/application/SwgConversationEditor/src/win32/SwgConversationEditorDoc.cpp +++ b/src/game/server/application/SwgConversationEditor/src/win32/SwgConversationEditorDoc.cpp @@ -37,26 +37,26 @@ namespace SwgConversationEditorDocNamespace CString const cs_labelDefaultName = "_none"; CString const cs_labelRootName = "_root"; - CString const cs_scriptPreNameDeclarationConditionString = "boolean "; - CString const cs_scriptPostNameDeclarationConditionString = " (obj_id player, obj_id npc)\r\n"; + CString const cs_scriptPreNameDeclarationConditionString = "public boolean "; + CString const cs_scriptPostNameDeclarationConditionString = " (obj_id player, obj_id npc) throws InterruptedException\r\n"; CString const cs_scriptBodyConditionString = "{\r\n\treturn true;\r\n}\r\n"; - CString const cs_scriptPreNameDeclarationActionString = "void "; - CString const cs_scriptPostNameDeclarationActionString = " (obj_id player, obj_id npc)\r\n"; + CString const cs_scriptPreNameDeclarationActionString = "public void "; + CString const cs_scriptPostNameDeclarationActionString = " (obj_id player, obj_id npc) throws InterruptedException\r\n"; CString const cs_scriptBodyActionString = "{\r\n}\r\n"; - CString const cs_scriptPreNameDeclarationTokenTOString = "string "; - CString const cs_scriptPostNameDeclarationTokenTOString = " (obj_id player, obj_id npc)\r\n"; - CString const cs_scriptBodyTokenTOString = "{\r\n\treturn new string();\r\n}\r\n"; - CString const cs_scriptPreNameDeclarationTokenDIString = "int "; - CString const cs_scriptPostNameDeclarationTokenDIString = " (obj_id player, obj_id npc)\r\n"; + CString const cs_scriptPreNameDeclarationTokenTOString = "public String "; + CString const cs_scriptPostNameDeclarationTokenTOString = " (obj_id player, obj_id npc) throws InterruptedException\r\n"; + CString const cs_scriptBodyTokenTOString = "{\r\n\treturn new String();\r\n}\r\n"; + CString const cs_scriptPreNameDeclarationTokenDIString = "public int "; + CString const cs_scriptPostNameDeclarationTokenDIString = " (obj_id player, obj_id npc) throws InterruptedException\r\n"; CString const cs_scriptBodyTokenDIString = "{\r\n\treturn 0;\r\n}\r\n"; - CString const cs_scriptPreNameDeclarationTokenDFString = "float "; - CString const cs_scriptPostNameDeclarationTokenDFString = " (obj_id player, obj_id npc)\r\n"; + CString const cs_scriptPreNameDeclarationTokenDFString = "public float "; + CString const cs_scriptPostNameDeclarationTokenDFString = " (obj_id player, obj_id npc) throws InterruptedException\r\n"; CString const cs_scriptBodyTokenDFString = "{\r\n\treturn 0.f;\r\n}\r\n"; CString const cs_scriptHeader1 = "// ======================================================================\n//\n// "; - CString const cs_scriptHeader2 = "\n// Copyright 2004, Sony Online Entertainment\n// All Rights Reserved.\n//\n// Created with " + SwgConversationEditorApp::getVersion() + " - DO NOT EDIT THIS AUTO-GENERATED FILE!\n//\n// ======================================================================\n\n"; + CString const cs_scriptHeader2 = "\n// Copyright 2004, Sony Online Entertainment\n// All Rights Reserved.\n//\n// Created with " + SwgConversationEditorApp::getVersion() + " - DO NOT EDIT THIS AUTO-GENERATED FILE!\n// blour says hi\n// ======================================================================\n\n"; - CString const cs_scriptLibraryDelimiter = "// ======================================================================\n// Library Includes\n// ======================================================================\n\n"; + CString const cs_scriptLibraryDelimiter = "package script.conversation;\n\n// ======================================================================\n// Library Includes\n// ======================================================================\n\n"; CString const cs_scriptConstantsDelimiter = "// ======================================================================\n// Script Constants\n// ======================================================================\n\n"; CString const cs_scriptConditionDelimiter = "// ======================================================================\n// Script Conditions\n// ======================================================================\n\n"; CString const cs_scriptActionDelimiter = "// ======================================================================\n// Script Actions\n// ======================================================================\n\n"; @@ -173,7 +173,7 @@ namespace SwgConversationEditorDocNamespace CString getFullScriptFileName (CString const & shortFileName) { - CString fullScriptFileName(ConfigFile::getKeyString("SwgConversationEditor", "scriptPath", 0) + CString ("/") + shortFileName + ".script"); + CString fullScriptFileName(ConfigFile::getKeyString("SwgConversationEditor", "scriptPath", 0) + CString ("/") + shortFileName + ".java"); fullScriptFileName.MakeLower(); return fullScriptFileName; } @@ -503,10 +503,10 @@ CString const SwgConversationEditorDoc::getDefaultTriggerText () //-- write OnInitialize { - buffer += "trigger OnInitialize ()\r\n" \ + buffer += "public int OnInitialize(obj_id self) throws InterruptedException\r\n" \ "{\r\n" \ - "\tif ((!isTangible (self)) || (isPlayer (self)))\r\n" \ - "\t\tdetachScript(self, \"conversation.filename\");\r\n\r\n" \ + "\tif ((!isMob (self)) || (isPlayer (self)))\r\n\t{\r\n" \ + "\t\tdetachScript(self, \"conversation.filename\");\r\n\t}\r\n\r\n" \ "\tsetCondition (self, CONDITION_CONVERSABLE);\r\n\r\n" \ "\treturn SCRIPT_CONTINUE;\r\n" \ "}\r\n\r\n"; @@ -514,7 +514,7 @@ CString const SwgConversationEditorDoc::getDefaultTriggerText () //-- write OnAttach { - buffer += "trigger OnAttach ()\r\n" \ + buffer += "public int OnAttach(obj_id self) throws InterruptedException\r\n" \ "{\r\n" \ "\tsetCondition (self, CONDITION_CONVERSABLE);\r\n\r\n" \ "\treturn SCRIPT_CONTINUE;\r\n" \ @@ -524,7 +524,7 @@ CString const SwgConversationEditorDoc::getDefaultTriggerText () //-- write OnObjectMenuRequest { buffer += - "trigger OnObjectMenuRequest (obj_id player, menu_info menuInfo)\r\n" \ + "public int OnObjectMenuRequest(obj_id self, obj_id player, menu_info menuInfo) throws InterruptedException\r\n" \ "{\r\n" \ "\tint menu = menuInfo.addRootMenu (menu_info_types.CONVERSE_START, null);\r\n" \ "\tmenu_info_data menuInfoData = menuInfo.getMenuItemById (menu);\r\n" \ @@ -536,7 +536,7 @@ CString const SwgConversationEditorDoc::getDefaultTriggerText () //-- write OnIncapacitated { - buffer += "trigger OnIncapacitated (obj_id killer)\r\n" \ + buffer += "public int OnIncapacitated(obj_id self, obj_id killer) throws InterruptedException\r\n" \ "{\r\n" \ "\tclearCondition (self, CONDITION_CONVERSABLE);\r\n" \ "\tdetachScript (self, \"conversation.filename\");\r\n\r\n" \ @@ -2072,7 +2072,7 @@ bool SwgConversationEditorDoc::writeScript (CString const & scriptName, CString //-- write header outfile.WriteString (cs_scriptHeader1); outfile.WriteString (fileName); - outfile.WriteString (".script" ); + outfile.WriteString (".java" ); outfile.WriteString (cs_scriptHeader2); //-- write libraries @@ -2080,9 +2080,16 @@ bool SwgConversationEditorDoc::writeScript (CString const & scriptName, CString writeLibraries (outfile); outfile.WriteString ("\n"); + //-- write public class filename extends opener + outfile.WriteString("public class "); + outfile.WriteString(fileName); + outfile.WriteString(" extends script.base_script\n{\n\tpublic "); + outfile.WriteString(fileName); + outfile.WriteString("()\r\n\t{\r\n\t}\r\n"); + //-- write constants outfile.WriteString (cs_scriptConstantsDelimiter); - outfile.WriteString ("string c_stringFile = \"conversation/"); + outfile.WriteString ("public static String c_stringFile = \"conversation/"); outfile.WriteString (fileName); outfile.WriteString ("\";\n"); outfile.WriteString ("\n"); @@ -2374,7 +2381,7 @@ bool SwgConversationEditorDoc::writeScript (CString const & scriptName, CString } { - outfile.WriteString ("trigger OnStartNpcConversation (obj_id player)\n"); + outfile.WriteString ("public int OnStartNpcConversation(obj_id self, obj_id player) throws InterruptedException\n"); outfile.WriteString ("{\n"); // obj_id npc = self; @@ -2398,7 +2405,7 @@ bool SwgConversationEditorDoc::writeScript (CString const & scriptName, CString //-- write OnNpcConversationResponse outfile.WriteString (cs_scriptSingleDelimiter); { - outfile.WriteString ("trigger OnNpcConversationResponse (string conversationId, obj_id player, string_id response)\n{\n"); + outfile.WriteString ("public int OnNpcConversationResponse(obj_id self, String conversationId, obj_id player, string_id response) throws InterruptedException\n{\n"); // if (conversationId != ) buffer.Format ("\tif (conversationId != \"%s\")\n", fileName); @@ -2453,6 +2460,8 @@ bool SwgConversationEditorDoc::writeScript (CString const & scriptName, CString outfile.WriteString (cs_scriptDoubleDelimiter); + outfile.WriteString("}"); //write closer for public class blah blah + return true; } @@ -2467,10 +2476,11 @@ void SwgConversationEditorDoc::writeLibraries (CStdioFile & outfile) const Conversation::LibrarySet::iterator end = librarySet.end (); for (Conversation::LibrarySet::iterator iterator = librarySet.begin (); iterator != end; ++iterator) { - outfile.WriteString ("include library."); + outfile.WriteString ("import script.library."); outfile.WriteString (iterator->c_str ()); outfile.WriteString (";\n"); } + outfile.WriteString("import script.*;\n"); } // ----------------------------------------------------------------------