aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/SDK/UPartyDefs.pas
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/SDK/UPartyDefs.pas')
-rw-r--r--plugins/SDK/UPartyDefs.pas189
1 files changed, 189 insertions, 0 deletions
diff --git a/plugins/SDK/UPartyDefs.pas b/plugins/SDK/UPartyDefs.pas
new file mode 100644
index 00000000..09f97812
--- /dev/null
+++ b/plugins/SDK/UPartyDefs.pas
@@ -0,0 +1,189 @@
+unit UPartyDefs;
+{*********************
+ uPluginDefs
+ Some Basic Structures and Functions used to communicate with Plugins
+ Usable as Delphi Plugin SDK
+*********************}
+
+interface
+
+{$IFDEF FPC}
+ {$MODE Delphi}
+{$ENDIF}
+
+{$I switches.inc}
+
+uses UPluginDefs;
+
+type
+ //----------------
+ // TUS_Party_Proc_Init - Structure of the Party Init Proc
+ // This Function is called on SingScreen Init Everytime this Modi should be sung
+ // Return Non Zero to Abort Party Modi Loading... In this Case another Plugin will be loaded
+ //----------------
+ TUS_Party_Proc_Init = Function (ID: Integer): integer; stdcall;
+
+ //----------------
+ // TUS_Party_Proc_Draw - Structure of the Party Draw Proc
+ // This Function is called on SingScreen Draw (Not when Paused). You should draw in this Proc
+ // Return Non Zero to Finish Song... In this Case Score Screen is loaded
+ //----------------
+ TUS_Party_Proc_Draw = Function (ID: Integer): integer; stdcall;
+
+ //----------------
+ // TUS_Party_Proc_DeInit - Structure of the Party DeInit Proc
+ // This Function is called on SingScreen DeInit When Plugin abort Song or Song finishes
+ // Return Winner
+ //----------------
+ TUS_Party_Proc_DeInit = Function (ID: Integer): integer; stdcall;
+
+ //----------------
+ // TUS_ModiInfo - Some Infos from Plugin to Partymode.
+ // Used to register party modi to Party manager
+ // ---
+ // Version Structure:
+ // First Byte: Head Revison
+ // Second Byte: Sub Revison
+ // Third Byte: Sub Revision 2
+ // Fourth Byte: Letter (For Bug Fix releases. 0 or 'a' .. 'z')
+ //----------------
+ TModiInfo_Name = Array [0..31] of Char;
+ TModiInfo_Desc = Array [0..63] of Char;
+
+ PUS_ModiInfo = ^TUS_ModiInfo;
+ TUS_ModiInfo = record
+ //Size of this record (usefull if record will be extended in the future)
+ cbSize: Integer; //Don't forget to set this as Plugin!
+
+ //Infos about the Modi
+ Name : TModiInfo_Name; //Modiname to Register for the Plugin
+ Description: TModiInfo_Desc; //Plugin Description
+
+ //------------
+ // Loading Settings
+ // ---
+ // Bit to Set | Triggered Option
+ // 1 | Song should be loaded
+ // 2 | Song has to be Non Duett
+ // 4 | Song has to be Duett (If 2 and 4 is set, both will be ignored)
+ // 8 | Only Playable with 2 and more players
+ // 16 | Restrict Background Loading
+ // 32 | Restrict Video Loading
+ // 64 | Increase TimesPlayed for Cur. Player
+ // 128 | Not in Use, Don't set it!
+ LoadingSettings: Byte;
+
+ // SingScreen Settings
+ // ---
+ // Bit to Set | Triggered Option
+ // 1 | ShowNotes
+ // 2 | ShowScores
+ // 4 | ShowTime
+ // 8 | Start Audio Playback automaticaly
+ // 16 | Not in Use, Don't set it!
+ // 32 | Not in Use, Don't set it!
+ // 64 | Not in Use, Don't set it!
+ // 128 | Not in Use, Don't set it!
+ SingScreenSettings: Byte;
+
+ // With which count of players can this modi be played
+ // ---
+ //Set different Bits
+ //1 -> One Player
+ //2 -> Two Players
+ //4 -> Three Players
+ //8 -> Four Players
+ //16-> Six Players
+ //e.g. : 10 -> Playable with 2 and 4 Players
+ NumPlayers: Byte;
+
+ // ID that is given to the Party Procs when they are called
+ // If this Modi is running
+ // (e.g. to register Until 2000 and Until 5000 with the same Procs
+ // ID is the Max Point Count in this example)
+ ID: Integer;
+
+ // Party Procs called on Party
+ // ---
+ // Set to nil(C: NULL) if u don't want to use this method
+ ModiInit: TUS_Party_Proc_Init;
+ ModiDraw: TUS_Party_Proc_Draw;
+ ModiDeInit: TUS_Party_Proc_DeInit;
+ end;
+
+ //--------------
+ // Team Info Record. Used by "Party/GetTeamInfo" and "Party/SetTeamInfo"
+ //--------------
+ TTeamInfo = record
+ NumTeams: Byte;
+ Teaminfo: array[0..5] of record
+ Name: PChar; //Teamname
+ Score: Word; //TeamScore
+ Joker: Byte; //Team Jokers available
+ CurPlayer: Byte; //Id of Cur. Playing Player
+ NumPlayers: Byte;
+ Playerinfo: array[0..3] of record
+ Name: PChar; //Playername
+ TimesPlayed: Byte; //How often this Player has Sung
+ end;
+ end;
+ end;
+
+//----------------
+// Some Default Constants
+//----------------
+const
+ // to use for TUS_ModiInfo.LoadingSettings
+ MLS_LoadSong = 1; //Song should be loaded
+ MLS_NotDuett = 2; //Song has to be Non Duett
+ MLS_ForceDuett = 4; //Song has to be Duett (If 2 and 4 is set, both will be ignored)
+ MLS_TeamOnly = 8; //Only Playable with 2 and more players
+ MLS_RestrictBG = 16; //Restrict Background Loading
+ MLS_RestrictVid = 32; //Restrict Video Loading
+ MLS_IncTP = 64; //Increase TimesPlayed for Cur. Player
+
+ // to use with TUS_ModiInfo.SingScreenSettings
+ MSS_ShowNotes = 1; //ShowNotes
+ MSS_ShowScores = 2; //ShowScores
+ MSS_ShowTime = 4; //ShowTime
+ MSS_AutoPlayback= 8; //Start Audio Playback automaticaly
+
+ //Standard (Duell) for TUS_ModiInfo.LoadingSettings and TUS_ModiInfo.SingScreenSettings
+ MLS_Standard = MLS_LoadSong or MLS_IncTP;
+ MSS_Standard = MSS_ShowNotes or MSS_ShowScores or MSS_ShowTime or MSS_AutoPlayback;
+
+//-------------
+// Some helper functions to register Party Modi
+//-------------
+Function RegisterModi(const PluginInterface: PUS_PluginInterface; const Name: TModiInfo_Name; const Description: TModiInfo_Desc; const LoadingSettings, SingScreenSettings, NumPlayers: Byte; const ID: Integer; const ModiInit: TUS_Party_Proc_Init = nil; const ModiDeInit: TUS_Party_Proc_DeInit = nil; const ModiDraw: TUS_Party_Proc_Draw = nil): THandle;
+
+
+
+implementation
+
+//-------------
+// Function that Prepares the ModiInfo Record and Calls Party/RegisterModi
+//-------------
+Function RegisterModi(const PluginInterface: PUS_PluginInterface; const Name: TModiInfo_Name; const Description: TModiInfo_Desc; const LoadingSettings, SingScreenSettings, NumPlayers: Byte; const ID: Integer; const ModiInit: TUS_Party_Proc_Init; const ModiDeInit: TUS_Party_Proc_DeInit; const ModiDraw: TUS_Party_Proc_Draw): THandle;
+var
+ ModiInfo: TUS_ModiInfo;
+begin
+ //Init Record
+ ModiInfo.cbSize := SizeOf(TUS_ModiInfo);
+
+ ModiInfo.Name := Name;
+ ModiInfo.Description := Description;
+ ModiInfo.LoadingSettings := LoadingSettings;
+ ModiInfo.SingScreenSettings := SingScreenSettings;
+ ModiInfo.NumPlayers := NumPlayers;
+
+ ModiInfo.ID := ID;
+ ModiInfo.ModiInit := ModiInit;
+ ModiInfo.ModiDraw := ModiDraw;
+ ModiInfo.ModiDeInit := ModiDeInit;
+
+ //Call Service
+ Result := PluginInterface.CallService('Party/RegisterModi', Integer(@ModiInfo), nil);
+end;
+
+end. \ No newline at end of file