Advertisement
Guest User

Untitled

a guest
Jan 15th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 106.32 KB | None | 0 0
  1. #===============================================================================
  2. # Ultimate Title Screen Resource (settings)
  3. #===============================================================================
  4. # Config value for selecting title screen style
  5. SCREENSTYLE = 6
  6. # 0 - A custom-styled screen (moves dynamically with the mouse [if present])
  7. # 1 - FR/LG
  8. # 2 - HG/SS
  9. # 3 - R/S/E
  10. # 4 - D/P/PT
  11. # 5 - B/W
  12. # 6 - X/Y <- Definitely the best one
  13. # 7 - S/M
  14.  
  15. # Species for the Pokemon cry being played
  16. # Set as nil for no cry (not applicable with style 5)
  17. SPECIES = PBSpecies::DEOXYS
  18. #-------------------------------------------------------------------------------
  19. # BGM configurations
  20. #-------------------------------------------------------------------------------
  21. # BGM names for the different styles
  22. GEN_ONE_BGM = "Title Screen.ogg"
  23. GEN_TWO_BGM = "Title Screen.ogg"
  24. GEN_THREE_BGM = "Title Screen.ogg"
  25. GEN_FOUR_BGM = "Title Screen.ogg"
  26. GEN_FIVE_BGM = "Title Screen.ogg"
  27. GEN_SIX_BGM = "Title Screen.ogg"
  28. GEN_CUSTOM_BGM = "Title Screen.ogg"
  29. GEN_SEVEN_BGM = "Intro.ogg"
  30. # BGM names for the FR/LG intro scene (left one is for style 1, right is for 0)
  31. CLASSIC_INTRO_BGM = (SCREENSTYLE==1) ? "intro_frlg.ogg" : "intro_origin.ogg"
  32. # BGM name for the credits scene
  33. CREDITS_BGM = "credits.ogg"
  34.  
  35. # uses the new custom credits scene, overwriting the default one in Essentials
  36. CUSTOM_CREDITS = false
  37. #-------------------------------------------------------------------------------
  38. # Turns on the option for the game to restart after music has done playing
  39. RESTART_TITLE = true
  40. # Decides whether or not to play the title screen even if $DEBUG is on
  41. PLAY_ON_DEBUG = true
  42. #-------------------------------------------------------------------------------
  43. # More detailed configurations:
  44. #-------------------------------------------------------------------------------
  45. # Decides whether or not, or which Intro scene to play
  46. # 1 - FR/LG
  47. PLAY_INTRO_SCENE = false
  48. # Decides between the use of OR/AS or R/S/E styled opening for style 3
  49. NEW_GENERATION = true
  50. # Toggle EXPAND_STYLE to:
  51. # - colour the background in style 5
  52. # - show the Pokemon panorama in style 6
  53. # - give motion to style 7
  54. EXPAND_STYLE = true
  55. # Applies a form to the Pokemon sprite for style 5
  56. SPECIES_FORM = 0
  57. #-------------------------------------------------------------------------------
  58. # The Following only applies if you're using the Gen 6 style + Elite Battle.
  59. #-------------------------------------------------------------------------------
  60. # Species of the Pokemon displayed in the demo
  61. EB_SPECIES = [PBSpecies::CHARMELEON,PBSpecies::IVYSAUR,PBSpecies::WARTORTLE]
  62. # Battle backgrounds for different species
  63. EB_BG = ["City","Field","Water"]
  64. # Battle bases for different species
  65. EB_BASE = ["Cave","FieldDirt","CityConcrete"]
  66. # BGM name
  67. EB_DEMO_BGM = "global_opening.ogg"
  68.  
  69. #===============================================================================
  70. # New animated Title Screens for Pokemon Essentials
  71. # by Luka S.J.
  72. #
  73. # Adds new visual styles to the Pokemon Essentials title screen, and animates
  74. # depending on the style selected
  75. #
  76. # A lot of time and effort went into making this an extensive and comprehensive
  77. # resource. So please be kind enough to give credit when using it.
  78. #
  79. # Enjoy the script, and make sure to give credit!
  80. # (DO NOT ALTER THE NAMES OF THE INDIVIDUAL SCRIPT SECTIONS OR YOU WILL BREAK
  81. # YOUR SYSTEM!)
  82. #===============================================================================
  83. class Scene_Intro
  84.  
  85. alias main_old main
  86. def main
  87. $DEBUG = $memDebug
  88. # fix for Mej's Challenge Modes script
  89. if $game_switches && defined?(TEMP_DISABLE_RANDOMIZERS_SWITCH)
  90. @switch_bak = $game_switches[TEMP_DISABLE_RANDOMIZERS_SWITCH]
  91. $game_switches[TEMP_DISABLE_RANDOMIZERS_SWITCH] = true
  92. end
  93. Graphics.transition(0)
  94. # Loads up a species cry for the title screen
  95. species = SPECIES
  96. species = getConst(PBSpecies,SPECIES) if !SPECIES.nil? && !SPECIES.is_a?(Numeric)
  97. @cry = pbCryFile(species) if !species.nil?
  98. $Trainer = PokeBattle_Trainer.new("",0)
  99. # Cycles through the intro pictures
  100. @skip = false
  101. self.cyclePics(@pics)
  102. case PLAY_INTRO_SCENE
  103. when 1
  104. ClassicIntro.new
  105. end
  106. # Selects title screen style
  107. case SCREENSTYLE
  108. when 1
  109. @screen = GenOneStyle.new
  110. when 2
  111. @screen = GenTwoStyle.new
  112. when 3
  113. @screen = GenThreeStyle.new
  114. when 4
  115. @screen = GenFourStyle.new
  116. when 5
  117. @screen = GenFiveStyle.new
  118. when 6
  119. @screen = GenSixStyle.new
  120. when 7
  121. @screen = GenSevenStyle.new
  122. when 0
  123. @screen = GenCustomStyle.new
  124. else
  125. @screen = EssentialsTitleScreen.new # For compatibility sake if SCREENSTYLE is wrong value
  126. end
  127. # Plays the title screen intro (is skippable)
  128. @screen.intro
  129. # Creates/updates the main title screen loop
  130. self.update
  131. # fix for Mej's Challenge Modes script
  132. if $game_switches && defined?(TEMP_DISABLE_RANDOMIZERS_SWITCH)
  133. $game_switches[TEMP_DISABLE_RANDOMIZERS_SWITCH] = @switch_bak
  134. end
  135. Graphics.freeze
  136. end
  137.  
  138. def update
  139. ret=0
  140. loop do
  141. @screen.update
  142. Graphics.update
  143. Input.update
  144. if Input.press?(Input::DOWN) &&
  145. Input.press?(Input::B) &&
  146. Input.press?(Input::CTRL)
  147. ret=1
  148. break
  149. end
  150. if Input.trigger?(Input::C) || (defined?($mouse) && $mouse.leftClick?)
  151. ret=2
  152. break
  153. end
  154. end
  155. case ret
  156. when 1
  157. closeTitleDelete
  158. when 2
  159. closeTitle
  160. end
  161. end
  162.  
  163. def closeTitle
  164. # Play Pokemon cry
  165. pbSEPlay(@cry,100,100) if @cry && SCREENSTYLE!=6
  166. # Fade out
  167. pbBGMStop(1.0)
  168. # disposes current title screen
  169. disposeTitle
  170. # initializes load screen
  171. sscene=PokemonLoadScene.new
  172. sscreen=PokemonLoad.new(sscene)
  173. sscreen.pbStartLoadScreen
  174. end
  175.  
  176. def closeTitleDelete
  177. pbBGMStop(1.0)
  178. # disposes current title screen
  179. disposeTitle
  180. # initializes delete screen
  181. sscene=PokemonLoadScene.new
  182. sscreen=PokemonLoad.new(sscene)
  183. sscreen.pbStartDeleteScreen
  184. end
  185.  
  186. def cyclePics(pics)
  187. sprite=Sprite.new
  188. sprite.opacity=0
  189. for i in 0...pics.length
  190. bitmap=pbBitmap("Graphics/Titles/#{pics[i]}")
  191. sprite.bitmap=bitmap
  192. 15.times do
  193. sprite.opacity+=17
  194. pbWait(1)
  195. end
  196. wait(32)
  197. 15.times do
  198. sprite.opacity-=17
  199. pbWait(1)
  200. end
  201. end
  202. sprite.dispose
  203. end
  204.  
  205. def disposeTitle
  206. @screen.dispose
  207. end
  208.  
  209. def wait(frames,advance=true)
  210. return false if @skip
  211. frames.times do
  212. Graphics.update
  213. Input.update
  214. @skip=true if Input.trigger?(Input::C)
  215. end
  216. return true
  217. end
  218. end
  219. #===============================================================================
  220. # Styled to look like the FRLG games
  221. #===============================================================================
  222. class GenOneStyle
  223. def initialize
  224. # sound file for playing the title screen BGM
  225. bgm = GEN_ONE_BGM
  226. str = "Audio/BGM/"+pbResolveAudioFile(bgm).name
  227. @mp3 = (File.extname(str)==".ogg") ? true : false
  228. @skip = false
  229. # speed of the effect movement
  230. @speed = 16
  231. @opacity = 17
  232. @disposed = false
  233.  
  234. @currentFrame = 0
  235. # calculates after how many frames the game will reset
  236. @totalFrames=getPlayTime(str).to_i*Graphics.frame_rate
  237. pbBGMPlay(bgm)
  238. pbWait(10) if @mp3
  239.  
  240. # creates all the necessary graphics
  241. @viewport = Viewport.new(0,0,Graphics.width,VIEWPORT_HEIGHT)
  242. @viewport.z = 99999
  243. @sprites = {}
  244.  
  245. @sprites["bars"] = Sprite.new(@viewport)
  246. @sprites["bars"].bitmap = pbBitmap("Graphics/Titles/gen_1_bars")
  247. @sprites["bars"].x = @viewport.rect.width
  248. @sprites["bg"] = Sprite.new(@viewport)
  249. @sprites["bg"].bitmap = pbBitmap("Graphics/Titles/gen_1_bg")
  250. @sprites["bg"].x = -@viewport.rect.width
  251. @sprites["start"] = Sprite.new(@viewport)
  252. @sprites["start"].bitmap = pbBitmap("Graphics/Titles/pokestart")
  253. @sprites["start"].x = 138
  254. @sprites["start"].y = 314
  255. @sprites["start"].opacity = 0
  256. @sprites["effect"] = AnimatedPlane.new(@viewport)
  257. @sprites["effect"].bitmap = pbBitmap("Graphics/Titles/gen_1_effect")
  258. @sprites["effect"].visible = false
  259. @sprites["poke"] = Sprite.new(@viewport)
  260. @sprites["poke"].bitmap = pbBitmap("Graphics/Titles/gen_1_poke")
  261. @sprites["poke"].tone = Tone.new(0,0,0,255)
  262. @sprites["poke"].opacity = 0
  263. @sprites["poke2"] = Sprite.new(@viewport)
  264. @sprites["poke2"].bitmap = pbBitmap("Graphics/Titles/gen_1_poke")
  265. @sprites["poke2"].tone = Tone.new(255,255,255,255)
  266. @sprites["poke2"].src_rect.set(0,@viewport.rect.height,@viewport.rect.width,48)
  267. @sprites["poke2"].y = @viewport.rect.height
  268. @sprites["logo"] = Sprite.new(@viewport)
  269. bitmap1=pbBitmap("Graphics/Titles/pokelogo")
  270. bitmap2=pbBitmap("Graphics/Titles/pokelogo2")
  271. @sprites["logo"].bitmap = Bitmap.new(bitmap1.width,bitmap1.height)
  272. @sprites["logo"].bitmap.blt(0,0,bitmap2,Rect.new(0,0,bitmap2.width,bitmap2.height))
  273. @sprites["logo"].bitmap.blt(0,0,bitmap1,Rect.new(0,0,bitmap1.width,bitmap1.height))
  274. @sprites["logo"].tone = Tone.new(255,255,255,255)
  275. @sprites["logo"].x = 8
  276. @sprites["logo"].y = 24
  277. @sprites["logo"].opacity = 0
  278.  
  279. end
  280.  
  281. def intro
  282. wait(16)
  283. 16.times do
  284. @sprites["poke2"].src_rect.y-=24
  285. @sprites["poke2"].y-=24
  286. wait(1)
  287. end
  288. @sprites["poke2"].opacity=0
  289. @sprites["poke2"].src_rect.set(0,0,@viewport.rect.width,@viewport.rect.height)
  290. @sprites["poke2"].y=0
  291. wait(32)
  292. 64.times do
  293. @sprites["poke"].opacity+=4
  294. wait(1)
  295. end
  296. @sprites["poke2"].opacity=255
  297. 8.times do
  298. @sprites["poke2"].opacity-=51
  299. @sprites["bg"].x+=64
  300. wait(1)
  301. end
  302. wait(8)
  303. @sprites["poke2"].opacity=255
  304. 8.times do
  305. @sprites["poke2"].opacity-=51
  306. @sprites["bars"].x-=64
  307. wait(1)
  308. end
  309. wait(8)
  310. @sprites["logo"].opacity=255
  311. @sprites["poke2"].opacity=255
  312. @sprites["poke"].tone=Tone.new(0,0,0,0)
  313. @sprites["effect"].visible=true
  314. c=255.0
  315. 16.times do
  316. @sprites["poke2"].opacity-=255.0/16
  317. c-=255.0/16
  318. @sprites["logo"].tone=Tone.new(c,c,c)
  319. @sprites["effect"].ox+=@speed
  320. wait(1)
  321. end
  322. @skip = false
  323. end
  324.  
  325. def update
  326. @currentFrame+=1 if !@skip
  327. @sprites["effect"].ox+=@speed
  328. @sprites["start"].opacity+=@opacity
  329. @opacity=-17 if @sprites["start"].opacity>=255
  330. @opacity=+17 if @sprites["start"].opacity<=0
  331.  
  332. if @currentFrame==@totalFrames
  333. self.restart if RESTART_TITLE
  334. end
  335. end
  336.  
  337. def restart
  338. pbBGMStop(0)
  339. 51.times do
  340. @viewport.tone.red-=5
  341. @viewport.tone.green-=5
  342. @viewport.tone.blue-=5
  343. self.update
  344. wait(1)
  345. end
  346. raise Reset.new
  347. end
  348.  
  349. def dispose
  350. pbFadeOutAndHide(@sprites)
  351. pbDisposeSpriteHash(@sprites)
  352. @viewport.dispose
  353. @disposed=true
  354. end
  355.  
  356. def disposed?
  357. return @disposed
  358. end
  359.  
  360. def wait(frames,advance=true)
  361. return false if @skip
  362. frames.times do
  363. @currentFrame+=1 if advance
  364. Graphics.update
  365. Input.update
  366. @skip=true if Input.trigger?(Input::C)
  367. end
  368. return true
  369. end
  370.  
  371. end
  372. #===============================================================================
  373. # Styled to look like the HGSS games
  374. #===============================================================================
  375. class GenTwoStyle
  376. def initialize
  377. # sound file for playing the title screen BGM
  378. bgm = GEN_TWO_BGM
  379. str = "Audio/BGM/"+pbResolveAudioFile(bgm).name
  380. @mp3 = (File.extname(str)==".ogg") ? true : false
  381. @skip = false
  382. # speed of the effect movement
  383. @speed = 2
  384. @frame = 0
  385. @opacity = 17
  386. @particles = 16
  387. @effo = 1
  388. @disposed = false
  389.  
  390. @currentFrame = 0
  391. # calculates after how many frames the game will reset
  392. @totalFrames=getPlayTime(str).to_i*Graphics.frame_rate - 40
  393. pbBGMPlay(bgm)
  394. pbWait(10) if @mp3
  395.  
  396. # creates all the necessary graphics
  397. @viewport = Viewport.new(0,0,Graphics.width,VIEWPORT_HEIGHT)
  398. @viewport.z = 99999
  399. @viewport.tone = Tone.new(-255,-255,-255)
  400. @viewport2 = Viewport.new(0,0,Graphics.width,VIEWPORT_HEIGHT)
  401. @viewport2.z = 99998
  402. @sprites = {}
  403.  
  404. @sprites["bg"] = Sprite.new(@viewport)
  405. @sprites["bg2"] = Sprite.new(@viewport2)
  406. @sprites["bg2"].bitmap = pbBitmap("Graphics/Titles/gen_2_bg")
  407.  
  408. @sprites["effect2"] = AnimatedPlane.new(@viewport2)
  409. @sprites["effect2"].bitmap = pbBitmap("Graphics/Titles/gen_2_effect2")
  410.  
  411. @sprites["effect"] = Sprite.new(@viewport)
  412. @sprites["effect"].bitmap = pbBitmap("Graphics/Titles/gen_2_effect")
  413. @sprites["effect"].ox = @sprites["effect"].bitmap.width/2
  414. @sprites["effect"].oy = @sprites["effect"].bitmap.height/2
  415. @sprites["effect"].x = @viewport.rect.width*0.75
  416. @sprites["effect"].y = @viewport.rect.height/2
  417. @sprites["effect3"] = Sprite.new(@viewport)
  418. @sprites["effect3"].bitmap = pbBitmap("Graphics/Titles/gen_2_effect3")
  419. @sprites["effect3"].ox = @sprites["effect3"].bitmap.width/2
  420. @sprites["effect3"].oy = @sprites["effect3"].bitmap.height/2
  421. @sprites["effect3"].x = @sprites["effect"].x
  422. @sprites["effect3"].y = @sprites["effect"].y
  423. @sprites["effect3"].opacity = 0
  424.  
  425. view = @viewport
  426. @sprites["particle"] = Sprite.new(view)
  427. @sprites["particle"].bitmap = pbBitmap("Graphics/Titles/gen_2_particle")
  428. @sprites["particle"].src_rect.set(0,0,@sprites["particle"].bitmap.width/2,@sprites["particle"].bitmap.height)
  429. @sprites["particle"].oy = @sprites["particle"].bitmap.height/2
  430. @sprites["particle"].x = view.rect.width/2
  431. @sprites["particle"].y = view.rect.height/2 + 20
  432. @sprites["particle"].y+=64
  433. @sprites["particle"].visible = false
  434.  
  435. @sprites["pokemon"] = Sprite.new(view)
  436. @sprites["pokemon"].bitmap = pbBitmap("Graphics/Titles/gen_2_pokemon")
  437. @sprites["pokemon"].src_rect.set(0,0,@sprites["pokemon"].bitmap.height,@sprites["pokemon"].bitmap.height)
  438. @sprites["pokemon"].ox = @sprites["pokemon"].src_rect.width/2
  439. @sprites["pokemon"].oy = @sprites["pokemon"].src_rect.height/2
  440. @sprites["pokemon"].x = view.rect.width/2
  441. @sprites["pokemon"].y = view.rect.height/2
  442. @sprites["pokemon"].y+=64
  443. @sprites["pokemon"].visible = false
  444.  
  445. @sprites["start"] = Sprite.new(@viewport)
  446. @sprites["start"].bitmap = pbBitmap("Graphics/Titles/pokestart")
  447. @sprites["start"].ox = @sprites["start"].bitmap.width/2
  448. @sprites["start"].x = @viewport2.rect.width/2
  449. @sprites["start"].y = @viewport2.rect.height-32
  450. @sprites["start"].z = 10
  451. @sprites["start"].opacity = 0
  452. @sprites["start"].visible = false
  453.  
  454. @sprites["logo"] = Sprite.new(@viewport)
  455. bitmap1=pbBitmap("Graphics/Titles/pokelogo")
  456. bitmap2=pbBitmap("Graphics/Titles/pokelogo2")
  457. @sprites["logo"].bitmap = Bitmap.new(bitmap1.width,bitmap1.height)
  458. @sprites["logo"].bitmap.blt(0,0,bitmap2,Rect.new(0,0,bitmap2.width,bitmap2.height))
  459. @sprites["logo"].bitmap.blt(0,0,bitmap1,Rect.new(0,0,bitmap1.width,bitmap1.height))
  460. @sprites["logo"].ox = @sprites["logo"].bitmap.width/2
  461. @sprites["logo"].oy = @sprites["logo"].bitmap.height/2
  462. @sprites["logo"].x = @viewport.rect.width/2
  463. @sprites["logo"].y = @viewport.rect.height/2
  464. @sprites["logo"].z = 10
  465. @sprites["logo"].opacity = 0
  466.  
  467. end
  468.  
  469. def intro
  470. @logolock = true
  471. 10.times do
  472. @viewport.tone.red+=25.5
  473. @viewport.tone.green+=25.5
  474. @viewport.tone.blue+=25.5
  475. self.update
  476. wait(1,false)
  477. end
  478. 22.times do
  479. self.update
  480. wait(1,false)
  481. end
  482. @sprites["logo"].y+=64
  483. 64.times do
  484. @sprites["logo"].y-=1
  485. @sprites["logo"].opacity+=4
  486. @sprites["logo"].tone.red+=2
  487. @sprites["logo"].tone.green+=2
  488. @sprites["logo"].tone.blue+=2
  489. self.update
  490. wait(1,false)
  491. end
  492. 16.times do
  493. @sprites["logo"].tone.red+=8
  494. @sprites["logo"].tone.green+=8
  495. @sprites["logo"].tone.blue+=8
  496. self.update
  497. wait(1,false)
  498. end
  499. @sprites["start"].opacity = 0
  500. @sprites["start"].visible = true
  501. @opacity = 17
  502. @viewport.tone = Tone.new(255,255,255)
  503. @logolock = false
  504. for i in 0...@particles
  505. @sprites["p#{i}"] = AnimatedSpriteParticle.new(@viewport)
  506. @sprites["p#{i}"].dx = @sprites["effect"].x
  507. @sprites["p#{i}"].dy = @sprites["effect"].y
  508. @sprites["p#{i}"].inverted = false
  509. @sprites["p#{i}"].repeat = 1
  510. @sprites["p#{i}"].count = 0
  511. @sprites["p#{i}"].refresh
  512. end
  513. @sprites["pokemon"].visible = true
  514. @sprites["particle"].visible = true
  515. 17.times do
  516. @viewport.tone.red-=15 if @viewport.tone.red > 0
  517. @viewport.tone.green-=15 if @viewport.tone.green > 0
  518. @viewport.tone.blue-=15 if @viewport.tone.blue > 0
  519. self.update
  520. wait(1,false)
  521. end
  522. end
  523.  
  524. def update
  525. @currentFrame+=1 if !@skip
  526. @frame+=1
  527. if !@logolock
  528. @sprites["logo"].tone.red-=15 if @sprites["logo"].tone.red > 0
  529. @sprites["logo"].tone.green-=15 if @sprites["logo"].tone.green > 0
  530. @sprites["logo"].tone.blue-=15 if @sprites["logo"].tone.blue > 0
  531. end
  532. @sprites["pokemon"].src_rect.x+=@sprites["pokemon"].src_rect.width if @frame > @speed
  533. @sprites["pokemon"].src_rect.x=0 if @sprites["pokemon"].src_rect.x >= @sprites["pokemon"].bitmap.width
  534. @sprites["particle"].src_rect.x-=16
  535. @sprites["particle"].src_rect.x=@sprites["particle"].bitmap.width/2 if @sprites["particle"].src_rect.x <= 0
  536. @frame = 0 if @frame > @speed
  537. @sprites["start"].opacity+=@opacity
  538. @sprites["effect"].angle+=0.4 if $ResizeFactor <= 1
  539. @sprites["effect2"].ox-=1
  540. @sprites["effect3"].angle+=0.2 if $ResizeFactor <= 1
  541. @sprites["effect3"].opacity-=@effo
  542. if @sprites["effect3"].opacity <= 0
  543. @effo = -1
  544. elsif @sprites["effect3"].opacity >= 255
  545. @effo = 1
  546. end
  547. @opacity=-17 if @sprites["start"].opacity>=255
  548. @opacity=+17 if @sprites["start"].opacity<=0
  549. for i in 0...@particles
  550. @sprites["p#{i}"].update if @sprites["p#{i}"]
  551. end
  552. if @currentFrame==@totalFrames
  553. self.restart if RESTART_TITLE
  554. end
  555. end
  556.  
  557. def restart
  558. pbBGMStop(0)
  559. 51.times do
  560. @viewport.tone.red-=5
  561. @viewport.tone.green-=5
  562. @viewport.tone.blue-=5
  563. @viewport2.tone.red-=5
  564. @viewport2.tone.green-=5
  565. @viewport2.tone.blue-=5
  566. self.update
  567. wait(1)
  568. end
  569. raise Reset.new
  570. end
  571.  
  572. def dispose
  573. pbFadeOutAndHide(@sprites)
  574. pbDisposeSpriteHash(@sprites)
  575. @viewport.dispose
  576. @disposed=true
  577. end
  578.  
  579. def disposed?
  580. return @disposed
  581. end
  582.  
  583. def wait(frames,advance=true)
  584. return false if @skip
  585. frames.times do
  586. @currentFrame+=1 if advance
  587. Graphics.update
  588. Input.update
  589. @skip=true if Input.trigger?(Input::C)
  590. end
  591. return true
  592. end
  593.  
  594. end
  595. #===============================================================================
  596. # Styled to look like the RSE games
  597. #===============================================================================
  598. class GenThreeStyle
  599.  
  600. def initialize
  601. # sound file for playing the title screen BGM
  602. bgm = GEN_THREE_BGM
  603. str = "Audio/BGM/"+pbResolveAudioFile(bgm).name
  604. @mp3 = (File.extname(str)==".ogg") ? true : false
  605. @skip = false
  606. # speed of the effect movement
  607. @speed = 1
  608. @opacity = 2
  609. @frame = 0
  610. @disposed = false
  611. # decides whether to use the OR/AS or R/S/E transitioning
  612. @new = NEW_GENERATION
  613.  
  614. @currentFrame = 0
  615. # calculates after how many frames the game will reset
  616. @totalFrames=getPlayTime(str).to_i*Graphics.frame_rate
  617. pbBGMPlay(bgm)
  618.  
  619. # creates all the necessary graphics
  620. @viewport = Viewport.new(0,0,Graphics.width,VIEWPORT_HEIGHT)
  621. @viewport.z = 99999
  622. @viewport2 = Viewport.new(0,0,Graphics.width,VIEWPORT_HEIGHT)
  623. @viewport2.z = 99998
  624. @sprites = {}
  625.  
  626. @sprites["bg"] = Sprite.new(@viewport2)
  627. @sprites["bg"].bitmap = pbBitmap("Graphics/Titles/gen_3_bg")
  628. @sprites["bg"].tone = Tone.new(255,255,255)
  629. @sprites["bg"].opacity = 0
  630. @sprites["bg2"] = Sprite.new(@viewport)
  631. @sprites["bg2"].bitmap = pbBitmap("Graphics/Titles/gen_3_bg_ds1") if @new
  632. @sprites["bg2"].opacity = 0
  633. @sprites["poke1"] = Sprite.new(@viewport2)
  634. @sprites["poke1"].bitmap=pbBitmap("Graphics/Titles/gen_3_poke1")
  635. @sprites["poke1"].opacity = 0
  636. @sprites["poke2"] = Sprite.new(@viewport2)
  637. @sprites["poke2"].bitmap=pbBitmap("Graphics/Titles/gen_3_poke2")
  638. @sprites["poke2"].opacity=0
  639. @sprites["effect"] = AnimatedPlane.new(@viewport2)
  640. @sprites["effect"].bitmap = pbBitmap("Graphics/Titles/gen_3_effect")
  641. @sprites["effect"].visible = false
  642. @sprites["logo2"] = Sprite.new(@viewport)
  643. @sprites["logo2"].bitmap = pbBitmap("Graphics/Titles/pokelogo2")
  644. @sprites["logo2"].x = 50
  645. @sprites["logo2"].y = 24-32
  646. @sprites["logo2"].opacity = 0
  647. @sprites["logo1"] = Sprite.new(@viewport)
  648. @sprites["logo1"].bitmap = pbBitmap("Graphics/Titles/pokelogo")
  649. @sprites["logo1"].x = 50
  650. @sprites["logo1"].y = 24+64
  651. @sprites["logo1"].opacity=0
  652. @sprites["logo3"] = Sprite.new(@viewport)
  653. @sprites["logo3"].bitmap = pbBitmap("Graphics/Titles/pokelogo")
  654. @sprites["logo3"].tone = Tone.new(255,255,255)
  655. @sprites["logo3"].x = 18
  656. @sprites["logo3"].y = 24+64
  657. @sprites["logo3"].src_rect.set(-34,0,34,230)
  658. @sprites["start"] = Sprite.new(@viewport)
  659. @sprites["start"].bitmap = pbBitmap("Graphics/Titles/pokestart")
  660. @sprites["start"].x = 178
  661. @sprites["start"].y = 312
  662. @sprites["start"].visible = false
  663. end
  664.  
  665. def intro
  666. if @new
  667. @sprites["logo1"].src_rect.width = 0
  668. @sprites["logo1"].opacity = 255
  669. end
  670. 16.times do
  671. if @new
  672. @sprites["logo1"].src_rect.width+=(@sprites["logo1"].bitmap.width/16.0).ceil
  673. else
  674. @sprites["logo1"].opacity+=16
  675. end
  676. wait(1)
  677. end
  678. wait(16)
  679. 12.times do
  680. if !@new
  681. @sprites["logo3"].x+=34
  682. @sprites["logo3"].src_rect.x+=34
  683. end
  684. wait(1)
  685. end
  686. @sprites["logo3"].x=18
  687. @sprites["logo3"].src_rect.x=-34
  688. wait(32)
  689. 2.times do
  690. 12.times do
  691. @sprites["logo3"].x+=34
  692. @sprites["logo3"].src_rect.x+=34
  693. @sprites["bg"].opacity+=21.5 if !@new
  694. @sprites["bg2"].opacity+=1 if @new
  695. wait(1)
  696. end
  697. @sprites["logo3"].x=18
  698. @sprites["logo3"].src_rect.x=-34
  699. 4.times do
  700. @sprites["bg2"].opacity+=1 if @new
  701. wait(1)
  702. end
  703. 16.times do
  704. @sprites["bg"].opacity-=16 if !@new
  705. @sprites["bg2"].opacity+=1 if @new
  706. wait(1)
  707. end
  708. 32.times do
  709. @sprites["bg2"].opacity+=1 if @new
  710. wait(1)
  711. end
  712. end
  713. @sprites["logo3"].visible=false
  714. if @new
  715. @sprites["logo2"].ox = @sprites["logo2"].bitmap.width/2
  716. @sprites["logo2"].oy = @sprites["logo2"].bitmap.height/2
  717. @sprites["logo2"].x = @viewport.rect.width/2
  718. @sprites["logo2"].y+=96+@sprites["logo2"].bitmap.height/2
  719. @sprites["logo2"].zoom_x = 1.4
  720. @sprites["logo2"].zoom_y = 1.4
  721. @sprites["logo2"].opacity = 0
  722. @sprites["logo2"].tone = Tone.new(255,255,255)
  723. end
  724. 16.times do
  725. if @new
  726. @sprites["logo1"].tone.red+=3
  727. @sprites["logo1"].tone.green+=3
  728. @sprites["logo1"].tone.blue+=3
  729. else
  730. @sprites["logo1"].y-=2
  731. end
  732. @sprites["bg2"].opacity+=1 if @new
  733. wait(1)
  734. end
  735. 16.times do
  736. if @new
  737. @sprites["logo1"].tone.red+=3
  738. @sprites["logo1"].tone.green+=3
  739. @sprites["logo1"].tone.blue+=3
  740. else
  741. @sprites["logo1"].y-=2
  742. @sprites["logo2"].y+=2
  743. @sprites["logo2"].opacity+=16
  744. end
  745. @sprites["bg2"].opacity+=1 if @new
  746. wait(1)
  747. end
  748. 43.times do
  749. if @new
  750. @sprites["logo1"].tone.red+=3
  751. @sprites["logo1"].tone.green+=3
  752. @sprites["logo1"].tone.blue+=3
  753. @sprites["bg2"].tone.red+=3
  754. @sprites["bg2"].tone.green+=3
  755. @sprites["bg2"].tone.blue+=3
  756. end
  757. @sprites["bg2"].opacity+=1 if @new
  758. wait(1)
  759. end
  760. 8.times do
  761. if @new
  762. @sprites["logo1"].tone.red+=3
  763. @sprites["logo1"].tone.green+=3
  764. @sprites["logo1"].tone.blue+=3
  765. @sprites["logo2"].opacity+=36
  766. @sprites["logo2"].zoom_x-=0.05
  767. @sprites["logo2"].zoom_y-=0.05
  768. @sprites["bg2"].tone.red+=3
  769. @sprites["bg2"].tone.green+=3
  770. @sprites["bg2"].tone.blue+=3
  771. end
  772. wait(1)
  773. end
  774. if @new
  775. @viewport.tone = Tone.new(255,255,255)
  776. @viewport2.tone = Tone.new(255,255,255)
  777. @sprites["logo1"].y-=64
  778. @sprites["logo2"].y-=64
  779. @sprites["bg2"].visible = false
  780. end
  781. wait(5)
  782. @sprites["logo1"].tone = Tone.new(0,0,0)
  783. @sprites["logo2"].tone = Tone.new(0,0,0)
  784. @sprites["bg"].tone=Tone.new(0,0,0)
  785. @sprites["bg"].opacity=255
  786. @sprites["bg2"].tone = Tone.new(0,0,0)
  787. @sprites["bg2"].opacity = 255
  788. @sprites["poke1"].opacity=255
  789. @sprites["effect"].visible=true
  790. @skip = false
  791. end
  792.  
  793. def update
  794. @currentFrame+=1 if !@skip
  795. @frame+=1
  796. @viewport.tone.red-=15 if @viewport.tone.red > 0
  797. @viewport.tone.green-=15 if @viewport.tone.green > 0
  798. @viewport.tone.blue-=15 if @viewport.tone.blue > 0
  799. @viewport2.tone.red-=15 if @viewport.tone.red > 0
  800. @viewport2.tone.green-=15 if @viewport.tone.green > 0
  801. @viewport2.tone.blue-=15 if @viewport.tone.blue > 0
  802. @sprites["effect"].oy+=@speed
  803. @sprites["poke2"].opacity+=@opacity
  804. @opacity=-2 if @sprites["poke2"].opacity>=255
  805. @opacity=+2 if @sprites["poke2"].opacity<=0
  806. if @frame==8
  807. @sprites["start"].visible=true
  808. elsif @frame==24
  809. @sprites["start"].visible=false
  810. @frame=0
  811. end
  812.  
  813. if @currentFrame==@totalFrames
  814. self.restart if RESTART_TITLE
  815. end
  816. end
  817.  
  818. def restart
  819. pbBGMStop(0)
  820. 51.times do
  821. @viewport.tone.red-=5
  822. @viewport.tone.green-=5
  823. @viewport.tone.blue-=5
  824. @viewport2.tone.red-=5
  825. @viewport2.tone.green-=5
  826. @viewport2.tone.blue-=5
  827. self.update
  828. wait(1)
  829. end
  830. raise Reset.new
  831. end
  832.  
  833. def dispose
  834. @viewport.tone=Tone.new(0,0,0)
  835. @viewport2.tone=Tone.new(0,0,0)
  836. pbFadeOutAndHide(@sprites)
  837. pbDisposeSpriteHash(@sprites)
  838. @viewport.dispose
  839. @viewport2.dispose
  840. @disposed=true
  841. end
  842.  
  843. def disposed?
  844. return @disposed
  845. end
  846.  
  847. def wait(frames,advance=true)
  848. return false if @skip
  849. frames.times do
  850. @currentFrame+=1 if advance
  851. Graphics.update
  852. Input.update
  853. @skip=true if Input.trigger?(Input::C)
  854. end
  855. return true
  856. end
  857.  
  858. end
  859. #===============================================================================
  860. # Styled to look like the DPPT games
  861. #===============================================================================
  862. class GenFourStyle
  863. def initialize
  864. # sound file for playing the title screen BGM
  865. bgm = GEN_FOUR_BGM
  866. str = "Audio/BGM/"+pbResolveAudioFile(bgm).name
  867. @mp3 = (File.extname(str)==".ogg") ? true : false
  868. @skip = false
  869. # speed of the silhouette animation
  870. @speed = 3
  871. @sframe = 0
  872. @opacity = 17
  873. @disposed = false
  874.  
  875. @currentFrame = 0
  876. # calculates after how many frames the game will reset
  877. @totalFrames=getPlayTime(str).to_i*Graphics.frame_rate
  878. pbBGMPlay(bgm)
  879.  
  880. # creates all the necessary graphics
  881. @viewport = Viewport.new(0,0,Graphics.width,VIEWPORT_HEIGHT)
  882. @viewport.z = 99999
  883. @viewport2 = Viewport.new(0,0,Graphics.width,VIEWPORT_HEIGHT)
  884. @viewport2.z = 99998
  885. @sprites = {}
  886.  
  887. @sprites["background"] = Sprite.new(@viewport)
  888. @sprites["background"].opacity = 0
  889.  
  890. @sprites["effect"] = Sprite.new(@viewport2)
  891. @sprites["effect"].bitmap = pbBitmap("Graphics/Titles/gen_4_eff")
  892. @sprites["effect"].y = @viewport.rect.height
  893. @sprites["effect"].opacity = 0
  894.  
  895. @sprites["sil"] = Sprite.new(@viewport2)
  896. @sprites["sil"].bitmap = pbBitmap("Graphics/Titles/gen_4_sil")
  897. @sprites["sil"].src_rect.set(0,0,@viewport.rect.width,@viewport.rect.height)
  898. @sprites["sil"].opacity = 0
  899.  
  900. @sprites["overlay"] = Sprite.new(@viewport2)
  901. @sprites["overlay"].bitmap = pbBitmap("Graphics/Titles/gen_4_over")
  902. @sprites["overlay"].z = 20
  903. @sprites["overlay"].opacity = 0
  904.  
  905. @sprites["start"] = Sprite.new(@viewport)
  906. @sprites["start"].bitmap = pbBitmap("Graphics/Titles/pokestart")
  907. @sprites["start"].x = (@viewport.rect.width-@sprites["start"].bitmap.width)/2
  908. @sprites["start"].y = @viewport.rect.height - 32
  909. @sprites["start"].opacity = 0
  910. @sprites["start"].z = 45
  911.  
  912. @sprites["logo"] = Sprite.new(@viewport)
  913. bitmap1=pbBitmap("Graphics/Titles/pokelogo")
  914. bitmap2=pbBitmap("Graphics/Titles/pokelogo2")
  915. @sprites["logo"].bitmap = Bitmap.new(bitmap1.width,bitmap1.height)
  916. @sprites["logo"].bitmap.blt(0,0,bitmap2,Rect.new(0,0,bitmap2.width,bitmap2.height))
  917. @sprites["logo"].bitmap.blt(0,0,bitmap1,Rect.new(0,0,bitmap1.width,bitmap1.height))
  918. @sprites["logo"].tone = Tone.new(0,0,0,255)
  919. @sprites["logo"].ox = @sprites["logo"].bitmap.width/2
  920. @sprites["logo"].oy = @sprites["logo"].bitmap.height/2
  921. @sprites["logo"].x = @viewport.rect.width/2 - 4
  922. @sprites["logo"].y = @viewport.rect.height/2 - 30
  923. @sprites["logo"].z = 50
  924. @sprites["logo"].opacity = 0
  925.  
  926. end
  927.  
  928. def intro
  929. for i in 0...80
  930. @sprites["logo"].opacity+=3.2
  931. @sprites["overlay"].opacity+=3.2
  932. @sprites["logo"].y-=1 if i%4==0
  933. wait(1)
  934. end
  935. c = 255
  936. @viewport.tone = Tone.new(c,c,c)
  937. @viewport2.tone = Tone.new(c,c,c)
  938. @sprites["logo"].tone = Tone.new(0,0,0)
  939. @sprites["overlay"].opacity = 255
  940. @sprites["background"].opacity = 255
  941. @sprites["effect"].opacity = 255
  942. @sprites["sil"].opacity = 255
  943. 17.times do
  944. c-=15
  945. @viewport.tone = Tone.new(c,c,c)
  946. @viewport2.tone = Tone.new(c,c,c)
  947. self.update
  948. wait(1)
  949. end
  950. @skip = false
  951. end
  952.  
  953. def update
  954. @currentFrame+=1 if !@skip
  955. @sframe+=1
  956. if @sframe > @speed
  957. @sprites["sil"].src_rect.x+=@viewport.rect.width
  958. @sprites["sil"].src_rect.x=0 if @sprites["sil"].src_rect.x>=@sprites["sil"].bitmap.width
  959. @sframe=0
  960. end
  961. @sprites["start"].opacity+=@opacity
  962. @opacity=-17 if @sprites["start"].opacity>=255
  963. @opacity=+17 if @sprites["start"].opacity<=0
  964. @sprites["effect"].y-=16
  965. @sprites["effect"].y = @viewport.rect.height if @sprites["effect"].y<-(@viewport.rect.height*12)
  966.  
  967. if @currentFrame==@totalFrames
  968. #self.restart if RESTART_TITLE
  969. end
  970. end
  971.  
  972. def restart
  973. pbBGMStop(0)
  974. 51.times do
  975. @viewport.tone.red-=5
  976. @viewport.tone.green-=5
  977. @viewport.tone.blue-=5
  978. @viewport2.tone.red-=5
  979. @viewport2.tone.green-=5
  980. @viewport2.tone.blue-=5
  981. self.update
  982. wait(1)
  983. end
  984. raise Reset.new
  985. end
  986.  
  987. def dispose
  988. pbFadeOutAndHide(@sprites)
  989. pbDisposeSpriteHash(@sprites)
  990. @viewport.dispose
  991. @disposed=true
  992. end
  993.  
  994. def disposed?
  995. return @disposed
  996. end
  997.  
  998. def wait(frames,advance=true)
  999. return false if @skip
  1000. frames.times do
  1001. @currentFrame+=1 if advance
  1002. Graphics.update
  1003. Input.update
  1004. @skip=true if Input.trigger?(Input::C)
  1005. end
  1006. return true
  1007. end
  1008.  
  1009. end
  1010. #===============================================================================
  1011. # Styled to look like the BW games
  1012. #===============================================================================
  1013. class PokeBattle_Pokemon
  1014. # provides a fix for forms crashing game
  1015. def spoofForm(val)
  1016. @form = val
  1017. @forcedform = val
  1018. end
  1019. end
  1020.  
  1021. class GenFiveStyle
  1022. def getAvgColor(bitmap,width,height)
  1023. red = 0
  1024. green = 0
  1025. blue = 0
  1026. n = 0
  1027. for x in 0...width
  1028. for y in 0...height
  1029. c = bitmap.get_pixel(x,y)
  1030. red+=c.red
  1031. green+=c.green
  1032. blue+=c.blue
  1033. n+=1
  1034. end
  1035. end
  1036. return Color.new((red/n)+60,(green/n)+60,(blue/n)+60)
  1037. end
  1038.  
  1039. def initialize
  1040. # creates a dummy Pokemon object
  1041. species = SPECIES
  1042. species = getConst(PBSpecies,SPECIES) if !SPECIES.is_a?(Numeric)
  1043. pokemon = PokeBattle_Pokemon.new(species,5)
  1044. pokemon.spoofForm(SPECIES_FORM)
  1045. bmp = pbLoadPokemonBitmap(pokemon).bitmap
  1046. # coloures background according to the SPECIES sprite
  1047. color = self.getAvgColor(bmp,bmp.width,bmp.height)
  1048. # sound file for playing the title screen BGM
  1049. bgm = GEN_FIVE_BGM
  1050. str = "Audio/BGM/"+pbResolveAudioFile(bgm).name
  1051. @mp3 = (File.extname(str)==".ogg") ? true : false
  1052. @skip = false
  1053. # speed of the silhouette animation
  1054. @speed = 3
  1055. @sframe = 0
  1056. @lframe = 0
  1057. @opacity = 17
  1058. @disposed = false
  1059.  
  1060. @currentFrame = 0
  1061. # calculates after how many frames the game will reset
  1062. @totalFrames=getPlayTime(str).to_i*Graphics.frame_rate - 40
  1063. pbBGMPlay(bgm)
  1064.  
  1065. # creates all the necessary graphics
  1066. @viewport = Viewport.new(0,0,Graphics.width,VIEWPORT_HEIGHT)
  1067. @viewport.z = 99999
  1068. @viewport2 = Viewport.new(0,0,Graphics.width,VIEWPORT_HEIGHT)
  1069. @viewport2.z = 99998
  1070. @sprites = {}
  1071.  
  1072. @sprites["background"] = Sprite.new(@viewport)
  1073. @sprites["background"].color = color if EXPAND_STYLE
  1074. @sprites["background"].visible = false
  1075.  
  1076. @sprites["background2"] = Sprite.new(@viewport2)
  1077. @sprites["background2"].bitmap = pbBitmap("Graphics/Titles/gen_5_bg")
  1078. @sprites["background2"].color = color if EXPAND_STYLE
  1079.  
  1080. @sprites["effect"] = AnimatedPlane.new(@viewport)
  1081. @sprites["effect"].visible = false
  1082. @sprites["effect2"] = AnimatedPlane.new(@viewport2)
  1083. @sprites["effect2"].bitmap = pbBitmap("Graphics/Titles/gen_5_eff")
  1084.  
  1085. @sprites["shine"] = Sprite.new(@viewport2)
  1086. @sprites["shine"].bitmap = pbBitmap("Graphics/Titles/gen_5_shine")
  1087. @sprites["shine"].ox = @sprites["shine"].bitmap.width/2
  1088. @sprites["shine"].oy = @sprites["shine"].bitmap.height/2
  1089.  
  1090. @sprites["reflection"] = AnimatedPokemonSprite.new(@viewport2)
  1091. @sprites["reflection"].setBitmap(pokemon)
  1092. @sprites["reflection"].y = @viewport.rect.height - 32
  1093. @sprites["reflection"].angle = 180
  1094. @sprites["reflection"].mirror = true
  1095. @sprites["reflection"].z = 5
  1096. @sprites["reflection"].zoom_x = ($ResizeFactor==0.5) ? 2.0 : 1.5
  1097. @sprites["reflection"].zoom_y = ($ResizeFactor==0.5) ? 2.0 : 1.5
  1098. @sprites["reflection"].opacity = 255*0.2
  1099.  
  1100. @sprites["sprite"] = AnimatedPokemonSprite.new(@viewport2)
  1101. @sprites["sprite"].setBitmap(pokemon)
  1102. @sprites["sprite"].x = @viewport.rect.width
  1103. @sprites["sprite"].y = @viewport.rect.height - 64
  1104. @sprites["sprite"].z = 10
  1105. @sprites["sprite"].zoom_x = ($ResizeFactor==0.5) ? 2.0 : 1.5
  1106. @sprites["sprite"].zoom_y = ($ResizeFactor==0.5) ? 2.0 : 1.5
  1107.  
  1108. @sprites["shine"].x = @viewport.rect.width/2
  1109. @sprites["shine"].y = @sprites["sprite"].y-@sprites["sprite"].height/2
  1110.  
  1111. @sprites["start"] = Sprite.new(@viewport)
  1112. @sprites["start"].bitmap = pbBitmap("Graphics/Titles/pokestart")
  1113. @sprites["start"].x = (@viewport.rect.width-@sprites["start"].bitmap.width)/2
  1114. @sprites["start"].y = @viewport.rect.height - 24
  1115. @sprites["start"].opacity = 0
  1116. @sprites["start"].z = 45
  1117.  
  1118. @sprites["logo"] = Sprite.new(@viewport)
  1119. @bitmap1=pbBitmap("Graphics/Titles/pokelogo")
  1120. @bitmap2=pbBitmap("Graphics/Titles/pokelogo2")
  1121. @sprites["logo"].bitmap = Bitmap.new(@bitmap1.width,@bitmap1.height)
  1122. @sprites["logo"].bitmap.blt(0,0,@bitmap2,Rect.new(0,0,@bitmap2.width,@bitmap2.height))
  1123. @sprites["logo"].bitmap.blt(0,0,@bitmap1,Rect.new(0,0,@bitmap1.width,@bitmap1.height))
  1124. @sprites["logo"].ox = @sprites["logo"].bitmap.width/2
  1125. @sprites["logo"].oy = @sprites["logo"].bitmap.height/2
  1126. @sprites["logo"].x = @viewport.rect.width/2 - 4
  1127. @sprites["logo"].y = 24+64+99
  1128. @sprites["logo"].z = 5
  1129.  
  1130. @logy = 2
  1131. @logo = -17
  1132. end
  1133.  
  1134. def intro
  1135. @viewport.tone = Tone.new(255,255,255)
  1136. @viewport2.tone = Tone.new(255,255,255)
  1137. @skip = false
  1138. end
  1139.  
  1140. def update
  1141. @currentFrame+=1 if !@skip
  1142. @sframe+=1
  1143. @lframe+=1
  1144. @sprites["reflection"].update
  1145. @sprites["sprite"].update
  1146. @sprites["shine"].angle+=1
  1147. @sprites["logo"].y-=@logy
  1148. y = 123
  1149. @sprites["logo"].y = y if @sprites["logo"].y < y && @sframe < Graphics.frame_rate*10
  1150. if @sprites["logo"].y == y-8
  1151. @logy = -2
  1152. elsif @sprites["logo"].y > y && @sprites["logo"].y <= y+2
  1153. @logy = +2
  1154. @sframe = 0
  1155. end
  1156.  
  1157. @sprites["start"].opacity+=@opacity
  1158. @opacity=-17 if @sprites["start"].opacity>=255
  1159. @opacity=+17 if @sprites["start"].opacity<=0
  1160. @sprites["effect"].ox+=1
  1161. @sprites["effect2"].ox+=1
  1162. @sprites["sprite"].x+=(@viewport.rect.width/2 - @sprites["sprite"].x)*0.1
  1163. @sprites["reflection"].x = @sprites["sprite"].x
  1164.  
  1165. @viewport.tone.red-=17 if @viewport.tone.red > 0
  1166. @viewport.tone.green-=17 if @viewport.tone.green > 0
  1167. @viewport.tone.blue-=17 if @viewport.tone.blue > 0
  1168. @viewport2.tone.red-=17 if @viewport2.tone.red > 0
  1169. @viewport2.tone.green-=17 if @viewport2.tone.green > 0
  1170. @viewport2.tone.blue-=17 if @viewport2.tone.blue > 0
  1171.  
  1172. if @currentFrame==@totalFrames
  1173. self.restart if RESTART_TITLE
  1174. end
  1175. end
  1176.  
  1177. def restart
  1178. pbBGMStop(0)
  1179. 51.times do
  1180. @viewport.tone.red-=5
  1181. @viewport.tone.green-=5
  1182. @viewport.tone.blue-=5
  1183. @viewport2.tone.red-=5
  1184. @viewport2.tone.green-=5
  1185. @viewport2.tone.blue-=5
  1186. self.update
  1187. wait(1)
  1188. end
  1189. raise Reset.new
  1190. end
  1191.  
  1192.  
  1193. def dispose
  1194. pbFadeOutAndHide(@sprites)
  1195. pbDisposeSpriteHash(@sprites)
  1196. @viewport.dispose
  1197. @viewport2.dispose
  1198. @disposed=true
  1199. end
  1200.  
  1201. def disposed?
  1202. return @disposed
  1203. end
  1204.  
  1205. def wait(frames,advance=true)
  1206. return false if @skip
  1207. frames.times do
  1208. @currentFrame+=1 if advance
  1209. Graphics.update
  1210. Input.update
  1211. @skip=true if Input.trigger?(Input::C)
  1212. end
  1213. return true
  1214. end
  1215.  
  1216. end
  1217. #===============================================================================
  1218. # Styled to look like the XY games
  1219. #===============================================================================
  1220. class GenSixStyle
  1221. def initialize
  1222. # decides whether or not to show another layer of the title screen
  1223. @showPoke = EXPAND_STYLE
  1224. # sound file for playing the title screen BGM
  1225. bgm = GEN_SIX_BGM
  1226. str = "Audio/BGM/"+pbResolveAudioFile(bgm).name
  1227. @mp3 = (File.extname(str)==".ogg") ? true : false
  1228. @skip = false
  1229. @disposed = false
  1230. @swapped = false
  1231. @particles = 32
  1232. @opacity = 5
  1233. @pframe = [0,0,0,0,0]
  1234. @speed = 3
  1235.  
  1236. @currentFrame = 0
  1237. # calculates after how many frames the game will reset
  1238. @totalFrames=getPlayTime(str).to_i*Graphics.frame_rate
  1239.  
  1240. pbBGMPlay(bgm)
  1241. pbWait(30) if @mp3
  1242. @totalFrames-=100 if @mp3
  1243.  
  1244. # creates all the necessary graphics
  1245. h = @showPoke ? 2 : 1
  1246. @viewport = Viewport.new(0,0,Graphics.width,VIEWPORT_HEIGHT*h)
  1247. @viewport.z = 99999
  1248. if @showPoke
  1249. @viewport2 = Viewport.new(0,VIEWPORT_HEIGHT+VIEWPORT_OFFSET,Graphics.width,VIEWPORT_HEIGHT)
  1250. @viewport2.z = 99990
  1251. @viewport2.tone = Tone.new(-255,-255,-255)
  1252. end
  1253. @viewport2b = Viewport.new(0,0,Graphics.width,VIEWPORT_HEIGHT)
  1254. @viewport2b.z = 99999
  1255. @sprites = {}
  1256.  
  1257. self.drawPanorama if @showPoke
  1258.  
  1259. @sprites["background"] = Sprite.new(@viewport)
  1260. @sprites["background"].bitmap = pbBitmap("Graphics/Titles/gen_6_bg")
  1261. @sprites["effect"] = Sprite.new(@viewport)
  1262. @sprites["effect"].bitmap = pbBitmap("Graphics/Titles/gen_6_effect")
  1263. @sprites["effect"].ox = @sprites["effect"].bitmap.width/2
  1264. @sprites["effect"].oy = @sprites["effect"].bitmap.height/2
  1265. @sprites["effect"].x = @viewport.rect.width/2
  1266. @sprites["effect"].y = @viewport.rect.height/(2*h)
  1267. @sprites["effect2"] = Sprite.new(@viewport)
  1268. @sprites["effect2"].bitmap = pbBitmap("Graphics/Titles/gen_6_effect2")
  1269. @sprites["effect2"].ox = @sprites["effect2"].bitmap.width/2
  1270. @sprites["effect2"].oy = @sprites["effect2"].bitmap.height/2
  1271. @sprites["effect2"].x = @viewport.rect.width/2
  1272. @sprites["effect2"].y = @viewport.rect.height/(2*h)
  1273. @sprites["effect2"].opacity = 0
  1274. @sprites["effect2"].z = 21
  1275. @sprites["effect2"].angle = 20
  1276. @effo = 1
  1277. @sprites["shine"] = Sprite.new(@viewport)
  1278. @sprites["shine"].bitmap = pbBitmap("Graphics/Titles/gen_6_shine")
  1279. @sprites["shine"].ox = @sprites["shine"].bitmap.width/2
  1280. @sprites["shine"].oy = @sprites["shine"].bitmap.height/2
  1281. @sprites["shine"].x = @viewport.rect.width/2 + 1
  1282. @sprites["shine"].y = @viewport.rect.height/(2*h) - 2
  1283. @sprites["shine"].zoom_x = 0
  1284. @sprites["shine"].zoom_y = 0
  1285. @sprites["shine"].opacity = 0
  1286.  
  1287. for i in 0...@particles
  1288. @sprites["p#{i}"] = AnimatedSpriteParticle.new(@viewport,rand(32))
  1289. @sprites["p#{i}"].dy = @viewport.rect.height/(2*h)
  1290. @sprites["p#{i}"].z = 21
  1291. @sprites["p#{i}"].inverted = true
  1292. @sprites["p#{i}"].refresh
  1293. end
  1294.  
  1295. @sprites["glow"] = Sprite.new(@viewport)
  1296. @sprites["glow"].bitmap = pbBitmap("Graphics/Titles/gen_6_glow")
  1297. @sprites["glow"].opacity = 0
  1298. @sprites["overlay"] = Sprite.new(@viewport)
  1299. @sprites["overlay"].bitmap = pbBitmap("Graphics/Titles/gen_6_overlay")
  1300. @sprites["overlay"].z = 4
  1301.  
  1302. @sprites["startrect"] = Sprite.new(@viewport2b)
  1303. @sprites["startrect"].bitmap = Bitmap.new(@viewport2b.rect.width,@viewport2b.rect.height)
  1304. @sprites["startrect"].bitmap.fill_rect(0,@sprites["startrect"].bitmap.height-38,@sprites["startrect"].bitmap.width,28,Color.new(0,0,0,92))
  1305. @sprites["startrect"].visible = false
  1306.  
  1307. @sprites["logo"] = Sprite.new(@viewport2b)
  1308. @bitmap1=pbBitmap("Graphics/Titles/pokelogo")
  1309. @bitmap2=pbBitmap("Graphics/Titles/pokelogo2")
  1310. @sprites["logo"].bitmap = Bitmap.new(@bitmap1.width,@bitmap1.height)
  1311. @sprites["logo"].bitmap.blt(0,0,@bitmap2,Rect.new(0,0,@bitmap2.width,@bitmap2.height))
  1312. @sprites["logo"].bitmap.blt(0,0,@bitmap1,Rect.new(0,0,@bitmap1.width,@bitmap1.height))
  1313. @sprites["logo"].ox = @sprites["logo"].bitmap.width/2
  1314. @sprites["logo"].oy = @sprites["logo"].bitmap.height/2
  1315. @sprites["logo"].x = @viewport2b.rect.width/2 - 4
  1316. @sprites["logo"].y = @viewport2b.rect.height/2
  1317. @sprites["logo"].zoom_x = 1.2
  1318. @sprites["logo"].zoom_y = 1.2
  1319. @sprites["logo"].opacity = 0
  1320. @sprites["logo"].z = 5
  1321.  
  1322. @sprites["start"] = Sprite.new(@viewport2b)
  1323. @sprites["start"].bitmap = pbBitmap("Graphics/Titles/pokestart")
  1324. @sprites["start"].x = (@viewport2b.rect.width-@sprites["start"].bitmap.width)/2
  1325. @sprites["start"].y = @viewport2b.rect.height - 32
  1326. @sprites["start"].visible = false
  1327. @sprites["start"].z = 5
  1328.  
  1329. @glow = 1
  1330. end
  1331.  
  1332. def intro
  1333. h = @showPoke ? 2 : 1
  1334. @viewport.rect.height/=h
  1335. @black1 = Sprite.new(@viewport)
  1336. @black1.bitmap = Bitmap.new(@viewport.rect.width,2)
  1337. @black1.bitmap.fill_rect(0,0,@black1.bitmap.width,2,Color.new(0,0,0))
  1338. @black1.zoom_y = @viewport.rect.height/4
  1339. @black1.z = 20
  1340. @black2 = Sprite.new(@viewport)
  1341. @black2.bitmap = @black1.bitmap.clone
  1342. @black2.oy = 2
  1343. @black2.zoom_y = @black1.zoom_y
  1344. @black2.y = @viewport.rect.height
  1345. @black2.z = 20
  1346. @sprites["shine"].z = 22
  1347. @box = Sprite.new(@viewport)
  1348. @box.z = 10
  1349. @box.bitmap = pbBitmap("Graphics/Titles/gen_6_letter2")
  1350. @box.ox = @box.bitmap.width/2
  1351. @box.oy = @box.bitmap.height/2
  1352. @box.x = @viewport.rect.width/2
  1353. @box.y = @viewport.rect.height/2
  1354. @box.zoom_x = 0
  1355. @box.zoom_y = 0
  1356. @box.angle = -12
  1357. @letter = Sprite.new(@viewport)
  1358. @letter.bitmap = pbBitmap("Graphics/Titles/gen_6_letter")
  1359. @letter.ox = @letter.bitmap.width/2
  1360. @letter.oy = @letter.bitmap.height/2
  1361. @letter.tone = Tone.new(-64,-64,-64)
  1362. @letter.x = @box.x
  1363. @letter.y = @box.y
  1364. @letter.z = 25
  1365. @letter.zoom_x = 0
  1366. @letter.zoom_y = 0
  1367. @letter.angle = -8
  1368. f = @mp3 ? 100 : 120
  1369. f.times do
  1370. next if !wait(1,false)
  1371. @sprites["shine"].opacity+=5
  1372. @sprites["shine"].zoom_x+=0.0025
  1373. @sprites["shine"].zoom_y+=0.0025
  1374. self.update
  1375. end
  1376. @viewport.tone = Tone.new(200,200,200)
  1377. @sprites["effect2"].z = 1
  1378. for i in 0...@particles
  1379. @sprites["p#{i}"].inverted = false
  1380. @sprites["p#{i}"].refresh
  1381. end
  1382. for i in 0...10
  1383. next if !wait(1,false)
  1384. @black1.zoom_y-=27 if i>6
  1385. @black2.zoom_y-=27 if i>6
  1386. @box.zoom_x+=0.11
  1387. @box.zoom_y+=0.11
  1388. self.update
  1389. end
  1390. 5.times do
  1391. next if !wait(1,false)
  1392. @letter.zoom_x+=0.2
  1393. @letter.zoom_y+=0.2
  1394. self.update
  1395. end
  1396. @sprites["shine"].z = 1
  1397. @sprites["shine"].zoom_x = 1
  1398. @sprites["shine"].zoom_y = 1
  1399. 160.times do
  1400. next if !wait(1,false)
  1401. @letter.tone.red+=4 if @letter.tone.red < 0
  1402. @letter.tone.green+=4 if @letter.tone.green < 0
  1403. @letter.tone.blue+=4 if @letter.tone.blue < 0
  1404. @box.angle+=0.1
  1405. @box.zoom_x-=0.0015
  1406. @box.zoom_y-=0.0015
  1407. @letter.zoom_x+=0.0015
  1408. @letter.zoom_y+=0.0015
  1409. @letter.angle+=0.08
  1410. self.update
  1411. end
  1412. for i in 0...@particles
  1413. @sprites["p#{i}"].z = 1
  1414. end
  1415. f = @mp3 ? 38 : 48
  1416. f.times do
  1417. next if !wait(1,false)
  1418. @black1.zoom_y-=1
  1419. @black2.zoom_y-=1
  1420. @box.zoom_x+=0.5
  1421. @box.zoom_y+=0.5
  1422. @letter.zoom_x+=0.001
  1423. @letter.zoom_y+=0.001
  1424. @letter.x+=@viewport.rect.width/16
  1425. self.update
  1426. end
  1427. @black1.dispose
  1428. @black2.dispose
  1429. @box.dispose
  1430. @letter.dispose
  1431. 50.times do
  1432. @sprites["logo"].zoom_x-=0.004
  1433. @sprites["logo"].zoom_y-=0.004
  1434. @sprites["logo"].opacity+=5
  1435. self.update
  1436. wait(1,false)
  1437. end
  1438. @sprites["logo"].opacity+=5
  1439. @viewport.tone = Tone.new(200,200,200)
  1440. @sprites["logo"].tone = Tone.new(255,255,255)
  1441. f = 160-36-16
  1442. f-= 60 if @mp3
  1443. f.times do
  1444. self.update
  1445. wait(1,false)
  1446. end
  1447. @sprites["start"].visible = true
  1448. @sprites["start"].opacity = 255
  1449. @opacity = -5
  1450. @sprites["startrect"].visible = true
  1451. @viewport2.tone = Tone.new(0,0,0) if @showPoke
  1452. @viewport2.rect.height = 0 if @showPoke
  1453. @skip = false
  1454. end
  1455.  
  1456. def update
  1457. @currentFrame+=1 if !@skip
  1458. @sprites["start"].opacity+=@opacity
  1459. @opacity=-5 if @sprites["start"].opacity>=255
  1460. @opacity=+5 if @sprites["start"].opacity<=0
  1461. self.swapViewports if @showPoke && (@currentFrame==1040 || @currentFrame==1780)
  1462. self.update1
  1463. self.update2 if @showPoke
  1464. if @currentFrame==@totalFrames
  1465. self.restart if RESTART_TITLE
  1466. end
  1467. end
  1468.  
  1469. def update1
  1470. @sprites["effect"].angle+=1 if $ResizeFactor <= 1
  1471. @sprites["effect2"].angle+=0.2 if $ResizeFactor <= 1
  1472. @sprites["effect2"].opacity-=@effo
  1473. if @sprites["effect2"].opacity < 32
  1474. @effo = -1
  1475. elsif @sprites["effect2"].opacity >= 255
  1476. @effo = 1
  1477. end
  1478. @sprites["shine"].angle-=1 if $ResizeFactor <= 1
  1479. @sprites["glow"].opacity-=@glow
  1480. @sprites["logo"].tone.red-=2 if @sprites["logo"].tone.red > 0
  1481. @sprites["logo"].tone.green-=2 if @sprites["logo"].tone.green > 0
  1482. @sprites["logo"].tone.blue-=2 if @sprites["logo"].tone.blue > 0
  1483. @viewport.tone.red-=5 if @viewport.tone.red > 0
  1484. @viewport.tone.green-=5 if @viewport.tone.green > 0
  1485. @viewport.tone.blue-=5 if @viewport.tone.blue > 0
  1486. if @sprites["glow"].opacity <= 0
  1487. @glow = -1
  1488. elsif @sprites["glow"].opacity >= 255
  1489. @glow = 1
  1490. end
  1491. for i in 0...@particles
  1492. @sprites["p#{i}"].update
  1493. end
  1494. end
  1495.  
  1496. def update2
  1497. for i in 0...@pframe.length
  1498. @pframe[i]+=1
  1499. end
  1500. @sprites["grass"].ox-=4
  1501. @sprites["trees1"].ox-=1
  1502. @sprites["trees2"].ox-=1 if @pframe[0]>1
  1503. @sprites["trees3"].ox-=1 if @pframe[1]>2
  1504. @sprites["clouds"].ox+=1 if @pframe[3]>3
  1505. @sprites["pokemon"].src_rect.x+=@sprites["pokemon"].src_rect.width if @pframe[4]>@speed
  1506. @sprites["pokemon"].src_rect.x=0 if @sprites["pokemon"].src_rect.x>=@sprites["pokemon"].bitmap.width
  1507.  
  1508. @pframe[0]=0 if @pframe[0]>1
  1509. @pframe[1]=0 if @pframe[1]>2
  1510. @pframe[2]=0 if @pframe[2]>1
  1511. @pframe[3]=0 if @pframe[3]>3
  1512. @pframe[4]=0 if @pframe[4]>@speed
  1513. end
  1514.  
  1515. def swapViewports
  1516. view1 = @swapped ? @viewport2 : @viewport
  1517. view2 = @swapped ? @viewport : @viewport2
  1518. y = @swapped ? -6*4 : 6
  1519. o = @swapped ? -4*4 : 6
  1520. @viewport2b.tone = Tone.new(200,200,200) if !@swapped
  1521. f = @swapped ? 32/2 : 64
  1522. f.times do
  1523. @viewport2b.tone.red-=5 if @viewport2b.tone.red > 0
  1524. @viewport2b.tone.green-=5 if @viewport2b.tone.green > 0
  1525. @viewport2b.tone.blue-=5 if @viewport2b.tone.blue > 0
  1526. @viewport2.rect.height+=y
  1527. @viewport.rect.height+=y
  1528. @sprites["overlay"].opacity-=o
  1529. view1.rect.y-=y
  1530. view2.rect.y-=y
  1531. @sprites["logo"].y-=y/6
  1532. self.update
  1533. wait(1,false)
  1534. end
  1535. @swapped = !@swapped
  1536. end
  1537.  
  1538. def drawPanorama
  1539. viewport = @viewport2
  1540. @sprites["background2"] = Sprite.new(viewport)
  1541. @sprites["background2"].bitmap = pbBitmap("Graphics/Titles/Panorama/background")
  1542. @sprites["clouds"] = AnimatedPlane.new(viewport)
  1543. @sprites["clouds"].bitmap = pbBitmap("Graphics/Titles/Panorama/clouds")
  1544. @sprites["mountains"] = Sprite.new(viewport)
  1545. @sprites["mountains"].bitmap = pbBitmap("Graphics/Titles/Panorama/mountains")
  1546. @sprites["trees3"] = AnimatedPlane.new(viewport)
  1547. @sprites["trees3"].bitmap = pbBitmap("Graphics/Titles/Panorama/trees_3")
  1548. @sprites["trees2"] = AnimatedPlane.new(viewport)
  1549. @sprites["trees2"].bitmap = pbBitmap("Graphics/Titles/Panorama/trees_2")
  1550. @sprites["trees1"] = AnimatedPlane.new(viewport)
  1551. @sprites["trees1"].bitmap = pbBitmap("Graphics/Titles/Panorama/trees_1")
  1552. @sprites["grass"] = AnimatedPlane.new(viewport)
  1553. @sprites["grass"].bitmap = pbBitmap("Graphics/Titles/Panorama/grass")
  1554. @sprites["pokemon"] = Sprite.new(viewport)
  1555. @sprites["pokemon"].bitmap = pbBitmap("Graphics/Titles/Panorama/pokemon")
  1556. @sprites["pokemon"].src_rect.set(0,0,@sprites["pokemon"].bitmap.height,@sprites["pokemon"].bitmap.height)
  1557. @sprites["pokemon"].x = viewport.rect.width - @sprites["pokemon"].src_rect.width - 32
  1558. @sprites["pokemon"].y = viewport.rect.height - @sprites["pokemon"].src_rect.height
  1559.  
  1560. @sprites["overlay2"] = Sprite.new(viewport)
  1561. @sprites["overlay2"].bitmap = Bitmap.new(viewport.rect.width,viewport.rect.height)
  1562. @sprites["overlay2"].z = 4
  1563. @sprites["overlay2"].bitmap.fill_rect(0,@sprites["overlay2"].bitmap.height-38,@sprites["overlay2"].bitmap.width,28,Color.new(0,0,0,92))
  1564. end
  1565.  
  1566. def restart
  1567. pbBGMStop(0)
  1568. 51.times do
  1569. @viewport.tone.red-=5
  1570. @viewport.tone.green-=5
  1571. @viewport.tone.blue-=5
  1572. @viewport2.tone.red-=5
  1573. @viewport2.tone.green-=5
  1574. @viewport2.tone.blue-=5
  1575. @viewport2b.tone.red-=5
  1576. @viewport2b.tone.green-=5
  1577. @viewport2b.tone.blue-=5
  1578. self.update
  1579. wait(1)
  1580. end
  1581. self.dispose(false)
  1582. PlayEBDemo.new if defined?(DynamicPokemonSprite)
  1583. raise Reset.new
  1584. end
  1585.  
  1586. def dispose(fade=true)
  1587. pbFadeOutAndHide(@sprites) if fade
  1588. pbDisposeSpriteHash(@sprites)
  1589. @viewport.dispose if @viewport
  1590. @viewport2.dispose if @viewport2
  1591. @viewport2b.dispose if @viewport2b
  1592. @disposed=true
  1593. end
  1594.  
  1595. def disposed?
  1596. return @disposed
  1597. end
  1598.  
  1599. def wait(frames,advance=true)
  1600. return false if @skip
  1601. frames.times do
  1602. @currentFrame+=1 if advance
  1603. Graphics.update
  1604. Input.update
  1605. @skip=true if Input.trigger?(Input::C)
  1606. end
  1607. return true
  1608. end
  1609.  
  1610. end
  1611. #===============================================================================
  1612. # Styled to look like the SM games Gen 7
  1613. #===============================================================================
  1614. class GenSevenStyle
  1615. def initialize
  1616. # sound file for playing the title screen BGM
  1617. @bgm = GEN_SEVEN_BGM
  1618. str = "Audio/BGM/"+pbResolveAudioFile(@bgm).name
  1619. @skip = false
  1620. @disposed = false
  1621.  
  1622. @currentFrame = 0
  1623. # calculates after how many frames the game will reset
  1624. @totalFrames = getPlayTime(str).to_i*Graphics.frame_rate
  1625.  
  1626. # creates all the necessary graphics
  1627. @viewport = Viewport.new(0,0,Graphics.width,DEFAULTSCREENHEIGHT)
  1628. @viewport.z = 99999
  1629. @viewport2 = Viewport.new(0,0,Graphics.width,DEFAULTSCREENHEIGHT)
  1630. @viewport2.z = 99999
  1631.  
  1632. @sprites = {}
  1633. @intro = {}
  1634.  
  1635. @sprites["bg"] = Sprite.new(@viewport)
  1636. @sprites["bg"].bitmap = pbBitmap("Graphics/Titles/gen_7_bg")
  1637. @sprites["rect"] = Sprite.new(@viewport)
  1638. @sprites["rect"].bitmap = pbBitmap("Graphics/Titles/gen_7_bg2")
  1639. @sprites["rect"].toggle = 1
  1640. @sprites["rect3"] = Sprite.new(@viewport)
  1641. @sprites["rect3"].bitmap = pbBitmap("Graphics/Titles/gen_7_bg4")
  1642. @sprites["rect3"].opacity = 0
  1643. @sprites["rect3"].toggle = -1
  1644.  
  1645. for i in 0...6
  1646. @sprites["f#{i}"] = Sprite.new(@viewport)
  1647. @sprites["f#{i}"].z = 600
  1648. @sprites["f#{i}"].bitmap = pbBitmap("Graphics/Titles/Panorama/flare#{i+1}")
  1649. @sprites["f#{i}"].ox = @sprites["f#{i}"].bitmap.width/2
  1650. @sprites["f#{i}"].oy = @sprites["f#{i}"].bitmap.height/2
  1651. @sprites["f#{i}"].x = Graphics.width/2
  1652. @sprites["f#{i}"].y = VIEWPORT_HEIGHT/2
  1653. @sprites["f#{i}"].opacity = 0
  1654. @sprites["f#{i}"].tone = Tone.new(128,128,128)
  1655. end
  1656.  
  1657. for i in 0...4
  1658. @sprites["e#{i}"] = Sprite.new(@viewport)
  1659. @sprites["e#{i}"].bitmap = pbBitmap("Graphics/Titles/gen_7_e#{i+1}")
  1660. @sprites["e#{i}"].ox = @sprites["e#{i}"].bitmap.width/2
  1661. @sprites["e#{i}"].oy = @sprites["e#{i}"].bitmap.height/2
  1662. @sprites["e#{i}"].x = @viewport.rect.width/2
  1663. @sprites["e#{i}"].y = @viewport.rect.height/2
  1664. end
  1665. @sprites["rect2"] = Sprite.new(@viewport)
  1666. @sprites["rect2"].drawRect(@viewport.rect.width,@viewport.rect.height,Color.new(0,0,0))
  1667. @sprites["rect2"].z = 450
  1668. for i in 0...128
  1669. n = [1,3,4,5,6,7][rand(6)]
  1670. @sprites["s#{i}"] = Sprite.new(@viewport)
  1671. @sprites["s#{i}"].bitmap = pbBitmap("Graphics/Titles/gen_7_s#{n}")
  1672. @sprites["s#{i}"].ox = @sprites["s#{i}"].bitmap.width/2
  1673. @sprites["s#{i}"].oy = @sprites["s#{i}"].bitmap.height/2
  1674. z = [0.4,0.4,0.5,0.6,0.7][rand(5)]
  1675. @sprites["s#{i}"].zoom_x = z
  1676. @sprites["s#{i}"].zoom_y = z
  1677. @sprites["s#{i}"].x = rand(@viewport.rect.width + 1)
  1678. @sprites["s#{i}"].y = rand(@viewport.rect.height + 1)
  1679. o = 85 + rand(130)
  1680. s = 2 + rand(4)
  1681. @sprites["s#{i}"].speed = s
  1682. @sprites["s#{i}"].toggle = 1
  1683. @sprites["s#{i}"].param = o
  1684. @sprites["s#{i}"].opacity = o
  1685. end
  1686. @sprites["logo1"] = Sprite.new(@viewport)
  1687. @sprites["logo1"].z = 400
  1688. @sprites["logo2"] = Sprite.new(@viewport)
  1689. @sprites["logo2"].z = 500
  1690. @sprites["logo2"].color = Color.new(255,255,255)
  1691. @sprites["logo2"].opacity = 0
  1692. bmp2 = pbBitmap("Graphics/Titles/pokelogo2")
  1693. bmp1 = pbBitmap("Graphics/Titles/pokelogo")
  1694. @sprites["logo2"].bitmap = Bitmap.new(@viewport.rect.width,@viewport.rect.height)
  1695. x = 50
  1696. y = 75
  1697. @sprites["logo2"].bitmap.blt(x,y,bmp1,Rect.new(0,0,bmp1.width,bmp1.height))
  1698. @sprites["logo2"].bitmap.blt(x,y,bmp2,Rect.new(0,0,bmp2.width,bmp2.height))
  1699. @sprites["logo1"].bitmap = @sprites["logo2"].bitmap.clone
  1700. #@sprites["logo1"].create_outline(Color.new(255,255,255,155),4)
  1701. @sprites["logo1"].toggle = 2
  1702. for j in 0...16
  1703. @sprites["p#{j}"] = Sprite.new(@viewport)
  1704. @sprites["p#{j}"].bitmap = pbBitmap("Graphics/Titles/gen_7_s2")
  1705. @sprites["p#{j}"].ox = -(@viewport.rect.width/2 + @sprites["p#{j}"].bitmap.width)
  1706. @sprites["p#{j}"].oy = @sprites["p#{j}"].bitmap.height/2
  1707. @sprites["p#{j}"].zoom_x = 2
  1708. @sprites["p#{j}"].zoom_y = 2
  1709. @sprites["p#{j}"].angle = rand(360)
  1710. @sprites["p#{j}"].x = @viewport.rect.width/2
  1711. @sprites["p#{j}"].y = @viewport.rect.height/2
  1712. end
  1713. @i = 0
  1714.  
  1715. @intro["bg"] = Sprite.new(@viewport2)
  1716. @intro["bg"].bitmap = pbBitmap("Graphics/Titles/gen_7_bg3")
  1717. @intro["bg"].ox = @intro["bg"].bitmap.width/2
  1718. @intro["bg"].oy = @intro["bg"].bitmap.height/2
  1719. @intro["bg"].x = @viewport.rect.width/2
  1720. @intro["bg"].y = @viewport.rect.height/2
  1721.  
  1722. for j in 0...128
  1723. @intro["s#{j}"] = Sprite.new(@viewport2)
  1724. @intro["s#{j}"].bitmap = pbBitmap("Graphics/Titles/gen_7_s8")
  1725. a = rand(360)
  1726. b = a*(Math::PI/180)
  1727. r = (@viewport.rect.width*0.5)*Math.cos(b).abs + (@viewport.rect.height*0.5)*Math.sin(b).abs
  1728. @intro["s#{j}"].ox = -(rand(r) + @sprites["s#{j}"].bitmap.width)
  1729. @intro["s#{j}"].oy = @sprites["s#{j}"].bitmap.height/2
  1730. @intro["s#{j}"].angle = a
  1731. @intro["s#{j}"].x = @viewport.rect.width/2
  1732. @intro["s#{j}"].y = @viewport.rect.height/2
  1733. @intro["s#{j}"].opacity = 25 + rand(130)
  1734. end
  1735. @viewport2.color = Color.new(0,0,0)
  1736. @angle = -180
  1737.  
  1738. @sprites["comet"] = Sprite.new(@viewport)
  1739. @sprites["comet"].bitmap = pbBitmap("Graphics/Titles/gen_7_c1")
  1740. @sprites["comet"].ox = @sprites["comet"].bitmap.width/2
  1741. @sprites["comet"].z = 350
  1742. @sprites["comet"].angle = @angle
  1743.  
  1744. @sprites["start"] = Sprite.new(@viewport)
  1745. @sprites["start"].drawRect(@viewport.rect.width,28,Color.new(0,0,0,85))
  1746. bmp = pbBitmap("Graphics/Titles/pokestart")
  1747. @sprites["start"].bitmap.blt((@viewport.rect.width - bmp.width)/2,(28 - bmp.height)/2,bmp,Rect.new(0,0,bmp.width,bmp.height))
  1748. @sprites["start"].toggle = 1
  1749. @sprites["start"].y = @viewport.rect.height - 64
  1750. @sprites["start"].z = 350
  1751. end
  1752.  
  1753. def intro
  1754. pbBGMPlay(@bgm)
  1755. 8.times do
  1756. @viewport2.color.alpha -= 64 if @viewport2.color.alpha > 0
  1757. @intro["bg"].angle += 0.5 if $PokemonSystem.screensize < 2
  1758. for j in 0...128
  1759. @intro["s#{j}"].angle += 0.5 if $PokemonSystem.screensize < 2
  1760. end
  1761. wait(1)
  1762. end
  1763. for j in 0...128
  1764. ox = @intro["s#{j}"].ox
  1765. @intro["s#{j}"].bitmap = pbBitmap("Graphics/Titles/gen_7_s2")
  1766. @intro["s#{j}"].ox = ox
  1767. @intro["s#{j}"].oy = @intro["s#{j}"].bitmap.height/2
  1768. end
  1769. 32.times do
  1770. @intro["bg"].angle += 2 if $PokemonSystem.screensize < 2
  1771. @intro["bg"].opacity -= 32
  1772. for j in 0...128
  1773. @intro["s#{j}"].angle += 2 if $PokemonSystem.screensize < 2
  1774. @intro["s#{j}"].zoom_x -= 0.03
  1775. @intro["s#{j}"].zoom_y -= 0.03
  1776. @intro["s#{j}"].opacity -= 8
  1777. end
  1778. wait(1)
  1779. end
  1780. pbDisposeSpriteHash(@intro)
  1781. @viewport2.dispose
  1782. @sprites["rect2"].color = Color.new(255,255,255,0)
  1783. for i in 0...8
  1784. @sprites["logo2"].opacity += 32
  1785. @sprites["rect2"].color.alpha += 32
  1786. wait(1)
  1787. end
  1788. for i in 0...16
  1789. @sprites["logo2"].color.alpha -= 16
  1790. self.update
  1791. wait(1,false)
  1792. end
  1793. end
  1794.  
  1795. def update
  1796. @sprites["start"].opacity -= @sprites["start"].toggle * 2
  1797. @sprites["start"].toggle *= -1 if @sprites["start"].opacity < 125 || @sprites["start"].opacity >= 255
  1798. @sprites["rect"].opacity += @sprites["rect"].toggle
  1799. @sprites["rect"].toggle *= -1 if @sprites["rect"].opacity <= 0 || @sprites["rect"].opacity >= 255
  1800. @sprites["rect3"].opacity += @sprites["rect3"].toggle
  1801. @sprites["rect3"].toggle *= -1 if @sprites["rect3"].opacity <= 0 || @sprites["rect3"].opacity >= 255
  1802. @sprites["rect2"].opacity -= 8 if @sprites["rect2"].opacity > 0
  1803. for i in 0...4
  1804. a = [1,-1,2,-2]
  1805. @sprites["e#{i}"].angle += a[i]*0.2 if $PokemonSystem.screensize < 2
  1806. end
  1807. for i in 0...128
  1808. @sprites["s#{i}"].opacity += @sprites["s#{i}"].speed*@sprites["s#{i}"].toggle
  1809. if @sprites["s#{i}"].opacity > @sprites["s#{i}"].param || @sprites["s#{i}"].opacity < 10
  1810. @sprites["s#{i}"].toggle *= -1
  1811. end
  1812. end
  1813. for j in 0...16
  1814. next if j > @i/24
  1815. if @sprites["p#{j}"].zoom_x <= 0
  1816. @sprites["p#{j}"].zoom_x = 2
  1817. @sprites["p#{j}"].zoom_y = 2
  1818. @sprites["p#{j}"].opacity = 255
  1819. @sprites["p#{j}"].angle = rand(360)
  1820. end
  1821. @sprites["p#{j}"].zoom_x -= 0.03125
  1822. @sprites["p#{j}"].zoom_y -= 0.03125
  1823. @sprites["p#{j}"].opacity -= 4
  1824. end
  1825. @sprites["logo1"].opacity -= @sprites["logo1"].toggle
  1826. @sprites["logo1"].toggle *= -1 if @sprites["logo1"].opacity < 85 || @sprites["logo1"].opacity >= 255
  1827. @i += 1 if @i < 1024
  1828. #### Flare
  1829. for j in 0...6
  1830. next if j > @i
  1831. @sprites["f#{j}"].opacity += (@i < 40) ? 32 : -16
  1832. @sprites["f#{j}"].x -= (6-j)*(j < 5 ? 1 : -1)
  1833. @sprites["f#{j}"].y += (6-j)*(j < 5 ? 1 : -1)
  1834. @sprites["f#{j}"].tone.red -= 1
  1835. @sprites["f#{j}"].tone.green -= 1
  1836. @sprites["f#{j}"].tone.blue -= 1
  1837. end
  1838. ###########
  1839. @currentFrame += 1
  1840. ######### Math stuff
  1841. @angle += 3 if @angle < 180 && @i >= 64
  1842. a = @angle*(Math::PI/180)
  1843. cx, cy = @viewport.rect.width, @viewport.rect.height
  1844. w, h = @viewport.rect.width*2, @viewport.rect.height/2
  1845.  
  1846. px = cx + w*Math.cos(a)
  1847. py = cy - h*Math.sin(a)
  1848.  
  1849. x1 = cx - w*0.8
  1850. x2 = cx + w*0.8
  1851.  
  1852. ax = (px - x1).abs
  1853. ay = (cy - py).abs
  1854.  
  1855. bx = (x2 - px).abs
  1856. by = (cy - py).abs
  1857.  
  1858. aA = Math.atan(ay.to_f/ax.to_f)*(180/Math::PI)
  1859. bA = Math.atan(by.to_f/bx.to_f)*(180/Math::PI)
  1860.  
  1861. c = (180 - aA - bA)/2
  1862. d = (180 - bA - c)
  1863.  
  1864. @sprites["comet"].x = px
  1865. @sprites["comet"].y = py
  1866. @sprites["comet"].angle = d - 90
  1867. ############
  1868. if @currentFrame == @totalFrames
  1869. self.restart if RESTART_TITLE
  1870. end
  1871. end
  1872.  
  1873. def restart
  1874. pbBGMStop(1)
  1875. @viewport.color = Color.new(0,0,0,0)
  1876. 51.times do
  1877. @viewport.color.alpha+=5
  1878. self.update
  1879. wait(1)
  1880. end
  1881. self.dispose(false)
  1882. raise Reset.new
  1883. end
  1884.  
  1885. def dispose(fade=true)
  1886. pbFadeOutAndHide(@sprites) if fade
  1887. pbDisposeSpriteHash(@sprites)
  1888. @viewport.dispose
  1889. @disposed=true
  1890. end
  1891.  
  1892. def disposed?
  1893. return @disposed
  1894. end
  1895.  
  1896. def wait(frames,advance=true)
  1897. return false if @skip
  1898. frames.times do
  1899. @currentFrame+=1 if advance
  1900. Graphics.update
  1901. Input.update
  1902. @skip = true if Input.trigger?(Input::C)
  1903. end
  1904. return true
  1905. end
  1906.  
  1907. end
  1908. #===============================================================================
  1909. # Completely custom Title Screen style
  1910. #===============================================================================
  1911. class GenCustomStyle
  1912. def initialize
  1913. # decides whether or not to show another layer of the title screen
  1914. @showPoke = true
  1915. # sound file for playing the title screen BGM
  1916. bgm = GEN_CUSTOM_BGM
  1917. str = "Audio/BGM/"+pbResolveAudioFile(bgm).name
  1918. @mp3 = (File.extname(str)==".ogg") ? true : false
  1919. @skip = false
  1920. @disposed = false
  1921. @swapped = false
  1922. @particles = 16
  1923. @speed = 15
  1924. @opacity = 15
  1925. @pframe = [0,0,0,0,0]
  1926. @speed = 3
  1927. @effo = 1
  1928. @moX = 0
  1929. @moY = 0
  1930. @logoY = 0
  1931.  
  1932. @currentFrame = 0
  1933. # calculates after how many frames the game will reset
  1934. @totalFrames=getPlayTime(str).to_i*Graphics.frame_rate
  1935.  
  1936. pbBGMPlay(bgm)
  1937. pbWait(30) if @mp3
  1938. @totalFrames-=100 if @mp3
  1939.  
  1940. # creates all the necessary graphics
  1941. @viewport = Viewport.new(0,0,Graphics.width,VIEWPORT_HEIGHT)
  1942. @viewport.z = 99999
  1943. @cX = @viewport.rect.height/2
  1944. @cInc = 2
  1945. @sprites = {}
  1946.  
  1947. @sprites["background"] = Sprite.new(@viewport)
  1948. @sprites["background"].bitmap = pbBitmap("Graphics/Titles/custom_background")
  1949. @sprites["background"].z = 99
  1950. @sprites["background"].ox = @sprites["background"].bitmap.width/2
  1951. @sprites["background"].oy = @sprites["background"].bitmap.height/2
  1952. @sprites["background"].x = @viewport.rect.width/2
  1953. @sprites["background"].y = @viewport.rect.height/2
  1954.  
  1955. @sprites["plane"] = ScrollingSprite.new(@viewport)
  1956. @sprites["plane"].setBitmap("Graphics/Titles/custom_plane")
  1957. @sprites["plane"].speed = 1
  1958.  
  1959. @sprites["black"] = Sprite.new(@viewport)
  1960. @sprites["black"].bitmap = Bitmap.new(@viewport.rect.width,@viewport.rect.height)
  1961. @sprites["black"].bitmap.fill_rect(0,0,@sprites["black"].bitmap.width,@sprites["black"].bitmap.height,Color.new(0,0,0))
  1962. @sprites["black"].z = 99999
  1963.  
  1964. @sprites["bars"] = Sprite.new(@viewport)
  1965. @sprites["bars"].bitmap = pbBitmap("Graphics/Titles/custom_bars")
  1966. @sprites["bars"].z = 99999
  1967. @sprites["bars"].x = @viewport.rect.width
  1968. @sprites["bars"].src_rect.height = @viewport.rect.height/2
  1969.  
  1970. @sprites["bars2"] = Sprite.new(@viewport)
  1971. @sprites["bars2"].bitmap = pbBitmap("Graphics/Titles/custom_bars")
  1972. @sprites["bars2"].z = 99999
  1973. @sprites["bars2"].x = -@viewport.rect.width
  1974. @sprites["bars2"].y = @viewport.rect.height/2
  1975. @sprites["bars2"].src_rect.y = @viewport.rect.height/2
  1976.  
  1977. @sprites["start"] = Sprite.new(@viewport)
  1978. @sprites["start"].bitmap = pbBitmap("Graphics/Titles/pokestart")
  1979. @sprites["start"].ox = @sprites["start"].bitmap.width/2
  1980. @sprites["start"].x = @viewport.rect.width/2
  1981. @sprites["start"].oy = @sprites["start"].bitmap.height/2
  1982. @sprites["start"].y = @viewport.rect.height - 16
  1983. @sprites["start"].opacity = 0
  1984. @sprites["start"].z = 99999
  1985.  
  1986. @sprites["effect1"] = Sprite.new(@viewport)
  1987. @sprites["effect1"].bitmap = pbBitmap("Graphics/Titles/custom_effect")
  1988. @sprites["effect1"].ox = @sprites["effect1"].bitmap.width/2
  1989. @sprites["effect1"].oy = @sprites["effect1"].bitmap.height/2
  1990. @sprites["effect1"].x = @viewport.rect.width/2
  1991. @sprites["effect1"].y = @viewport.rect.height/2 + 102
  1992.  
  1993. @sprites["effect2"] = Sprite.new(@viewport)
  1994. @sprites["effect2"].bitmap = pbBitmap("Graphics/Titles/gen_6_shine")
  1995. @sprites["effect2"].ox = @sprites["effect2"].bitmap.width/2
  1996. @sprites["effect2"].oy = @sprites["effect2"].bitmap.height/2
  1997. @sprites["effect2"].x = @viewport.rect.width/2
  1998. @sprites["effect2"].y = @viewport.rect.height/2 + 102
  1999.  
  2000. for i in 0...@particles
  2001. @sprites["p#{i}"] = AnimatedSpriteParticle.new(@viewport,rand(@particles))
  2002. @sprites["p#{i}"].dy = @viewport.rect.height/(2) + 102
  2003. @sprites["p#{i}"].inverted = false
  2004. @sprites["p#{i}"].refresh
  2005. end
  2006.  
  2007. @sprites["effect3"] = Sprite.new(@viewport)
  2008. @sprites["effect3"].bitmap = pbBitmap("Graphics/Titles/gen_6_effect2")
  2009. @sprites["effect3"].ox = @sprites["effect3"].bitmap.width/2
  2010. @sprites["effect3"].oy = @sprites["effect3"].bitmap.height/2
  2011. @sprites["effect3"].x = @viewport.rect.width/2
  2012. @sprites["effect3"].y = @viewport.rect.height/2 + 102
  2013.  
  2014. @sprites["clouds2"] = Sprite.new(@viewport)
  2015. @sprites["clouds2"].bitmap = pbBitmap("Graphics/Titles/custom_clouds_2")
  2016. @sprites["clouds2"].ox = @sprites["clouds2"].bitmap.width/2
  2017. @sprites["clouds2"].x = @viewport.rect.width/2
  2018. @sprites["clouds2"].oy = @sprites["clouds2"].bitmap.height/2
  2019. @sprites["clouds2"].y = @viewport.rect.height/2
  2020.  
  2021. @sprites["clouds1"] = Sprite.new(@viewport)
  2022. @sprites["clouds1"].bitmap = pbBitmap("Graphics/Titles/custom_clouds_1")
  2023. @sprites["clouds1"].ox = @sprites["clouds2"].bitmap.width/2
  2024. @sprites["clouds1"].x = @viewport.rect.width/2
  2025. @sprites["clouds1"].oy = @sprites["clouds1"].bitmap.height/2
  2026. @sprites["clouds1"].y = @viewport.rect.height/2
  2027.  
  2028. @sprites["logo2"] = Sprite.new(@viewport)
  2029. @sprites["logo2"].bitmap = pbBitmap("Graphics/Titles/pokelogo2")
  2030. @sprites["logo2"].z = 99999
  2031. @sprites["logo2"].opacity = 0
  2032. @sprites["logo2"].ox = @sprites["logo2"].bitmap.width/2
  2033. @sprites["logo2"].oy = @sprites["logo2"].bitmap.height/2
  2034. @sprites["logo2"].x = @viewport.rect.width/2
  2035. @sprites["logo2"].y = @viewport.rect.height/2 - 64
  2036.  
  2037. @sprites["logo"] = Sprite.new(@viewport)
  2038. @sprites["logo"].bitmap = pbBitmap("Graphics/Titles/custom_pokelogo")
  2039. @sprites["logo"].z = 99999
  2040. @sprites["logo"].ox = @sprites["logo"].bitmap.width/2
  2041. @sprites["logo"].oy = @sprites["logo"].bitmap.height/2
  2042. @sprites["logo"].x = @viewport.rect.width/2
  2043. @sprites["logo"].y = @viewport.rect.height/2
  2044.  
  2045. @sprites["shine1"] = Sprite.new(@viewport)
  2046. @sprites["shine1"].bitmap = pbBitmap("Graphics/Titles/custom_pokelogo_shine")
  2047. @sprites["shine1"].z = 99999
  2048. @sprites["shine1"].ox = @sprites["shine1"].bitmap.width/2
  2049. @sprites["shine1"].oy = @sprites["shine1"].bitmap.height/2
  2050. @sprites["shine1"].x = @viewport.rect.width/2 - 32
  2051. @sprites["shine1"].y = @viewport.rect.height/2
  2052. @sprites["shine1"].visible = false
  2053. @sprites["shine1"].src_rect.set(-32,0,32,@sprites["shine1"].bitmap.height)
  2054. @sprites["shine1"].opacity = 128
  2055.  
  2056. @sprites["shine2"] = Sprite.new(@viewport)
  2057. @sprites["shine2"].bitmap = pbBitmap("Graphics/Titles/custom_bars_shine")
  2058. @sprites["shine2"].z = 99999
  2059. @sprites["shine2"].x = -32
  2060. @sprites["shine2"].visible = false
  2061. @sprites["shine2"].src_rect.set(-32,0,32,@sprites["shine2"].bitmap.height)
  2062. end
  2063.  
  2064. def intro
  2065. @sprites["logo"].src_rect.set(0,@sprites["logo"].bitmap.height,@sprites["logo"].bitmap.width,32)
  2066. @sprites["logo"].y+=@sprites["logo"].bitmap.height
  2067. wait(16)
  2068. 36.times do
  2069. @sprites["logo"].src_rect.y-=8
  2070. @sprites["logo"].y-=8
  2071. wait(1)
  2072. end
  2073. @sprites["logo"].y = @viewport.rect.height/2
  2074. @sprites["logo"].src_rect.set(0,0,@sprites["logo"].bitmap.width,@sprites["logo"].bitmap.height)
  2075. @sprites["logo"].opacity = 0
  2076. wait(16)
  2077. 32.times do
  2078. @sprites["bars"].x-=32
  2079. @sprites["bars2"].x+=32
  2080. wait(1)
  2081. end
  2082. @sprites["bars"].x = 0
  2083. @sprites["bars"].opacity = 0
  2084. @sprites["bars"].src_rect.height = @sprites["bars"].bitmap.height
  2085. @sprites["bars2"].dispose
  2086. wait(16)
  2087. 51.times do
  2088. @sprites["bars"].opacity+=5
  2089. @sprites["logo"].opacity+=5
  2090. self.update
  2091. @sprites["start"].opacity = 0
  2092. wait(1)
  2093. end
  2094. 16.times do
  2095. self.update
  2096. @sprites["start"].opacity = 0
  2097. wait(1)
  2098. end
  2099. 47.times do
  2100. @sprites["black"].opacity-=2
  2101. self.update
  2102. @sprites["start"].opacity = 0
  2103. wait(1)
  2104. end
  2105. @viewport.color = Color.new(255,255,255)
  2106. @sprites["black"].opacity = 0
  2107. @sprites["background"].z = -1
  2108. @sprites["logo"].bitmap = pbBitmap("Graphics/Titles/pokelogo")
  2109. 16.times do
  2110. @viewport.color.alpha-=255/16.0
  2111. self.update
  2112. @sprites["start"].opacity = 0
  2113. wait(1)
  2114. end
  2115. 16.times do
  2116. self.update
  2117. @sprites["start"].opacity = 0
  2118. wait(1)
  2119. end
  2120. 32.times do
  2121. @logoY+=1
  2122. @sprites["logo2"].opacity+=255/32.0
  2123. self.update
  2124. @sprites["start"].opacity = 0
  2125. wait(1)
  2126. end
  2127. @sprites["shine1"].visible = true
  2128. @sprites["shine2"].visible = true
  2129. end
  2130.  
  2131. def update(circle=EXPAND_STYLE)
  2132. @sprites["start"].opacity+=@opacity
  2133. @opacity=-15 if @sprites["start"].opacity>=255
  2134. @opacity=+15 if @sprites["start"].opacity<=0
  2135. @sprites["effect1"].angle+=1 if $ResizeFactor <= 1
  2136. @sprites["effect3"].angle+=0.2 if $ResizeFactor <= 1
  2137. @sprites["effect3"].opacity-=@effo
  2138. if @sprites["effect3"].opacity < 32
  2139. @effo = -1
  2140. elsif @sprites["effect3"].opacity >= 255
  2141. @effo = 1
  2142. end
  2143. @sprites["effect2"].angle-=1 if $ResizeFactor <= 1
  2144. for i in 0...@particles
  2145. @sprites["p#{i}"].update
  2146. end
  2147. @sprites["plane"].update
  2148.  
  2149. @currentFrame+=1 if !@skip
  2150. if @currentFrame==@totalFrames
  2151. self.restart if RESTART_TITLE
  2152. end
  2153.  
  2154. if defined?($mouse) && circle
  2155. mouseX = ($mouse.x < 0) ? @viewport.rect.width/2 : $mouse.x
  2156. mouseY = ($mouse.y < 0) ? @viewport.rect.height/2 : $mouse.y
  2157. mouseX = @viewport.rect.width if mouseX > @viewport.rect.width
  2158. mouseY = @viewport.rect.height if mouseY > @viewport.rect.height
  2159. else
  2160. mouseX, mouseY = getCircleCoordinates
  2161. end
  2162.  
  2163. if circle
  2164. @moY = ((@viewport.rect.height/2.0) - mouseY)/@viewport.rect.height/2.0
  2165. @moX = ((@viewport.rect.width/2.0) - mouseX)/@viewport.rect.width/2.0
  2166. else
  2167. @moY = 0
  2168. @moX = 0
  2169. end
  2170.  
  2171. @sprites["clouds2"].x = @viewport.rect.width/2 - @moX*24
  2172. @sprites["clouds2"].y = @viewport.rect.height/2 - @moY*16
  2173. @sprites["clouds1"].x = @viewport.rect.width/2 - @moX*36
  2174. @sprites["clouds1"].y = @viewport.rect.height/2 - @moY*24
  2175.  
  2176. @sprites["effect2"].x = @viewport.rect.width/2 - @moX*18
  2177. @sprites["effect2"].y = @viewport.rect.height/2 + 102 - @moY*12
  2178.  
  2179. @sprites["effect3"].x = @viewport.rect.width/2 - @moX*32
  2180. @sprites["effect3"].y = @viewport.rect.height/2 + 102 - @moY*24
  2181.  
  2182. @sprites["logo"].x = @viewport.rect.width/2 - @moX*48
  2183. @sprites["logo"].y = @viewport.rect.width/2 - @logoY - 48 - @moY*32
  2184. @sprites["logo2"].x = @sprites["logo"].x
  2185. @sprites["logo2"].y = @sprites["logo"].y - 64 + @logoY*2
  2186.  
  2187. @sprites["shine1"].src_rect.x+=8
  2188. @sprites["shine1"].x = @sprites["logo"].x + @sprites["shine1"].src_rect.x
  2189. @sprites["shine1"].y = @sprites["logo"].y
  2190. @sprites["shine2"].src_rect.x+=8
  2191. @sprites["shine2"].x+=8
  2192. if @sprites["shine2"].x > @viewport.rect.width*6
  2193. @sprites["shine1"].src_rect.x = -32
  2194. @sprites["shine1"].x = @sprites["logo"].x - 32
  2195. @sprites["shine2"].src_rect.x = -32
  2196. @sprites["shine2"].x = -32
  2197. end
  2198.  
  2199. end
  2200.  
  2201. def getCircleCoordinates
  2202. height = @viewport.rect.height
  2203. width = height
  2204. offset = (@viewport.rect.width - @viewport.rect.height)/2
  2205. x = @cX
  2206. r = width/2
  2207. # basic circle formula
  2208. # (x - tx)**2 + (y - ty)**2 = r**2
  2209. y1 = -Math.sqrt(r**2 - (x - width/2)**2).to_i
  2210. y2 = Math.sqrt(r**2 - (x - width/2)**2).to_i
  2211. @cX+=@cInc
  2212. @cInc = -2 if @cX >= width
  2213. @cInc = +2 if @cX <= 0
  2214. return (x + offset), (@cInc > 0 ? y1 : y2) + height/2
  2215. end
  2216.  
  2217. def restart
  2218. pbBGMStop(1)
  2219. @viewport.color = Color.new(0,0,0,0)
  2220. 51.times do
  2221. @viewport.color.alpha+=5
  2222. self.update
  2223. wait(1)
  2224. end
  2225. self.dispose(false)
  2226. raise Reset.new
  2227. end
  2228.  
  2229. def dispose(fade=true)
  2230. pbFadeOutAndHide(@sprites) if fade
  2231. pbDisposeSpriteHash(@sprites)
  2232. @disposed=true
  2233. end
  2234.  
  2235. def disposed?
  2236. return @disposed
  2237. end
  2238.  
  2239. def wait(frames,advance=true)
  2240. return false if @skip
  2241. frames.times do
  2242. @currentFrame+=1 if advance
  2243. Graphics.update
  2244. Input.update
  2245. @skip=true if Input.trigger?(Input::C)
  2246. end
  2247. return true
  2248. end
  2249.  
  2250. end
  2251. #===============================================================================
  2252. # Default Essentials one
  2253. #===============================================================================
  2254. class EssentialsTitleScreen
  2255. def initialize
  2256. @skip = false
  2257. @currentFrame = 0
  2258. # calculates after how many frames the game will reset
  2259. #@totalFrames=getPlayTime("Audio/BGM/#{bgm}")*Graphics.frame_rate
  2260. @totalFrames = 90*Graphics.frame_rate
  2261. @timer = 0
  2262.  
  2263. @sprites = {}
  2264. @sprites["pic"] = Sprite.new
  2265. @sprites["pic"].bitmap = pbBitmap("Graphics/Titles/splash.png")
  2266.  
  2267. @sprites["pic2"] = Sprite.new
  2268. @sprites["pic2"].bitmap = pbBitmap("Graphics/Titles/start")
  2269. @sprites["pic2"].y = 322
  2270.  
  2271. data_system = pbLoadRxData("Data/System")
  2272. pbBGMPlay(data_system.title_bgm)
  2273. end
  2274.  
  2275. def intro
  2276. pbFadeInAndShow(@sprites)
  2277. end
  2278.  
  2279. def update
  2280. @timer+=1
  2281. @timer=0 if @timer>=80
  2282. if @timer>=32
  2283. @sprites["pic2"].opacity = 8*(@timer-32)
  2284. else
  2285. @sprites["pic2"].opacity = 255-(8*@timer)
  2286. end
  2287. if @currentFrame>=@totalFrames
  2288. raise Reset.new if RESTART_TITLE
  2289. end
  2290. end
  2291.  
  2292. def dispose(fade=true)
  2293. pbFadeOutAndHide(@sprites) if fade
  2294. pbDisposeSpriteHash(@sprites)
  2295. @disposed=true
  2296. end
  2297.  
  2298. def disposed?
  2299. return @disposed
  2300. end
  2301.  
  2302. def wait(frames)
  2303. return if @skip
  2304. frames.times do
  2305. @currentFrame+=1
  2306. Graphics.update
  2307. Input.update
  2308. @skip=true if Input.trigger?(Input::C)
  2309. end
  2310. end
  2311.  
  2312. end
  2313. #-------------------------------------------------------------------------------
  2314. # Gen 5 Title Screen Pokemon sprite
  2315. #-------------------------------------------------------------------------------
  2316. class AnimatedPokemonSprite < Sprite
  2317. def setBitmap(pokemon,back=false)
  2318. @bitmap = pbLoadPokemonBitmap(pokemon,back)
  2319. self.bitmap = @bitmap.bitmap.clone
  2320. self.ox = self.bitmap.width/2
  2321. self.oy = self.bitmap.height
  2322. metrics=load_data("Data/metrics.dat")
  2323. self.oy+=metrics[2][pokemon.species]
  2324. self.oy-=metrics[1][pokemon.species]
  2325. end
  2326.  
  2327. def animatedBitmap; return @bitmap; end
  2328. def width; return @bitmap.width; end
  2329. def height; return @bitmap.height; end
  2330.  
  2331. def update
  2332. @bitmap.update
  2333. self.bitmap = @bitmap.bitmap.clone
  2334. end
  2335. end
  2336. #-------------------------------------------------------------------------------
  2337. # Gen 6 Title Screen particles
  2338. #-------------------------------------------------------------------------------
  2339. class AnimatedSpriteParticle < Sprite
  2340. attr_accessor :inverted
  2341. attr_accessor :repeat
  2342. attr_accessor :count
  2343. attr_accessor :dy
  2344. attr_accessor :dx
  2345. def initialize(viewport,delay=0)
  2346. @dx = viewport.rect.width/2
  2347. @dy = viewport.rect.height/4
  2348. @repeat = -1
  2349. @count = 0
  2350. super(viewport)
  2351. @inverted = true
  2352. self.refresh
  2353. @delay = delay
  2354. @frame = 0
  2355. self.visible = false
  2356. end
  2357.  
  2358. def update
  2359. return if @repeat > 0 && @count > @repeat
  2360. @frame+=1
  2361. return if @frame < @delay
  2362. self.visible = true
  2363. @px-= @inverted ? (@px-@pos[0])*(0.002*@speed) : (@pos[0]-@px)*(0.002*@speed)
  2364. @py-= @inverted ? (@py-@pos[1])*(0.002*@speed) : (@pos[1]-@py)*(0.002*@speed)
  2365. self.x = @px
  2366. self.y = @py
  2367. s = @inverted ? 0.5 : 1
  2368. self.opacity-=0.5*@speed*s
  2369. self.refresh if self.opacity <= 0
  2370. end
  2371.  
  2372. def refresh
  2373. self.opacity = 255
  2374. self.x = @dx
  2375. self.y = @dy
  2376. x = rand(@dx*2 + 32*4)-32*2
  2377. y = rand(@dy*2 + 32*4)-32*2
  2378. x1 = rand(2)<1 ? -rand(32) : @dx*2+rand(32)
  2379. y1 = @dy-46+rand(92)
  2380. @pos = [
  2381. @inverted ? @dx : x,
  2382. @inverted ? @dy : y
  2383. ]
  2384. @px = @inverted ? x1 : @dx
  2385. @py = @inverted ? y1 : @dy
  2386. @speed = (rand(16)+1)*0.5
  2387. @speed*=4 if @inverted
  2388. if rand(2) < 1
  2389. self.bitmap = pbBitmap("Graphics/Titles/gen_6_particle2")
  2390. else
  2391. self.bitmap = pbBitmap("Graphics/Titles/gen_6_particle")
  2392. end
  2393. self.ox = self.bitmap.width/2
  2394. self.oy = self.bitmap.height/2
  2395. @count+=1 if @repeat > 0
  2396. end
  2397. end
  2398. #-------------------------------------------------------------------------------
  2399. # Gen 6 EB demo
  2400. #-------------------------------------------------------------------------------
  2401. # If the Elite Battle system is detected, the game will play a little demo of it
  2402. # after the title screen finishes playing.
  2403. class PlayEBDemo
  2404.  
  2405. def initialize(bgm=EB_DEMO_BGM)
  2406. @viewport = {}
  2407. $Trainer = PokeBattle_Trainer.new("",0)
  2408.  
  2409. @skip = false
  2410. @files = readDirectoryFiles("Graphics/Titles/Extra/",["*.png"]).sort_by { |x| x[/\d+/].to_i }
  2411. return if @files.length<7
  2412. pbBGMPlay(bgm)
  2413.  
  2414. @sprites = {}
  2415. @viewport["2"] = Viewport.new(0,0,Graphics.width,VIEWPORT_HEIGHT)
  2416. @viewport["2"].tone = Tone.new(-255,-255,-255)
  2417. @ballframe = 0
  2418. @sprites["pokeball"]=Sprite.new(@viewport["2"])
  2419. @sprites["pokeball"].bitmap=BitmapCache.load_bitmap("#{checkEBFolderPath}/pokeballs")
  2420. @sprites["pokeball"].src_rect.set(0,@ballframe*40,41,40)
  2421. @sprites["pokeball"].ox=20
  2422. @sprites["pokeball"].oy=20
  2423. @sprites["pokeball"].zoom_x = 1.5
  2424. @sprites["pokeball"].zoom_y = 1.5
  2425. @sprites["pokeball"].z = 20
  2426. @sprites["pokeball"].x = @viewport["2"].rect.width/2
  2427. @sprites["pokeball"].y = @viewport["2"].rect.height*0.6-128
  2428. for i in 1..3
  2429. y = [-VIEWPORT_HEIGHT,0,VIEWPORT_HEIGHT]
  2430. @viewport["#{i}"] = Viewport.new((Graphics.width/3+5)*(i-1),y[i-1],Graphics.width/3-8,VIEWPORT_HEIGHT) if i!=2
  2431. @viewport["#{i}"].z = 1 if i!=2
  2432. pkmn = PokeBattle_Pokemon.new(EB_SPECIES[i-1],5)
  2433.  
  2434. @sprites["bg#{i}"] = Sprite.new(@viewport["#{i}"])
  2435. @sprites["bg#{i}"].bitmap = Bitmap.new(@viewport["#{i}"].rect.width,@viewport["#{i}"].rect.height-24)
  2436. bmp = pbBitmap("Graphics/Battlebacks/battlebg#{EB_BG[i-1]}")
  2437. @sprites["bg#{i}"].bitmap.stretch_blt(Rect.new(0,0,@viewport["#{i}"].rect.width,@viewport["#{i}"].rect.height),bmp,Rect.new(bmp.width/4,bmp.height/4,bmp.width/2,bmp.height/2))
  2438. @sprites["bg#{i}"].ox = @sprites["bg#{i}"].bitmap.width/2
  2439. @sprites["bg#{i}"].oy = @sprites["bg#{i}"].bitmap.height/2
  2440. @sprites["bg#{i}"].x = @viewport["#{i}"].rect.width/2
  2441. @sprites["bg#{i}"].y = @viewport["#{i}"].rect.height/2
  2442.  
  2443. @sprites["base#{i}"] = Sprite.new(@viewport["#{i}"])
  2444. @sprites["base#{i}"].bitmap = pbBitmap("Graphics/Battlebacks/enemybase#{EB_BASE[i-1]}")
  2445. @sprites["base#{i}"].ox = @sprites["base#{i}"].bitmap.width/2
  2446. @sprites["base#{i}"].oy = @sprites["base#{i}"].bitmap.height/2
  2447. @sprites["base#{i}"].x = @viewport["#{i}"].rect.width/2
  2448. @sprites["base#{i}"].y = @viewport["#{i}"].rect.height*0.6
  2449. @sprites["base#{i}"].zoom_x = 1.5
  2450. @sprites["base#{i}"].zoom_y = 1.5
  2451.  
  2452. @sprites["pokemon#{i}"]=DynamicPokemonSprite.new(false,0,@viewport["#{i}"])
  2453. @sprites["pokemon#{i}"].setPokemonBitmap(pkmn,false)
  2454. @sprites["pokemon#{i}"].mirror = true
  2455. @sprites["pokemon#{i}"].x = @sprites["base#{i}"].x
  2456. @sprites["pokemon#{i}"].y = @sprites["base#{i}"].y
  2457. @sprites["pokemon#{i}"].zoom_x = 1.5
  2458. @sprites["pokemon#{i}"].zoom_y = 1.5
  2459. end
  2460. @viewport["3"].rect.height = 0
  2461. @oy = @sprites["pokemon2"].oy
  2462. @sprites["pokemon2"].oy = @sprites["pokemon2"].bitmap.width/2
  2463. @sprites["pokemon2"].y-=128+@sprites["pokemon2"].oy/2
  2464. @sprites["pokemon2"].zoom_x = 0
  2465. @sprites["pokemon2"].zoom_y = 0
  2466. @sprites["pokemon2"].tone = Tone.new(255,255,255)
  2467. @sprites["pokemon2"].showshadow = false
  2468.  
  2469. self.play
  2470. @viewport.dispose
  2471. self.dispose
  2472. end
  2473.  
  2474. def play
  2475. 15.times do
  2476. @viewport["2"].tone.red+=17
  2477. @viewport["2"].tone.green+=17
  2478. @viewport["2"].tone.blue+=17
  2479. @sprites["pokeball"].src_rect.set(0,@ballframe*40,41,40)
  2480. wait(1)
  2481. end
  2482. wait(1)
  2483. 8.times do
  2484. @sprites["pokeball"].src_rect.set(0,@ballframe*40,41,40)
  2485. wait(1)
  2486. end
  2487. @sprites["pokeball"].visible=false
  2488. 8.times do
  2489. @sprites["pokemon2"].zoom_x+=0.125*1.5
  2490. @sprites["pokemon2"].zoom_y+=0.125*1.5
  2491. wait(1)
  2492. end
  2493. 8.times do
  2494. @sprites["pokemon2"].tone.red-=32
  2495. @sprites["pokemon2"].tone.green-=32
  2496. @sprites["pokemon2"].tone.blue-=32
  2497. wait(1)
  2498. end
  2499. @sprites["pokemon2"].y+=@sprites["pokemon2"].oy/2
  2500. @sprites["pokemon2"].oy = @oy
  2501. 8.times do
  2502. @sprites["pokemon2"].y+=16
  2503. wait(1)
  2504. end
  2505. @sprites["pokemon2"].showshadow = true
  2506. 4.times do
  2507. @viewport["2"].rect.y+=2
  2508. wait(1)
  2509. end
  2510. 4.times do
  2511. @viewport["2"].rect.y-=2
  2512. wait(1)
  2513. end
  2514. wait(8)
  2515. 8.times do
  2516. @viewport["2"].rect.x+=22
  2517. @viewport["2"].rect.width-=44
  2518. @sprites["bg2"].x = @viewport["2"].rect.width/2
  2519. @sprites["base2"].x = @viewport["2"].rect.width/2
  2520. @sprites["pokemon2"].x = @sprites["base2"].x
  2521. wait(1)
  2522. end
  2523. wait(16)
  2524. 8.times do
  2525. @viewport["1"].rect.y+=48
  2526. wait(1)
  2527. end
  2528. wait(16)
  2529. 8.times do
  2530. @viewport["3"].rect.y-=48
  2531. @viewport["3"].rect.height+=48
  2532. wait(1)
  2533. end
  2534. wait(24)
  2535. 16.times do
  2536. @viewport["1"].rect.y-=24
  2537. @viewport["2"].rect.y+=24
  2538. @viewport["2"].rect.height-=24
  2539. @viewport["3"].rect.y-=24
  2540. wait(1)
  2541. end
  2542. self.dispose
  2543. wait(8)
  2544. @viewport = Viewport.new(0,0,Graphics.width,VIEWPORT_HEIGHT)
  2545. for i in 0..1
  2546. pbDisposeSpriteHash(@sprites)
  2547. f = [1,-1][i]
  2548. @viewport.tone = Tone.new(255,255,255)
  2549. @sprites["#{i}"] = Sprite.new(@viewport)
  2550. @sprites["#{i}"].bitmap = pbBitmap("Graphics/Titles/Extra/#{@files[i]}")
  2551. @sprites["#{i}"].ox = @sprites["#{i}"].bitmap.width/2
  2552. @sprites["#{i}"].oy = @sprites["#{i}"].bitmap.height/2
  2553. @sprites["#{i}"].x = @viewport.rect.width/2
  2554. @sprites["#{i}"].y = @viewport.rect.height/2
  2555. @sprites["#{i}"].angle=-4*f
  2556. 51.times do
  2557. @viewport.tone.red-=10 if @viewport.tone.red>0
  2558. @viewport.tone.green-=10 if @viewport.tone.green>0
  2559. @viewport.tone.blue-=10 if @viewport.tone.blue>0
  2560. @sprites["#{i}"].angle+=0.1*f
  2561.  
  2562. wait(1)
  2563. end
  2564. end
  2565. pbDisposeSpriteHash(@sprites)
  2566. for i in 2..5
  2567. @sprites["#{i}"] = Sprite.new(@viewport)
  2568. @sprites["#{i}"].bitmap = pbBitmap("Graphics/Titles/Extra/#{@files[i]}")
  2569. @sprites["#{i}"].ox = @sprites["#{i}"].bitmap.width/2
  2570. @sprites["#{i}"].oy = @sprites["#{i}"].bitmap.height/2
  2571. @sprites["#{i}"].x = -@viewport.rect.width/2
  2572. @sprites["#{i}"].y = @viewport.rect.height/2
  2573. 16.times do
  2574. @sprites["#{i}"].x+=32
  2575. if i>2
  2576. @sprites["#{i-1}"].opacity-=16
  2577. end
  2578. wait(1)
  2579. end
  2580. wait(8)
  2581. end
  2582. wait(8)
  2583. pbDisposeSpriteHash(@sprites)
  2584. for i in 6..6
  2585. @viewport.tone = Tone.new(255,255,255)
  2586. @sprites["#{i}"] = Sprite.new(@viewport)
  2587. @sprites["#{i}"].bitmap = pbBitmap("Graphics/Titles/Extra/#{@files[i]}")
  2588. @sprites["#{i}"].ox = @sprites["#{i}"].bitmap.width/2
  2589. @sprites["#{i}"].oy = @sprites["#{i}"].bitmap.height/2
  2590. @sprites["#{i}"].x = @viewport.rect.width/2
  2591. @sprites["#{i}"].y = @viewport.rect.height/2
  2592. 51.times do
  2593. @viewport.tone.red-=5
  2594. @viewport.tone.green-=5
  2595. @viewport.tone.blue-=5
  2596. wait(1)
  2597. end
  2598. end
  2599. wait(12)
  2600. pbDisposeSpriteHash(@sprites)
  2601. wait(40)
  2602. pbBGMStop(1.0)
  2603. wait(20)
  2604. end
  2605.  
  2606. def dispose
  2607. pbDisposeSpriteHash(@sprites)
  2608. pbDisposeSpriteHash(@viewport) if @viewport.is_a?(Hash)
  2609. end
  2610.  
  2611. def wait(frames)
  2612. return false if @skip
  2613. frames.times do
  2614. Graphics.update
  2615. Input.update
  2616. for i in 1..3
  2617. @sprites["pokemon#{i}"].update if @sprites["pokemon#{i}"]
  2618. end
  2619. @ballframe+=1
  2620. @ballframe=0 if @ballframe > 7
  2621. @skip=true if Input.trigger?(Input::C)
  2622. end
  2623. return true
  2624. end
  2625.  
  2626. end
  2627. #-------------------------------------------------------------------------------
  2628. # Custom credits scene
  2629. # creates an animated Panorama with a running trainer sprite
  2630. #-------------------------------------------------------------------------------
  2631. if defined?(CUSTOM_CREDITS) && CUSTOM_CREDITS
  2632. class Scene_Credits
  2633.  
  2634. def main; end
  2635.  
  2636. def initialize
  2637. @pframe = [0,0,0,0,0]
  2638. @speed = 3
  2639. @cpeed = 1
  2640. @viewport1 = Viewport.new(0,VIEWPORT_HEIGHT,Graphics.width,VIEWPORT_HEIGHT)
  2641. @viewport1.z = 99999
  2642. @viewport2 = Viewport.new(0,0,Graphics.width,VIEWPORT_HEIGHT*2)
  2643. @viewport2.z = 99999
  2644. @viewport3 = Viewport.new(0,0,Graphics.width,VIEWPORT_HEIGHT)
  2645. @viewport3.z = 99999
  2646. @viewport3.color = Color.new(0,0,0,0)
  2647. 16.times do
  2648. @viewport3.color.alpha += 16
  2649. pbWait(1)
  2650. end
  2651. $scene = self
  2652. @sprites = {}
  2653. credits = CREDIT.split(/\n/)
  2654.  
  2655. @sprites["credits"] = Sprite.new(@viewport1)
  2656. @sprites["credits"].bitmap = Bitmap.new(Graphics.width,32 * credits.length)
  2657. @sprites["credits"].z = 99
  2658. @sprites["credits"].y = VIEWPORT_HEIGHT
  2659. pbSetSystemFont(@sprites["credits"].bitmap)
  2660. gw = Graphics.width*0.8
  2661. ox = (Graphics.width-gw)/2
  2662.  
  2663. for i in 0...credits.length
  2664. c = credits[i]
  2665. if c.include?("<s>")
  2666. n = c.split("<s>")
  2667. width = gw/n.length
  2668. for s in n
  2669. pbDrawOutlineText(@sprites["credits"].bitmap,ox+width*n.index(s),i*32,width,32,s,CREDITS_FILL,CREDITS_OUTLINE,1)
  2670. end
  2671. else
  2672. pbDrawOutlineText(@sprites["credits"].bitmap,ox,i*32,gw,32,c,CREDITS_FILL,CREDITS_OUTLINE,1)
  2673. end
  2674. end
  2675.  
  2676. self.compileLogo
  2677. self.drawSky
  2678. self.drawPanorama
  2679. @sprites["trainer"] = Sprite.new(@viewport1)
  2680. @sprites["trainer"].bitmap = pbBitmap(self.getTrainer)
  2681. @sprites["trainer"].src_rect.set(0,0,@sprites["trainer"].bitmap.height,@sprites["trainer"].bitmap.width/6)
  2682. @sprites["trainer"].z = 99999
  2683. @sprites["trainer"].ox = @sprites["trainer"].src_rect.width/2
  2684. @sprites["trainer"].oy = @sprites["trainer"].src_rect.height
  2685. @sprites["trainer"].x = Graphics.width*0.75
  2686. @sprites["trainer"].y = VIEWPORT_HEIGHT - 12
  2687. #Stops all audio but background music.
  2688. self.stopAudio
  2689. 20.times do
  2690. @viewport3.color.alpha -= 16
  2691. Graphics.update
  2692. end
  2693. self.flareAnimation
  2694. loop do
  2695. Graphics.update
  2696. Input.update
  2697. @cpeed = Input.press?(Input::C) ? 0 : 1
  2698. self.update
  2699. break if @sprites["credits"].y <= -@sprites["credits"].bitmap.height
  2700. end
  2701. pbBGMFade(3.0)
  2702. for i in 0...128
  2703. @sprites["blank"].opacity += 16
  2704. @sprites["trainer"].x -= 2
  2705. @sprites["trainer"].opacity -= 4 if i >= 64
  2706. self.update
  2707. Graphics.update
  2708. end
  2709. $PokemonGlobal.creditsPlayed=true
  2710. pbDisposeSpriteHash(@sprites)
  2711. @viewport1.dispose
  2712. @viewport2.dispose
  2713. @viewport3.dispose
  2714. $scene = Scene_Map.new
  2715. pbBGMPlay(@previousBGM)
  2716. end
  2717.  
  2718. def stopAudio
  2719. @previousBGM = $game_system.getPlayingBGM
  2720. pbMEStop()
  2721. pbBGSStop()
  2722. pbSEStop()
  2723. pbBGMFade(2.0)
  2724. pbBGMPlay(CREDITS_BGM)
  2725. end
  2726.  
  2727. def last?
  2728. end
  2729.  
  2730. def update
  2731. self.updatePanorama
  2732. end
  2733.  
  2734. def drawSky
  2735. @sprites["rect1"] = Sprite.new(@viewport3)
  2736. @sprites["rect1"].bitmap = Bitmap.new(Graphics.width,VIEWPORT_HEIGHT/2)
  2737. @sprites["rect1"].bitmap.fill_rect(0,0,@sprites["rect1"].bitmap.width,@sprites["rect1"].bitmap.height,Color.new(0,0,0))
  2738. @sprites["rect2"] = Sprite.new(@viewport3)
  2739. @sprites["rect2"].bitmap = Bitmap.new(Graphics.width,VIEWPORT_HEIGHT/2)
  2740. @sprites["rect2"].bitmap.fill_rect(0,0,@sprites["rect2"].bitmap.width,@sprites["rect2"].bitmap.height,Color.new(0,0,0))
  2741. @sprites["rect2"].y = VIEWPORT_HEIGHT/2
  2742. @sprites["sky"] = Sprite.new(@viewport2)
  2743. @sprites["sky"].bitmap = pbBitmap("graphics/Titles/Panorama/background_sky")
  2744. @sprites["sun2"] = Sprite.new(@viewport2)
  2745. @sprites["sun2"].bitmap = pbBitmap("Graphics/Titles/Panorama/sun2")
  2746. @sprites["sun2"].ox = @sprites["sun2"].bitmap.width/2
  2747. @sprites["sun2"].oy = @sprites["sun2"].bitmap.height/2
  2748. @sprites["sun2"].x = Graphics.width/2
  2749. @sprites["sun2"].y = VIEWPORT_HEIGHT/2
  2750. @sprites["sun1"] = Sprite.new(@viewport2)
  2751. @sprites["sun1"].bitmap = pbBitmap("Graphics/Titles/Panorama/sun1")
  2752. @sprites["sun1"].ox = @sprites["sun1"].bitmap.width/2
  2753. @sprites["sun1"].oy = @sprites["sun1"].bitmap.height/2
  2754. @sprites["sun1"].x = Graphics.width/2
  2755. @sprites["sun1"].y = VIEWPORT_HEIGHT/2
  2756. end
  2757.  
  2758. def updateSky
  2759. @sprites["sun2"].angle += 1 if $PokemonSystem.screensize < 2
  2760. @sprites["sun1"].angle -= 1 if $PokemonSystem.screensize < 2
  2761. end
  2762.  
  2763. def flareAnimation
  2764. @flare = {}
  2765. for i in 0...6
  2766. @flare["#{i}"] = Sprite.new(@viewport3)
  2767. @flare["#{i}"].z = 99
  2768. @flare["#{i}"].bitmap = pbBitmap("Graphics/Titles/Panorama/flare#{i+1}")
  2769. @flare["#{i}"].ox = @flare["#{i}"].bitmap.width/2
  2770. @flare["#{i}"].oy = @flare["#{i}"].bitmap.height/2
  2771. @flare["#{i}"].x = Graphics.width/2
  2772. @flare["#{i}"].y = VIEWPORT_HEIGHT/2
  2773. @flare["#{i}"].opacity = 0
  2774. @flare["#{i}"].tone = Tone.new(128,128,128)
  2775. end
  2776. for i in 0...60
  2777. @sprites["rect1"].y -= 8
  2778. @sprites["rect2"].y += 8
  2779. @viewport3.color = Color.new(255,255,255) if i == 2
  2780. for j in 0...6
  2781. next if j > i
  2782. @flare["#{j}"].opacity += (i<40) ? 32 : -16
  2783. @flare["#{j}"].x -= (6-j)*(j<5 ? 1 : -1)
  2784. @flare["#{j}"].y += (6-j)*(j<5 ? 1 : -1)
  2785. @flare["#{j}"].tone.red -= 1
  2786. @flare["#{j}"].tone.green -= 1
  2787. @flare["#{j}"].tone.blue -= 1
  2788. end
  2789. @viewport3.color.alpha -= 8 if @viewport3.color.alpha > 0
  2790. Graphics.update
  2791. self.updateSky
  2792. end
  2793. for i in 0...128
  2794. @viewport1.rect.y -= @viewport1.rect.height/128
  2795. @viewport2.rect.y -= @viewport2.rect.height/256
  2796. @viewport3.rect.y -= @viewport3.rect.height/128
  2797. if i >= 64
  2798. @sprites["sun1"].opacity -= 4
  2799. @sprites["sun2"].opacity -= 4
  2800. end
  2801. Graphics.update
  2802. self.updatePanorama
  2803. self.updateSky
  2804. end
  2805. end
  2806.  
  2807. def drawPanorama
  2808. @sprites["background"] = Sprite.new(@viewport1)
  2809. @sprites["background"].bitmap = pbBitmap("Graphics/Titles/Panorama/background")
  2810. @sprites["background2"] = Sprite.new(@viewport1)
  2811. @sprites["background2"].bitmap = pbBitmap("Graphics/Titles/Panorama/background_cover")
  2812. @sprites["background2"].z = 999
  2813. @sprites["clouds"] = AnimatedPlane.new(@viewport1)
  2814. @sprites["clouds"].bitmap = pbBitmap("Graphics/Titles/Panorama/clouds")
  2815. @sprites["mountains"] = Sprite.new(@viewport1)
  2816. @sprites["mountains"].bitmap = pbBitmap("Graphics/Titles/Panorama/mountains")
  2817. @sprites["trees3"] = AnimatedPlane.new(@viewport1)
  2818. @sprites["trees3"].bitmap = pbBitmap("Graphics/Titles/Panorama/trees_3")
  2819. @sprites["trees2"] = AnimatedPlane.new(@viewport1)
  2820. @sprites["trees2"].bitmap = pbBitmap("Graphics/Titles/Panorama/trees_2")
  2821. @sprites["trees1"] = AnimatedPlane.new(@viewport1)
  2822. @sprites["trees1"].bitmap = pbBitmap("Graphics/Titles/Panorama/trees_1")
  2823. @sprites["grass"] = AnimatedPlane.new(@viewport1)
  2824. @sprites["grass"].bitmap = pbBitmap("Graphics/Titles/Panorama/grass")
  2825. @sprites["grass"].z = 999
  2826. @sprites["blank"] = Sprite.new(@viewport1)
  2827. @sprites["blank"].bitmap = Bitmap.new(Graphics.width,VIEWPORT_HEIGHT)
  2828. @sprites["blank"].bitmap.fill_rect(0,0,Graphics.width,VIEWPORT_HEIGHT,Color.new(0,0,0))
  2829. @sprites["blank"].z = 9999
  2830. @sprites["blank"].opacity = 0
  2831. end
  2832.  
  2833. def updatePanorama
  2834. for i in 0...@pframe.length
  2835. @pframe[i]+=1
  2836. end
  2837. @sprites["grass"].ox-=4
  2838. @sprites["trees1"].ox-=1
  2839. @sprites["trees2"].ox-=1 if @pframe[0]>1
  2840. @sprites["trees3"].ox-=1 if @pframe[1]>2
  2841. @sprites["clouds"].ox+=1 if @pframe[2]>3
  2842. @sprites["credits"].y -= 1+(1-@cpeed) if @pframe[3]>@cpeed
  2843.  
  2844. @sprites["trainer"].src_rect.x += @sprites["trainer"].src_rect.width if @pframe[4]>@speed
  2845. @sprites["trainer"].src_rect.x = 0 if @sprites["trainer"].src_rect.x >= @sprites["trainer"].bitmap.width
  2846. if Input.press?(Input::LEFT)
  2847. @speed = 2
  2848. @sprites["trainer"].x -= 1 if @sprites["trainer"].x > Graphics.width*0.25
  2849. else
  2850. @speed = 3
  2851. @sprites["trainer"].x += 1 if @sprites["trainer"].x < Graphics.width*0.75 && @pframe[3]>1
  2852. end
  2853.  
  2854. @pframe[0]=0 if @pframe[0]>1
  2855. @pframe[1]=0 if @pframe[1]>2
  2856. @pframe[2]=0 if @pframe[2]>3
  2857. @pframe[3]=0 if @pframe[3]>@cpeed
  2858. @pframe[4]=0 if @pframe[4]>@speed
  2859. end
  2860.  
  2861. def compileLogo
  2862. @sprites["logo"] = Sprite.new(@viewport3)
  2863. @sprites["logo"].z = 999
  2864. @sprites["logo"].bitmap = Bitmap.new(Graphics.width,VIEWPORT_HEIGHT)
  2865. wdh = @sprites["logo"].bitmap.width
  2866. hgh = @sprites["logo"].bitmap.height
  2867. bmp = pbBitmap("Graphics/Titles/pokelogo2")
  2868. @sprites["logo"].bitmap.blt((wdh-bmp.width)/2,(hgh-bmp.height)/2,bmp,Rect.new(0,0,bmp.width,bmp.height))
  2869. bmp = pbBitmap("Graphics/Titles/pokelogo")
  2870. @sprites["logo"].bitmap.blt((wdh-bmp.width)/2,(hgh-bmp.height)/2,bmp,Rect.new(0,0,bmp.width,bmp.height))
  2871. end
  2872.  
  2873. def getTrainer(type=$Trainer.trainertype)
  2874. outfit = $Trainer ? $Trainer.outfit : 0
  2875. bitmapFileName = sprintf("Graphics/Titles/Panorama/trainer%s_%d",
  2876. getConstantName(PBTrainers,type),outfit) rescue nil
  2877. if !pbResolveBitmap(bitmapFileName)
  2878. bitmapFileName = sprintf("Graphics/Titles/Panorama/trainer%03d_%d",type,outfit)
  2879. if !pbResolveBitmap(bitmapFileName)
  2880. bitmapFileName = sprintf("Graphics/Titles/Panorama/trainer%03d",type)
  2881. end
  2882. end
  2883. return bitmapFileName
  2884. end
  2885.  
  2886. end
  2887. end
  2888. #-------------------------------------------------------------------------------
  2889. # Gen 1 intro before the Title Screen
  2890. #-------------------------------------------------------------------------------
  2891. class ClassicIntro
  2892.  
  2893. def initialize(bgm=CLASSIC_INTRO_BGM)
  2894. @viewport = Viewport.new(0,96,Graphics.width,192)
  2895. @sprites = {}
  2896. @skip = false
  2897.  
  2898. pbBGMPlay(bgm)
  2899.  
  2900. @sprites["backdrop"] = Sprite.new(@viewport)
  2901. @sprites["backdrop"].bitmap = pbBitmap("Graphics/Titles/Intro/backdrop")
  2902. @sprites["backdrop"].ox = @sprites["backdrop"].bitmap.width/2
  2903. @sprites["backdrop"].oy = @sprites["backdrop"].bitmap.height/2
  2904. @sprites["backdrop"].x = @viewport.rect.width/2
  2905. @sprites["backdrop"].y = @viewport.rect.height/2
  2906.  
  2907. @sprites["background"] = Sprite.new(@viewport)
  2908. @sprites["background"].bitmap = pbBitmap("Graphics/Titles/Intro/background")
  2909. @sprites["background"].src_rect.set(0,0,480,192)
  2910. @sprites["background"].ox = @sprites["background"].bitmap.width/6
  2911. @sprites["background"].oy = @sprites["background"].bitmap.height/2
  2912. @sprites["background"].x = @viewport.rect.width/2
  2913. @sprites["background"].y = @viewport.rect.height/2
  2914.  
  2915. for i in 0...2*3
  2916. @sprites["background"].src_rect.x = 480*(i%3)
  2917. wait(3)
  2918. end
  2919. @viewport.color = Color.new(255,255,255,0)
  2920. 5.times do
  2921. @viewport.color.alpha+=51
  2922. @sprites["backdrop"].zoom_x+=0.1
  2923. @sprites["backdrop"].zoom_y+=0.1
  2924. @sprites["background"].zoom_x+=0.1
  2925. @sprites["background"].zoom_y+=0.1
  2926. wait(1)
  2927. end
  2928. pbDisposeSpriteHash(@sprites)
  2929.  
  2930. @sprites["backdrop"] = Sprite.new(@viewport)
  2931. @sprites["backdrop"].bitmap = Bitmap.new(@viewport.rect.width,@viewport.rect.height)
  2932. @sprites["backdrop"].bitmap.fill_rect(0,0,@sprites["backdrop"].bitmap.width,@sprites["backdrop"].bitmap.height,Color.new(255,146,0))
  2933.  
  2934. @sprites["panorama"] = AnimatedPlane.new(@viewport)
  2935. @sprites["panorama"].bitmap = pbBitmap("Graphics/Titles/Intro/panorama2")
  2936.  
  2937. @sprites["grass1"] = AnimatedPlane.new(@viewport)
  2938. @sprites["grass1"].bitmap = pbBitmap("Graphics/Titles/Intro/grass")
  2939. @sprites["grass1"].z = 9
  2940.  
  2941. @sprites["pokemon1"] = Sprite.new(@viewport)
  2942. @sprites["pokemon1"].bitmap = pbBitmap("Graphics/Titles/Intro/pokemon1")
  2943. width1 = @sprites["pokemon1"].bitmap.width/6
  2944. @sprites["pokemon1"].ox = @sprites["pokemon1"].bitmap.width/12
  2945. @sprites["pokemon1"].oy = @sprites["pokemon1"].bitmap.height
  2946. @sprites["pokemon1"].x = @viewport.rect.width*(1.0/3) - 32
  2947. @sprites["pokemon1"].y = @viewport.rect.height
  2948. @sprites["pokemon1"].src_rect.set(0,0,width1,@sprites["pokemon1"].bitmap.height)
  2949. @sprites["pokemon1"].z = 2
  2950.  
  2951. @sprites["pokemon2"] = Sprite.new(@viewport)
  2952. @sprites["pokemon2"].bitmap = pbBitmap("Graphics/Titles/Intro/pokemon2")
  2953. width2 = @sprites["pokemon2"].bitmap.width/7
  2954. @sprites["pokemon2"].ox = @sprites["pokemon2"].bitmap.width/14
  2955. @sprites["pokemon2"].oy = @sprites["pokemon2"].bitmap.height
  2956. @sprites["pokemon2"].x = @viewport.rect.width*(2.0/3) + 32
  2957. @sprites["pokemon2"].y = @viewport.rect.height
  2958. @sprites["pokemon2"].src_rect.set(0,0,width2,@sprites["pokemon2"].bitmap.height)
  2959.  
  2960. @sprites["grass2"] = Sprite.new(@viewport)
  2961. @sprites["grass2"].bitmap = pbBitmap("Graphics/Titles/Intro/grass2")
  2962. @sprites["grass2"].z = 10
  2963. @sprites["grass2"].oy = @sprites["grass2"].bitmap.height
  2964. @sprites["grass2"].y = @viewport.rect.height
  2965. @sprites["grass2"].x = @viewport.rect.width*1.5
  2966.  
  2967. 48.times do
  2968. @viewport.color.alpha-=51 if @viewport.color.alpha > 0
  2969. @sprites["panorama"].ox-=2
  2970. @sprites["grass1"].ox+=2
  2971. wait(1)
  2972. end
  2973. @sprites["panorama"].visible = false
  2974. @sprites["grass1"].visible = false
  2975. @sprites["pokemon1"].src_rect.x = width1*5
  2976. @sprites["pokemon1"].y+=20
  2977. @sprites["pokemon2"].src_rect.x = width2*6
  2978. @sprites["pokemon2"].x = @viewport.rect.width - @sprites["pokemon2"].ox
  2979. for i in 0...48
  2980. @sprites["pokemon1"].y-=1 if i%4==0
  2981. @sprites["pokemon2"].y+=1 if i%4==0
  2982. wait(1)
  2983. end
  2984. @sprites["panorama"].visible = true
  2985. @sprites["panorama"].bitmap = pbBitmap("Graphics/Titles/Intro/panorama1")
  2986. @sprites["pokemon1"].src_rect.x = width1*1
  2987. @sprites["pokemon1"].x = @viewport.rect.width + 92
  2988. @sprites["pokemon2"].src_rect.x = width2*1
  2989. @sprites["pokemon2"].x = -110
  2990. 32.times do
  2991. @sprites["panorama"].ox-=8
  2992. @sprites["pokemon1"].x-=14
  2993. @sprites["pokemon2"].x+=16
  2994. @sprites["grass2"].x-=22
  2995. wait(1)
  2996. end
  2997. @sprites["pokemon1"].src_rect.x = width1*2
  2998. 16.times do
  2999. @sprites["panorama"].ox-=2
  3000. @sprites["grass2"].x-=6
  3001. wait(1)
  3002. end
  3003. @sprites["pokemon1"].src_rect.x = width1*1
  3004. @sprites["pokemon2"].src_rect.x = width2*2
  3005. @sprites["pokemon2"].y+=4
  3006. 4.times do
  3007. @sprites["panorama"].ox-=2
  3008. @sprites["grass2"].x-=6
  3009. wait(1)
  3010. end
  3011. @sprites["pokemon2"].src_rect.x = width2*3
  3012. pbPlayCry(PBSpecies::NIDORINO) if !@skip
  3013. u = false
  3014. for i in 0...32
  3015. u = !u if i%4==0
  3016. @sprites["pokemon1"].src_rect.x = width1*2 if i==23
  3017. @sprites["pokemon2"].y = @viewport.rect.height + 4*(u ? 1 : 0)
  3018. @sprites["panorama"].ox-=1
  3019. @sprites["grass2"].x-=6
  3020. wait(1)
  3021. end
  3022. @sprites["pokemon1"].src_rect.x = width1*1
  3023. @sprites["pokemon2"].src_rect.x = width2*1
  3024. @sprites["pokemon2"].y+=4
  3025. 22.times do
  3026. @sprites["panorama"].ox-=1
  3027. wait(1)
  3028. end
  3029. @sprites["pokemon1"].src_rect.x = width1*3
  3030. 8.times do
  3031. @sprites["pokemon1"].x-=4
  3032. @sprites["panorama"].ox-=1
  3033. wait(1)
  3034. end
  3035. 4.times do
  3036. @sprites["panorama"].ox-=1
  3037. wait(1)
  3038. end
  3039. @sprites["pokemon2"].src_rect.x = width2*2
  3040. for i in 0...12
  3041. @sprites["pokemon1"].src_rect.x = width1*4 if i==2
  3042. @sprites["pokemon2"].src_rect.x = width2*4 if i==2
  3043. @sprites["pokemon1"].x+=10
  3044. @sprites["pokemon2"].x+=6
  3045. if i >= 6
  3046. @sprites["pokemon2"].y+=4
  3047. else
  3048. @sprites["pokemon2"].y-=4
  3049. end
  3050. @sprites["panorama"].ox-=1
  3051. wait(1)
  3052. end
  3053. @sprites["pokemon1"].x-=64
  3054. @sprites["pokemon1"].src_rect.x = width1*1
  3055. @sprites["pokemon2"].src_rect.x = width2*2
  3056. for i in 0...8
  3057. @sprites["pokemon2"].src_rect.x = width2*1 if i==2
  3058. @sprites["pokemon2"].x+=2
  3059. @sprites["panorama"].ox-=1
  3060. wait(1)
  3061. end
  3062. 4.times do
  3063. @sprites["panorama"].ox-=1
  3064. @sprites["grass2"].x-=6
  3065. wait(1)
  3066. end
  3067. @sprites["pokemon2"].src_rect.x = width2*2
  3068. for i in 0...12
  3069. @sprites["pokemon2"].src_rect.x = width2*4 if i==2
  3070. @sprites["pokemon2"].x-=8
  3071. if i >= 6
  3072. @sprites["pokemon2"].y+=4
  3073. else
  3074. @sprites["pokemon2"].y-=4
  3075. end
  3076. @sprites["panorama"].ox-=1
  3077. wait(1)
  3078. end
  3079. @sprites["pokemon2"].src_rect.x = width2*1
  3080. 12.times do
  3081. @sprites["panorama"].ox-=1
  3082. wait(1)
  3083. end
  3084. @sprites["pokemon2"].src_rect.x = width2*2
  3085. for i in 0...12
  3086. if i < 8
  3087. @sprites["pokemon2"].src_rect.x = width2*4 if i==2
  3088. @sprites["pokemon2"].x+=4
  3089. if i >= 4
  3090. @sprites["pokemon2"].y+=2
  3091. else
  3092. @sprites["pokemon2"].y-=2
  3093. end
  3094. elsif i==8
  3095. @sprites["pokemon2"].src_rect.x = width2*2
  3096. end
  3097. @sprites["panorama"].ox-=1
  3098. wait(1)
  3099. end
  3100. for i in 0...32
  3101. if i < 8
  3102. @sprites["pokemon2"].src_rect.x = width2*4 if i==2
  3103. @sprites["pokemon2"].x+=4
  3104. if i >= 4
  3105. @sprites["pokemon2"].y+=2
  3106. else
  3107. @sprites["pokemon2"].y-=2
  3108. end
  3109. elsif i==8
  3110. @sprites["pokemon2"].src_rect.x = width2*2
  3111. end
  3112. @sprites["panorama"].ox-=1
  3113. wait(1)
  3114. end
  3115. u = false
  3116. for i in 0...16
  3117. u = !u if i%4==0
  3118. @sprites["pokemon2"].x+=1*(u ? -1 : 1)
  3119. @sprites["panorama"].ox-=1
  3120. wait(1)
  3121. end
  3122. 16.times do
  3123. @sprites["panorama"].ox-=1
  3124. wait(1)
  3125. end
  3126. @sprites["pokemon2"].src_rect.x = width2*5
  3127. @sprites["pokemon2"].y+=32
  3128. x = @sprites["pokemon2"].x
  3129. y = @sprites["pokemon2"].y
  3130. for i in 0...68
  3131. x -= (@sprites["pokemon2"].x - (@viewport.rect.width/2 + 40))*0.04
  3132. y -= (@sprites["pokemon2"].y - (@viewport.rect.height - 30))*0.04
  3133. if i >= 32
  3134. @sprites["panorama"].tone.red+=12.8
  3135. @sprites["panorama"].tone.green+=12.8
  3136. @sprites["panorama"].tone.blue+=12.8
  3137. end
  3138. @sprites["pokemon2"].zoom_x+=0.002
  3139. @sprites["pokemon2"].zoom_y+=0.002
  3140. @sprites["pokemon2"].x = x
  3141. @sprites["pokemon2"].y = y
  3142. @sprites["panorama"].ox-=1
  3143. wait(1)
  3144. end
  3145. overlay = Sprite.new(@viewport)
  3146. overlay.z = 99999
  3147. overlay.snapScreen
  3148. overlay.ox = overlay.src_rect.width/2
  3149. overlay.oy = overlay.src_rect.height/2
  3150. overlay.x = @viewport.rect.width/2
  3151. overlay.y = @viewport.rect.height/2
  3152.  
  3153. @viewport.color = Color.new(0,0,0,0)
  3154. for i in 0...18
  3155. overlay.zoom_x+=0.1
  3156. overlay.zoom_y+=0.1
  3157. if i >= 8
  3158. @viewport.color.alpha+=25.5
  3159. end
  3160. wait(1)
  3161. end
  3162. @viewport.color = Color.new(0,0,0,255)
  3163. wait(32)
  3164. if @skip
  3165. pbBGMFade(0)
  3166. else
  3167. pbBGMFade(0.5)
  3168. end
  3169. Graphics.update
  3170. overlay.dispose
  3171. self.dispose
  3172. end
  3173.  
  3174. def dispose
  3175. pbDisposeSpriteHash(@sprites)
  3176. if @viewport.is_a?(Hash)
  3177. pbDisposeSpriteHash(@viewport)
  3178. else
  3179. @viewport.dispose
  3180. end
  3181. end
  3182.  
  3183. def wait(frames)
  3184. return false if @skip
  3185. frames.times do
  3186. Graphics.update
  3187. Input.update
  3188. @skip=true if Input.trigger?(Input::C)
  3189. end
  3190. return true
  3191. end
  3192.  
  3193. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement