The three virtues of a programmer: Laziness, Impatience, and Hubris. – Larry Wall
Difference between revisions of "UE1:RMusic Controller"
m |
m (→Gametype integration (with save support and level change detection)) |
||
Line 133: | Line 133: | ||
{ | { | ||
//we have to find music player in Entry level | //we have to find music player in Entry level | ||
− | + | RMusic_Player = class'RMusic_Component'.static.Find_RMusicPlayerByPPawn(NewPlayer,none,true); | |
+ | if( RMusic_Player != none) | ||
{ | { | ||
//then we stops currently played song | //then we stops currently played song |
Revision as of 03:40, 2 June 2008
This class is part of RMusicPlayer by Raven
About
RMusic_Controller is part of RMusicPlayer beta. It controls RMusic_Player.
Usage
In ActorBrowser find Actor->RMusic_Component->RMusic_Controller, place it on map and configure it.
RMusic_Controller properties
You can configure following properties:
Name: PlayerClass
Type: class<RMusic_Player>
Description: Player class (if you want to have own music directory)
Name: RMusic_File
Type: string
Description: Music file to play
Name: RMusic_PlayAtStartup
Type: bool
Description: Should it be played at level start
Name: RMusic_MuteUMX
Type: bool
Description: If true will mute all music in umx files
Name: RMusic_BroadcastToAll
Type: bool
Description: If true, it'll broadcast functions to all players
Name: RMusic_bUnloadPreviousDSP
Type: bool
Description: If true, all DSP plugins will be unloaded
Name: RMusic_bOwnFadeUpdateTime
Type: bool
Description: If true, RMusic_OwnFadeUpdateTime will be used instead of default FaderUpdateTime in RMusic_Player
Name: RMusic_OwnFadeUpdateTime
Type: float
Description: Defines how fast music will fade in/out
Name: RMusic_bUseSaveControl
Type: bool
Description: If true, special RMusic_Save will be spawned to track last used controller
Name: RMusic_DSPPlugins[16]
Type: string
Description: DSP plugins to load
Name: Action
Type: ENum
Values:
- AC_Play - Plays music
- AC_Stop - Stops music
- AC_ShutDown - Shutdown FMODEX (avoid this one ;) )
Description: Action
Name: RMusic_PlayType
Type: ENum
Values:
- PT_Loop - Loops music
- PT_PlayOnce - Plays once
Description: Play type
Name: RMusic_Transition
Type: ENum
Values:
- TRANS_Instanly - Instant transition
- TRANS_Fade - Smooth fade
Description: Transition type
Advanced usage (gametype/console integration)
RMusicPlayer can be also integrated with gametypes, console.
Gametype integration (with save support and level change detection)
Subclass of SinglePlayer2 (SinglePlayer2 is part of OldSkool by UsAaR33)
class RMusic_SingleGameInfo extends SinglePlayer2; event PostLogin( playerpawn NewPlayer ) { local RMusic_Controller RMusic_Controller; local RMusic_Save RMusic_Save; local RMusic_Player RMusic_Player; Super.PostLogin(NewPlayer); if(Level.NetMode != NM_DedicatedServer) { if(NewPlayer.GetEntryLevel() != none) { //we have to find music player in Entry level RMusic_Player = class'RMusic_Component'.static.Find_RMusicPlayerByPPawn(NewPlayer,none,true); if( RMusic_Player != none) { //then we stops currently played song RMusic_Player.RMusic_Stop(); //and eventually add info about player/current level if( RMusic_Player.bAuthoritative ) { RMusic_Player.RMusic_LocalPlayer = NewPlayer; RMusic_Player.RMusic_OldLevel = NewPlayer.Level; } } } //we have to found save part foreach AllActors(class'RMusic_Save', RMusic_Save) { //we have to check if we have saved controller if(RMusic_Save.SavedController != none) { RMusic_Controller=RMusic_Save.SavedController; break; } } //if saved controller is found, we have to restore music if(RMusic_Controller != none) RMusic_Controller.EVENT_Player(); } }
Gametype integration (with level change detection only)
Subclass of coopgame2 (SinglePlayer2is part of OldSkool by UsAaR33)
class RMusic_CoopGameInfo extends SinglePlayer2; event PostLogin( playerpawn NewPlayer ) { local RMusic_Controller RMusic_Controller; local RMusic_Save RMusic_Save; local RMusic_Player RMusic_Player; Super.PostLogin(NewPlayer); if(Level.NetMode != NM_DedicatedServer) { if(NewPlayer.GetEntryLevel() != none) { //we have to find music player in Entry level foreach NewPlayer.GetEntryLevel().AllActors(class'RMusic_Player',RMusic_Player) { //then we stops currently played song RMusic_Player.RMusic_Stop(); //and eventually add info about player/current level if( RMusic_Player.bAuthoritative ) { RMusic_Player.RMusic_LocalPlayer = NewPlayer; RMusic_Player.RMusic_OldLevel = NewPlayer.Level; } } } } }
Gametype integration (with save support only)
Subclass of SinglePlayer2 (SinglePlayer2 is part of OldSkool by UsAaR33)
class RMusic_SingleGameInfo extends SinglePlayer2; event PostLogin( playerpawn NewPlayer ) { local RMusic_Controller RMusic_Controller; local RMusic_Save RMusic_Save; local RMusic_Player RMusic_Player; Super.PostLogin(NewPlayer); if(Level.NetMode != NM_DedicatedServer) { //we have to found save part foreach AllActors(class'RMusic_Save', RMusic_Save) { //we have to check if we have saved controller if(RMusic_Save.SavedController != none) { RMusic_Controller=RMusic_Save.SavedController; break; } } //if saved controller is found, we have to restore music if(RMusic_Controller != none) RMusic_Controller.EVENT_Player(); } }
Console integration
Subclass of UTConsole
class RMusic_Console extends UTConsole; function DrawLevelAction( canvas C ) { local RMusic_Player RMusic_Player; local PlayerPawn PP; if ( Viewport.Actor.Level.LevelAction == LEVACT_Loading ) // Loading Screen { PP = Root.GetPlayerOwner(); if(PP != none) { if(PP.GetEntryLevel() != none) { foreach PP.GetEntryLevel().AllActors(class'RMusic_Player', RMusic_Player) break; if (RMusic_Player != none && RMusic_Player.RMusic_IsPlaying()) RMusic_Player.RMusic_Stop(); } } } Super.DrawLevelAction(C); }