Ooops
January 26, 2021, 12:27:51 PM

Author Topic: [bmx] Self-contained splash screen by JoshK [ 1+ years ago ]  (Read 589 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
Title : Self-contained splash screen
Author : JoshK
Posted : 1+ years ago

Description : Displays a splash screen when your program starts

Code :
Code: BlitzMax
  1. SuperStrict
  2.  
  3. Import maxgui.drivers
  4. Import brl.bmploader
  5. Import brl.timer
  6. Import brl.retro
  7. Import brl.random
  8.  
  9. Type TSplashScreen
  10.  
  11.         Const IMAGEDIR:String=""'change this if you want
  12.  
  13.         Field window:TGadget
  14.         Field timer:TTimer
  15.        
  16.         'Method SetText(text:String)
  17.         '       If window
  18.         '               SetStatusText window,text
  19.         '       EndIf
  20.         'EndMethod
  21.        
  22.         Function Create:TSplashScreen(group:TGadget)
  23.                 Local splashscreen:TSplashScreen=New TSplashScreen
  24.                 Local pixmap:TPixmap
  25.                 Local n:Int
  26.                 Local file:String
  27.                 Local splashfile:String[]
  28.                 Local panel:TGadget
  29.                
  30.                 SeedRnd MilliSecs()
  31.                 Local dir:String[]
  32.                 dir=LoadDir(IMAGEDIR)
  33.                 If Not dir Return Null
  34.                 For file$=EachIn dir
  35.                         If ExtractExt(file).tolower()="bmp"
  36.                                 If Left(file.tolower(),6)="splash"
  37.                                         splashfile=splashfile[..splashfile.length+1]
  38.                                         splashfile[splashfile.length-1]=file
  39.                                 EndIf
  40.                         EndIf
  41.                 Next
  42.                 If Not splashfile.length Return Null
  43.                 n=Rand(0,splashfile.length-1)
  44.                 pixmap=LoadPixmap(IMAGEDIR+splashfile[n])
  45.                 If Not pixmap Return Null
  46.                
  47.                 splashscreen.window=CreateWindow(AppTitle,0,0,pixmap.width,pixmap.height,group,WINDOW_CLIENTCOORDS|WINDOW_CENTER|WINDOW_HIDDEN)'|WINDOW_STATUS
  48.                 'SetGadgetAlpha splashscreen.window,0.8
  49.                 panel=CreatePanel(0,0,splashscreen.window.ClientWidth(),splashscreen.window.ClientHeight(),splashscreen.window)
  50.                 SetGadgetPixmap(panel,pixmap)
  51.                 ShowGadget splashscreen.window
  52.                 ActivateGadget splashscreen.window
  53.                
  54.                 Return splashscreen
  55.         EndFunction
  56.        
  57.         Method Close(wait:Int=0)
  58.                 If wait
  59.                         If timer
  60.                                 timer.stop()
  61.                                 RemoveHook(EmitEventHook,EventHook,Self)
  62.                         EndIf
  63.                         timer=CreateTimer(1.0/Float(wait))
  64.                         AddHook(EmitEventHook,EventHook,Self)                  
  65.                 Else
  66.                         RemoveHook(EmitEventHook,EventHook,Self)
  67.                         If timer
  68.                                 timer.Stop()
  69.                                 timer=Null
  70.                         EndIf
  71.                         If window
  72.                                 FreeGadget(window)
  73.                                 window=Null    
  74.                         EndIf
  75.                 EndIf
  76.         EndMethod
  77.        
  78.         Function EventHook:Object(id:Int,data:Object,context:Object)
  79.                 Local event:TEvent
  80.                 Local splashscreen:TSplashScreen
  81.                
  82.                 event=TEvent(data)
  83.                 If event
  84.                         splashscreen=TSplashScreen(context)
  85.                         If splashscreen
  86.                                 Select event.id
  87.                                 Case EVENT_TIMERTICK
  88.                                         If event.source=splashscreen.timer
  89.                                                 splashscreen.Close()                                   
  90.                                         EndIf
  91.                                 EndSelect
  92.                         EndIf
  93.                 EndIf
  94.                 Return data
  95.         EndFunction
  96.        
  97. EndType


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal