Advertisement
Guest User

Untitled

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