From 7df70f247c7d5469684ad9dc955a152a8d10c952 Mon Sep 17 00:00:00 2001 From: Brad Hannah <47454550+bradhannah@users.noreply.github.com> Date: Sat, 9 Dec 2023 16:50:14 -0500 Subject: [PATCH] feat: basic commands for BoostStats and ScreenEffect --- Ultima5Redux/DataFiles/CutSceneScripts.csv | 14 ++- Ultima5Redux/DataFiles/CutSceneScripts.json | 102 +++++++++++++++++- .../ScriptTurnResults/BoostStats.cs | 9 ++ .../ScriptTurnResults/ScreenEffect.cs | 9 ++ .../ScriptTurnResults/SoundEffect.cs | 2 +- .../MapUnits/TurnResults/TurnResult.cs | 2 +- Ultima5Redux/Maps/CutOrIntroSceneScript.cs | 10 +- Ultima5Redux/Maps/CutSceneMap.cs | 5 + Ultima5Redux/Ultima5Redux.csproj | 2 + 9 files changed, 149 insertions(+), 6 deletions(-) create mode 100644 Ultima5Redux/MapUnits/TurnResults/SpecificTurnResults/ScriptTurnResults/BoostStats.cs create mode 100644 Ultima5Redux/MapUnits/TurnResults/SpecificTurnResults/ScriptTurnResults/ScreenEffect.cs diff --git a/Ultima5Redux/DataFiles/CutSceneScripts.csv b/Ultima5Redux/DataFiles/CutSceneScripts.csv index 2a14227..ac1e6e4 100644 --- a/Ultima5Redux/DataFiles/CutSceneScripts.csv +++ b/Ultima5Redux/DataFiles/CutSceneScripts.csv @@ -73,8 +73,18 @@ MapNum,FrameNum,Command,StrParam,IntParam,X,Y,Visible,Comment 1,204,ChangeShrineState,ShrineOrdainedNoCodex,0,0,0,false 1,205,Goto,,11,0,0,false,Leave Shrine 1,300,NoOp,,0,0,0,false,Jumped to if ShrineStatus.ShrineOrdainedNoCodex -1,301,OutputModalText,"ShrineStatus.ShrineOrdainedNoCodex",0,0,0,false, -1,302,Goto,,11,0,0,false,Leave Shrine +1,301,OutputModalText,"Well Done!",0,0,0,false, +1,302,SoundEffect,HighPitchedYay,1,0,0,false,"Cool little sound!" +1,303,ScreenEffect,InvertColors,1,0,0,false,"Invert the Colours" +1,304,Pause,,500,0,0,false,"Hold Tight" +1,305,ScreenEffect,InvertColors,0,0,0,false,"Uninvert Colors" +1,305,SoundEffect,HighPitchedYay,0,0,0,false,"Stop the no longer cool sound..." +1,306,ScreenEffect,ShakeScreen,1,0,0,false,"Earthquake!" +1,307,Pause,,100,0,0,false,"Hold Tight for EarthQuake" +1,308,ScreenEffect,ShakeScreen,0,0,0,false,"Earthquake is over..." +1,309,BoostStats,,1,0,0,false,"Boost stats depending on which shrine they are at" +1,310,ChangeShrineState,ShrineOrdainedWithCodex,0,0,0,false +1,311,Goto,,11,0,0,false,Leave Shrine 1,400,NoOp,,0,0,0,false,Jumped to if ShrineStatus.ShrineOrdainedWithCodex 1,401,OutputModalText,"ShrineStatus.ShrineOrdainedWithCodex",0,0,0,false, 1,402,Goto,,11,0,0,false,Leave Shrine diff --git a/Ultima5Redux/DataFiles/CutSceneScripts.json b/Ultima5Redux/DataFiles/CutSceneScripts.json index 8edc876..5c4e8bd 100644 --- a/Ultima5Redux/DataFiles/CutSceneScripts.json +++ b/Ultima5Redux/DataFiles/CutSceneScripts.json @@ -745,7 +745,7 @@ { "FrameNum": 301, "Command": "OutputModalText", - "StrParam": "ShrineStatus.ShrineOrdainedNoCodex", + "StrParam": "Well Done!", "IntParam": 0, "X": 0, "Y": 0, @@ -754,6 +754,106 @@ }, { "FrameNum": 302, + "Command": "SoundEffect", + "StrParam": "HighPitchedYay", + "IntParam": 1, + "X": 0, + "Y": 0, + "Visible": false, + "Comment": "Cool little sound!" + }, + { + "FrameNum": 303, + "Command": "ScreenEffect", + "StrParam": "InvertColors", + "IntParam": 1, + "X": 0, + "Y": 0, + "Visible": false, + "Comment": "Invert the Colours" + }, + { + "FrameNum": 304, + "Command": "Pause", + "StrParam": "", + "IntParam": 500, + "X": 0, + "Y": 0, + "Visible": false, + "Comment": "Hold Tight" + }, + { + "FrameNum": 305, + "Command": "ScreenEffect", + "StrParam": "InvertColors", + "IntParam": 0, + "X": 0, + "Y": 0, + "Visible": false, + "Comment": "Uninvert Colors" + }, + { + "FrameNum": 305, + "Command": "SoundEffect", + "StrParam": "HighPitchedYay", + "IntParam": 0, + "X": 0, + "Y": 0, + "Visible": false, + "Comment": "Stop the no longer cool sound..." + }, + { + "FrameNum": 306, + "Command": "ScreenEffect", + "StrParam": "ShakeScreen", + "IntParam": 1, + "X": 0, + "Y": 0, + "Visible": false, + "Comment": "Earthquake!" + }, + { + "FrameNum": 307, + "Command": "Pause", + "StrParam": "", + "IntParam": 100, + "X": 0, + "Y": 0, + "Visible": false, + "Comment": "Hold Tight for EarthQuake" + }, + { + "FrameNum": 308, + "Command": "ScreenEffect", + "StrParam": "ShakeScreen", + "IntParam": 0, + "X": 0, + "Y": 0, + "Visible": false, + "Comment": "Earthquake is over..." + }, + { + "FrameNum": 309, + "Command": "BoostStats", + "StrParam": "", + "IntParam": 1, + "X": 0, + "Y": 0, + "Visible": false, + "Comment": "Boost stats depending on which shrine they are at" + }, + { + "FrameNum": 310, + "Command": "ChangeShrineState", + "StrParam": "ShrineOrdainedWithCodex", + "IntParam": 0, + "X": 0, + "Y": 0, + "Visible": false, + "Comment": "" + }, + { + "FrameNum": 311, "Command": "Goto", "StrParam": "", "IntParam": 11, diff --git a/Ultima5Redux/MapUnits/TurnResults/SpecificTurnResults/ScriptTurnResults/BoostStats.cs b/Ultima5Redux/MapUnits/TurnResults/SpecificTurnResults/ScriptTurnResults/BoostStats.cs new file mode 100644 index 0000000..220bd57 --- /dev/null +++ b/Ultima5Redux/MapUnits/TurnResults/SpecificTurnResults/ScriptTurnResults/BoostStats.cs @@ -0,0 +1,9 @@ +using Ultima5Redux.Maps; + +namespace Ultima5Redux.MapUnits.TurnResults.SpecificTurnResults.ScriptTurnResults { + public class BoostStats : CutOrIntroSceneScriptLineTurnResult { + public BoostStats(CutOrIntroSceneScriptLine scriptLine) : base(TurnResultType.Script_BoostStats, + TurnResulActionType.ActionRequired, scriptLine) { + } + } +} \ No newline at end of file diff --git a/Ultima5Redux/MapUnits/TurnResults/SpecificTurnResults/ScriptTurnResults/ScreenEffect.cs b/Ultima5Redux/MapUnits/TurnResults/SpecificTurnResults/ScriptTurnResults/ScreenEffect.cs new file mode 100644 index 0000000..a2d3145 --- /dev/null +++ b/Ultima5Redux/MapUnits/TurnResults/SpecificTurnResults/ScriptTurnResults/ScreenEffect.cs @@ -0,0 +1,9 @@ +using Ultima5Redux.Maps; + +namespace Ultima5Redux.MapUnits.TurnResults.SpecificTurnResults.ScriptTurnResults { + public class ScreenEffect : CutOrIntroSceneScriptLineTurnResult { + public ScreenEffect(CutOrIntroSceneScriptLine scriptLine) : base(TurnResultType.Script_ScreenEffect, + TurnResulActionType.ActionRequired, scriptLine) { + } + } +} \ No newline at end of file diff --git a/Ultima5Redux/MapUnits/TurnResults/SpecificTurnResults/ScriptTurnResults/SoundEffect.cs b/Ultima5Redux/MapUnits/TurnResults/SpecificTurnResults/ScriptTurnResults/SoundEffect.cs index 9710467..580a85f 100644 --- a/Ultima5Redux/MapUnits/TurnResults/SpecificTurnResults/ScriptTurnResults/SoundEffect.cs +++ b/Ultima5Redux/MapUnits/TurnResults/SpecificTurnResults/ScriptTurnResults/SoundEffect.cs @@ -5,7 +5,7 @@ namespace Ultima5Redux.MapUnits.TurnResults.SpecificTurnResults.ScriptTurnResult { public class SoundEffect : CutOrIntroSceneScriptLineTurnResult { - public enum SoundEffectType { WalkOnGrass, DaaaaDoooo } + public enum SoundEffectType { WalkOnGrass, DaaaaDoooo, HighPitchedYay } public SoundEffectType TheSoundEffectType { get; private set; } diff --git a/Ultima5Redux/MapUnits/TurnResults/TurnResult.cs b/Ultima5Redux/MapUnits/TurnResults/TurnResult.cs index 840460a..2d57e64 100644 --- a/Ultima5Redux/MapUnits/TurnResults/TurnResult.cs +++ b/Ultima5Redux/MapUnits/TurnResults/TurnResult.cs @@ -46,7 +46,7 @@ public enum TurnResultType PlayerTakesDamage, TeleportToNewLocation, LoadCombatMap, ExecuteCutScene, Script_PromptVirtueMeditate, Script_ExitBuilding, Script_CreateMapUnit, Script_MapUnitMove, Script_Pause, Script_SoundEffect, Script_Goto, Script_GotoIf, Script_NoOp, Script_PromptMantra, Script_OutputModalText, - Script_ChangeShrineState + Script_ChangeShrineState, Script_ScreenEffect, Script_BoostStats } [SuppressMessage("ReSharper", "SwitchStatementMissingSomeEnumCasesNoDefault")] diff --git a/Ultima5Redux/Maps/CutOrIntroSceneScript.cs b/Ultima5Redux/Maps/CutOrIntroSceneScript.cs index 55df669..9db0a27 100644 --- a/Ultima5Redux/Maps/CutOrIntroSceneScript.cs +++ b/Ultima5Redux/Maps/CutOrIntroSceneScript.cs @@ -28,7 +28,7 @@ public enum Result { Continue, Goto, EndSequence, GotoIf } public enum CutOrIntroSceneScriptLineCommand { CreateMapunit, MoveMapunit, PromptVirtueMeditate, PromptMantra, EndSequence, Comment, Output, Pause, - SoundEffect, Goto, GotoIf, NoOp, OutputModalText, ChangeShrineState + SoundEffect, Goto, GotoIf, NoOp, OutputModalText, ChangeShrineState, ScreenEffect, BoostStats } // "FrameNum": 0, @@ -90,6 +90,14 @@ public enum CutOrIntroSceneScriptLineCommand IEnumerable scriptLinesInFrame = _scriptLines.Where(i => i.FrameNum == nFrame); foreach (CutOrIntroSceneScriptLine scriptLine in scriptLinesInFrame) { switch (scriptLine.Command) { + case CutOrIntroSceneScriptLine.CutOrIntroSceneScriptLineCommand.ScreenEffect: + // todo: oof + turnResults.PushTurnResult(new ScreenEffect(scriptLine)); + break; + case CutOrIntroSceneScriptLine.CutOrIntroSceneScriptLineCommand.BoostStats: + // todo: oof + turnResults.PushTurnResult(new BoostStats(scriptLine)); + break; case CutOrIntroSceneScriptLine.CutOrIntroSceneScriptLineCommand.ChangeShrineState: turnResults.PushTurnResult(new ChangeShrineState(scriptLine, shrineReference)); break; diff --git a/Ultima5Redux/Maps/CutSceneMap.cs b/Ultima5Redux/Maps/CutSceneMap.cs index a8d432d..a3a8564 100644 --- a/Ultima5Redux/Maps/CutSceneMap.cs +++ b/Ultima5Redux/Maps/CutSceneMap.cs @@ -88,6 +88,11 @@ public class CutSceneMap : Map mapUnitToMove.MapUnitPosition.XY = scriptLine.Position; mapUnitToMove.SetActive(scriptLine.Visible); break; + case CutOrIntroSceneScriptLine.CutOrIntroSceneScriptLineCommand.BoostStats: + // todo: boost those stats! + break; + case CutOrIntroSceneScriptLine.CutOrIntroSceneScriptLineCommand.ScreenEffect: + break; case CutOrIntroSceneScriptLine.CutOrIntroSceneScriptLineCommand.SoundEffect: break; case CutOrIntroSceneScriptLine.CutOrIntroSceneScriptLineCommand.Pause: diff --git a/Ultima5Redux/Ultima5Redux.csproj b/Ultima5Redux/Ultima5Redux.csproj index 98362dd..875a6c8 100644 --- a/Ultima5Redux/Ultima5Redux.csproj +++ b/Ultima5Redux/Ultima5Redux.csproj @@ -180,6 +180,7 @@ + @@ -192,6 +193,7 @@ +