Diego-Mertens

nada pues

May 27th, 2019
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.95 KB | None | 0 0
  1. class PokemonLoadPanel < SpriteWrapper
  2. attr_reader :selected
  3.  
  4. def initialize(index,title,isContinue,trainer,framecount,mapid,viewport=nil)
  5. super(viewport)
  6. @index = index
  7. @title = title
  8. @isContinue = isContinue
  9. @trainer = trainer
  10. @totalsec = (framecount || 0)/Graphics.frame_rate
  11. @mapid = mapid
  12. @selected = (index==0)
  13. @bgbitmap = AnimatedBitmap.new("Graphics/Pictures/loadPanels")
  14. @refreshBitmap = true
  15. @refreshing = false
  16. refresh
  17. end
  18.  
  19. def dispose
  20. @bgbitmap.dispose
  21. self.bitmap.dispose
  22. super
  23. end
  24.  
  25. def selected=(value)
  26. if @selected!=value
  27. @selected = value
  28. @refreshBitmap = true
  29. refresh
  30. end
  31. end
  32.  
  33. def pbRefresh
  34. @refreshBitmap = true
  35. refresh
  36. end
  37.  
  38. def refresh
  39. return if @refreshing
  40. return if disposed?
  41. @refreshing = true
  42. if !self.bitmap || self.bitmap.disposed?
  43. self.bitmap = BitmapWrapper.new(@bgbitmap.width,111*2)
  44. pbSetSystemFont(self.bitmap)
  45. end
  46. if @refreshBitmap
  47. @refreshBitmap = false
  48. self.bitmap.clear if self.bitmap
  49. if @isContinue
  50. self.bitmap.blt(0,0,@bgbitmap.bitmap,Rect.new(0,(@selected) ? 111*2 : 0,@bgbitmap.width,111*2))
  51. else
  52. self.bitmap.blt(0,0,@bgbitmap.bitmap,Rect.new(0,111*2*2+((@selected) ? 23*2 : 0),@bgbitmap.width,23*2))
  53. end
  54. textpos = []
  55. if @isContinue
  56. textpos.push([@title,16*2,5*2,0,Color.new(232,232,232),Color.new(136,136,136)])
  57. textpos.push([_INTL("Badges:"),16*2,56*2,0,Color.new(232,232,232),Color.new(136,136,136)])
  58. textpos.push([@trainer.numbadges.to_s,103*2,56*2,1,Color.new(232,232,232),Color.new(136,136,136)])
  59. textpos.push([_INTL("Pokédex:"),16*2,72*2,0,Color.new(232,232,232),Color.new(136,136,136)])
  60. textpos.push([@trainer.pokedexSeen.to_s,103*2,72*2,1,Color.new(232,232,232),Color.new(136,136,136)])
  61. textpos.push([_INTL("Time:"),16*2,88*2,0,Color.new(232,232,232),Color.new(136,136,136)])
  62. hour = @totalsec / 60 / 60
  63. min = @totalsec / 60 % 60
  64. if hour>0
  65. textpos.push([_INTL("{1}h {2}m",hour,min),103*2,88*2,1,Color.new(232,232,232),Color.new(136,136,136)])
  66. else
  67. textpos.push([_INTL("{1}m",min),103*2,88*2,1,Color.new(232,232,232),Color.new(136,136,136)])
  68. end
  69. if @trainer.isMale?
  70. textpos.push([@trainer.name,56*2,32*2,0,Color.new(56,160,248),Color.new(56,104,168)])
  71. else
  72. textpos.push([@trainer.name,56*2,32*2,0,Color.new(240,72,88),Color.new(160,64,64)])
  73. end
  74. mapname = pbGetMapNameFromId(@mapid)
  75. mapname.gsub!(/\\PN/,@trainer.name)
  76. textpos.push([mapname,193*2,5*2,1,Color.new(232,232,232),Color.new(136,136,136)])
  77. else
  78. textpos.push([@title,16*2,4*2,0,Color.new(232,232,232),Color.new(136,136,136)])
  79. end
  80. pbDrawTextPositions(self.bitmap,textpos)
  81. end
  82. @refreshing = false
  83. end
  84. end
  85.  
  86.  
  87.  
  88. class PokemonLoadScene
  89. def pbUpdate
  90. oldi = @sprites["cmdwindow"].index rescue 0
  91. pbUpdateSpriteHash(@sprites)
  92. newi = @sprites["cmdwindow"].index rescue 0
  93. if oldi!=newi
  94. @sprites["panel#{oldi}"].selected = false
  95. @sprites["panel#{oldi}"].pbRefresh
  96. @sprites["panel#{newi}"].selected = true
  97. @sprites["panel#{newi}"].pbRefresh
  98. while @sprites["panel#{newi}"].y>Graphics.height-16*2-23*2-1*2
  99. @sprites["panel#{i}"].y -= 23*2+1*2
  100. end
  101. for i in 0...6
  102. break if !@sprites["party#{i}"]
  103. @sprites["party#{i}"].y -= 23*2+1*2
  104. end
  105. @sprites["player"].y -= 23*2+1*2 if @sprites["player"]
  106. @sprites["printscreen"].y -= 23*2+1*2 if @sprites["printscreen"]
  107. end
  108. while @sprites["panel#{newi}"].y<16*2
  109. @sprites["panel#{i}"].y += 23*2+1*2
  110. end
  111. for i in 0...6
  112. break if !@sprites["party#{i}"]
  113. @sprites["party#{i}"].y += 23*2+1*2
  114. end
  115. @sprites["player"].y += 23*2+1*2 if @sprites["player"]
  116. @sprites["printscreen"].y += 23*2+1*2 if @sprites["printscreen"]
  117. end
  118. end
  119. end
  120.  
  121. def pbStartScene(commands,showContinue,trainer,framecount,mapid)
  122. @commands = commands
  123. @sprites = {}
  124. @viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
  125. @viewport.z = 99998
  126. addBackgroundOrColoredPlane(@sprites,"background","loadbg",Color.new(248,248,248),@viewport)
  127. y = 16*2
  128. for i in 0...commands.length
  129. @sprites["panel#{i}"] = PokemonLoadPanel.new(i,commands[i],
  130. (showContinue) ? (i==0) : false,trainer,framecount,mapid,@viewport)
  131. @sprites["panel#{i}"].x = 24*2
  132. @sprites["panel#{i}"].y = y
  133. @sprites["panel#{i}"].pbRefresh
  134. y += (showContinue && i==0) ? 111*2+1*2 : 23*2+1*2
  135. end
  136. @sprites["cmdwindow"] = Window_CommandPokemon.new([])
  137. @sprites["cmdwindow"].viewport = @viewport
  138. @sprites["cmdwindow"].visible = false
  139. end
  140.  
  141. def pbStartScene2
  142. pbFadeInAndShow(@sprites) { pbUpdate }
  143. end
  144.  
  145. def pbStartDeleteScene
  146. @sprites = {}
  147. @viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
  148. @viewport.z = 99998
  149. addBackgroundOrColoredPlane(@sprites,"background","loadbg",Color.new(248,248,248),@viewport)
  150. end
  151.  
  152. def pbSetParty(trainer)
  153. return if !trainer || !trainer.party
  154. meta = pbGetMetadata(0,MetadataPlayerA+trainer.metaID)
  155. if meta
  156. filename = pbGetPlayerCharset(meta,1,trainer)
  157. @sprites["player"] = TrainerWalkingCharSprite.new(filename,@viewport)
  158. charwidth = @sprites["player"].bitmap.width
  159. charheight = @sprites["player"].bitmap.height
  160. @sprites["player"].x = 56*2-charwidth/8
  161. @sprites["player"].y = 56*2-charheight/8
  162. @sprites["player"].src_rect = Rect.new(0,0,charwidth/4,charheight/4)
  163. end
  164.  
  165. for i in 0...trainer.party.length
  166. @sprites["party#{i}"] = PokemonIconSprite.new(trainer.party[i],@viewport)
  167. @sprites["party#{i}"].x = 151*2+33*2*(i&1)
  168. @sprites["party#{i}"].y = 36*2+25*2*(i/2)
  169. @sprites["party#{i}"].z = 99999
  170. end
  171. @sprites["printscreen"]=IconSprite.new(150,150,@viewport)
  172. @sprites["printscreen"].setBitmap("save_big") if FileTest.exist?("save_big.png")
  173. @sprites["printscreen"].setBitmap("save_small") if FileTest.exist?("save_small.png")
  174. @sprites["printscreen"].z = 99999 + 1
  175.  
  176. end
  177.  
  178. def pbChoose(commands)
  179. @sprites["cmdwindow"].commands = commands
  180. loop do
  181. Graphics.update
  182. Input.update
  183. pbUpdate
  184. if Input.trigger?(Input::C)
  185. return @sprites["cmdwindow"].index
  186. end
  187. end
  188. end
  189.  
  190. def pbEndScene
  191. pbFadeOutAndHide(@sprites) { pbUpdate }
  192. pbDisposeSpriteHash(@sprites)
  193. @viewport.dispose
  194. end
  195.  
  196. def pbCloseScene
  197. pbDisposeSpriteHash(@sprites)
  198. @viewport.dispose
  199. end
  200. end
  201.  
  202.  
  203.  
  204. class PokemonLoad
  205. def initialize(scene)
  206. @scene = scene
  207. end
  208.  
  209. def pbTryLoadFile(savefile)
  210. trainer = nil
  211. framecount = nil
  212. game_system = nil
  213. pokemonSystem = nil
  214. mapid = nil
  215. File.open(savefile){|f|
  216. trainer = Marshal.load(f)
  217. framecount = Marshal.load(f)
  218. game_system = Marshal.load(f)
  219. pokemonSystem = Marshal.load(f)
  220. mapid = Marshal.load(f)
  221. }
  222. raise "Corrupted file" if !trainer.is_a?(PokeBattle_Trainer)
  223. raise "Corrupted file" if !framecount.is_a?(Numeric)
  224. raise "Corrupted file" if !game_system.is_a?(Game_System)
  225. raise "Corrupted file" if !pokemonSystem.is_a?(PokemonSystem)
  226. raise "Corrupted file" if !mapid.is_a?(Numeric)
  227. return [trainer,framecount,game_system,pokemonSystem,mapid]
  228. end
  229.  
  230. def pbStartDeleteScreen
  231. savefile = RTP.getSaveFileName("Game.rxdata")
  232. @scene.pbStartDeleteScene
  233. @scene.pbStartScene2
  234. if safeExists?(savefile)
  235. if Kernel.pbConfirmMessageSerious(_INTL("Delete all saved data?"))
  236. Kernel.pbMessage(_INTL("Once data has been deleted, there is no way to recover it.\1"))
  237. if Kernel.pbConfirmMessageSerious(_INTL("Delete the saved data anyway?"))
  238. Kernel.pbMessage(_INTL("Deleting all data.\r\nDon't turn off the power.\\wtnp[0]"))
  239. begin; File.delete(savefile); rescue; end
  240. begin; File.delete(savefile+".bak"); rescue; end
  241. Kernel.pbMessage(_INTL("The save file was deleted."))
  242. end
  243. end
  244. else
  245. Kernel.pbMessage(_INTL("No save file was found."))
  246. end
  247. @scene.pbEndScene
  248. $scene = pbCallTitle
  249. end
  250.  
  251. def pbStartLoadScreen
  252. $PokemonTemp = PokemonTemp.new
  253. $game_temp = Game_Temp.new
  254. $game_system = Game_System.new
  255. $PokemonSystem = PokemonSystem.new if !$PokemonSystem
  256. savefile = RTP.getSaveFileName("Game.rxdata")
  257. FontInstaller.install
  258. data_system = pbLoadRxData("Data/System")
  259. mapfile = ($RPGVX) ? sprintf("Data/Map%03d.rvdata",data_system.start_map_id) :
  260. sprintf("Data/Map%03d.rxdata",data_system.start_map_id)
  261. if data_system.start_map_id==0 || !pbRgssExists?(mapfile)
  262. Kernel.pbMessage(_INTL("No starting position was set in the map editor.\1"))
  263. Kernel.pbMessage(_INTL("The game cannot continue."))
  264. @scene.pbEndScene
  265. $scene = nil
  266. return
  267. end
  268. commands = []
  269. cmdContinue = -1
  270. cmdNewGame = -1
  271. cmdOption = -1
  272. cmdLanguage = -1
  273. cmdMysteryGift = -1
  274. cmdDebug = -1
  275. cmdQuit = -1
  276. if safeExists?(savefile)
  277. trainer = nil
  278. framecount = 0
  279. mapid = 0
  280. haveBackup = false
  281. showContinue = false
  282. begin
  283. trainer, framecount, $game_system, $PokemonSystem, mapid = pbTryLoadFile(savefile)
  284. showContinue = true
  285. rescue
  286. if safeExists?(savefile+".bak")
  287. begin
  288. trainer, framecount, $game_system, $PokemonSystem, mapid = pbTryLoadFile(savefile+".bak")
  289. haveBackup = true
  290. showContinue = true
  291. rescue
  292. end
  293. end
  294. if haveBackup
  295. Kernel.pbMessage(_INTL("The save file is corrupt. The previous save file will be loaded."))
  296. else
  297. Kernel.pbMessage(_INTL("The save file is corrupt, or is incompatible with this game."))
  298. if !Kernel.pbConfirmMessageSerious(_INTL("Do you want to delete the save file and start anew?"))
  299. $scene = nil
  300. return
  301. end
  302. begin; File.delete(savefile); rescue; end
  303. begin; File.delete(savefile+".bak"); rescue; end
  304. $game_system = Game_System.new
  305. $PokemonSystem = PokemonSystem.new if !$PokemonSystem
  306. Kernel.pbMessage(_INTL("The save file was deleted."))
  307. end
  308. end
  309. if showContinue
  310. if !haveBackup
  311. begin; File.delete(savefile+".bak"); rescue; end
  312. end
  313. end
  314. commands[cmdContinue = commands.length] = _INTL("Continue") if showContinue
  315. commands[cmdNewGame = commands.length] = _INTL("New Game")
  316. commands[cmdMysteryGift = commands.length] = _INTL("Mystery Gift") if (trainer.mysterygiftaccess rescue false)
  317. else
  318. commands[cmdNewGame = commands.length] = _INTL("New Game")
  319. end
  320. commands[cmdOption = commands.length] = _INTL("Options")
  321. commands[cmdLanguage = commands.length] = _INTL("Language") if LANGUAGES.length>=2
  322. commands[cmdDebug = commands.length] = _INTL("Debug") if $DEBUG
  323. commands[cmdQuit = commands.length] = _INTL("Quit Game")
  324. @scene.pbStartScene(commands,showContinue,trainer,framecount,mapid)
  325. @scene.pbSetParty(trainer) if showContinue
  326. @scene.pbStartScene2
  327. $ItemData = readItemList("Data/items.dat")
  328. loop do
  329. command = @scene.pbChoose(commands)
  330. if cmdContinue>=0 && command==cmdContinue
  331. unless safeExists?(savefile)
  332. pbPlayBuzzerSE
  333. next
  334. end
  335. @scene.pbEndScene
  336. metadata = nil
  337. File.open(savefile){|f|
  338. Marshal.load(f) # Trainer already loaded
  339. $Trainer = trainer
  340. Graphics.frame_count = Marshal.load(f)
  341. $game_system = Marshal.load(f)
  342. Marshal.load(f) # PokemonSystem already loaded
  343. Marshal.load(f) # Current map id no longer needed
  344. $game_switches = Marshal.load(f)
  345. $game_variables = Marshal.load(f)
  346. $game_self_switches = Marshal.load(f)
  347. $game_screen = Marshal.load(f)
  348. $MapFactory = Marshal.load(f)
  349. $game_map = $MapFactory.map
  350. $game_player = Marshal.load(f)
  351. $PokemonGlobal = Marshal.load(f)
  352. metadata = Marshal.load(f)
  353. $PokemonBag = Marshal.load(f)
  354. $PokemonStorage = Marshal.load(f)
  355. oldpattern = $game_player.fullPattern
  356. magicNumberMatches = false
  357. if $data_system.respond_to?("magic_number")
  358. magicNumberMatches = ($game_system.magic_number==$data_system.magic_number)
  359. else
  360. magicNumberMatches = ($game_system.magic_number==$data_system.version_id)
  361. end
  362. if !magicNumberMatches || $PokemonGlobal.safesave
  363. if pbMapInterpreterRunning?
  364. pbMapInterpreter.setup(nil,0)
  365. end
  366. begin
  367. $MapFactory.setup($game_map.map_id) # calls setMapChanged
  368. rescue Errno::ENOENT
  369. if $DEBUG
  370. Kernel.pbMessage(_INTL("Map {1} was not found.",$game_map.map_id))
  371. map = pbWarpToMap
  372. if map
  373. $MapFactory.setup(map[0])
  374. $game_player.moveto(map[1],map[2])
  375. else
  376. $game_map = nil
  377. $scene = nil
  378. return
  379. end
  380. else
  381. $game_map = nil
  382. $scene = nil
  383. Kernel.pbMessage(_INTL("The map was not found. The game cannot continue."))
  384. end
  385. end
  386. $game_player.setDefaultCharName(nil,oldpattern)
  387. $game_player.center($game_player.x, $game_player.y)
  388. else
  389. $game_player.setDefaultCharName(nil,oldpattern)
  390. $MapFactory.setMapChanged($game_map.map_id)
  391. end
  392. }
  393. if !$game_map.events # Map wasn't set up
  394. $game_map = nil
  395. $scene = nil
  396. Kernel.pbMessage(_INTL("The map is corrupt. The game cannot continue."))
  397. return
  398. end
  399. $PokemonMap = metadata
  400. $PokemonEncounters = PokemonEncounters.new
  401. $PokemonEncounters.setup($game_map.map_id)
  402. pbAutoplayOnSave
  403. $game_map.update
  404. $PokemonMap.updateMap
  405. $scene = Scene_Map.new
  406. return
  407. elsif cmdNewGame>=0 && command==cmdNewGame
  408. @scene.pbEndScene
  409. if $game_map && $game_map.events
  410. for event in $game_map.events.values
  411. event.clear_starting
  412. end
  413. end
  414. $game_temp.common_event_id = 0 if $game_temp
  415. $scene = Scene_Map.new
  416. Graphics.frame_count = 0
  417. $game_system = Game_System.new
  418. $game_switches = Game_Switches.new
  419. $game_variables = Game_Variables.new
  420. $game_self_switches = Game_SelfSwitches.new
  421. $game_screen = Game_Screen.new
  422. $game_player = Game_Player.new
  423. $PokemonMap = PokemonMapMetadata.new
  424. $PokemonGlobal = PokemonGlobalMetadata.new
  425. $PokemonStorage = PokemonStorage.new
  426. $PokemonEncounters = PokemonEncounters.new
  427. $PokemonTemp.begunNewGame = true
  428. $data_system = pbLoadRxData("Data/System")
  429. $MapFactory = PokemonMapFactory.new($data_system.start_map_id) # calls setMapChanged
  430. $game_player.moveto($data_system.start_x, $data_system.start_y)
  431. $game_player.refresh
  432. $game_map.autoplay
  433. $game_map.update
  434. return
  435. elsif cmdMysteryGift>=0 && command==cmdMysteryGift
  436. pbFadeOutIn(99999){
  437. trainer = pbDownloadMysteryGift(trainer)
  438. }
  439. elsif cmdOption>=0 && command==cmdOption
  440. pbFadeOutIn(99999){
  441. scene = PokemonOption_Scene.new
  442. screen = PokemonOptionScreen.new(scene)
  443. screen.pbStartScreen(true)
  444. }
  445. elsif cmdLanguage>=0 && command==cmdLanguage
  446. @scene.pbEndScene
  447. $PokemonSystem.language = pbChooseLanguage
  448. pbLoadMessages("Data/"+LANGUAGES[$PokemonSystem.language][1])
  449. savedata = []
  450. if safeExists?(savefile)
  451. File.open(savefile,"rb"){|f|
  452. 15.times { savedata.push(Marshal.load(f)) }
  453. }
  454. savedata[3]=$PokemonSystem
  455. begin
  456. File.open(RTP.getSaveFileName("Game.rxdata"),"wb"){|f|
  457. 15.times {|i| Marshal.dump(savedata[i],f) }
  458. }
  459. rescue
  460. end
  461. end
  462. $scene = pbCallTitle
  463. return
  464. elsif cmdDebug>=0 && command==cmdDebug
  465. pbFadeOutIn(99999){ pbDebugMenu(false) }
  466. elsif cmdQuit>=0 && command==cmdQuit
  467. @scene.pbEndScene
  468. $scene = nil
  469. return
  470. end
  471. end
  472. @scene.pbEndScene
  473. return
  474. end
  475. end
  476.  
  477.  
  478.  
  479. ################################################################################
  480. # Font installer
  481. ################################################################################
  482. module FontInstaller
  483. # filenames of fonts to be installed
  484. Filenames = [
  485. 'pkmnem.ttf',
  486. 'pkmnemn.ttf',
  487. 'pkmnems.ttf',
  488. 'pkmnrs.ttf',
  489. 'pkmndp.ttf',
  490. #'pkmnfl.ttf'
  491. 'pkmnfl.ttf',
  492. 'pkmnbw.ttf'
  493. ]
  494. # names (not filenames) of fonts to be installed
  495. Names = [
  496. 'Power Green',
  497. 'Power Green Narrow',
  498. 'Power Green Small',
  499. 'Power Red and Blue',
  500. 'Power Clear',
  501. #'Power Red and Green'
  502. 'Power Red and Green',
  503. 'Pokemon B/W'
  504. ]
  505. # whether to notify player (via pop-up message) that fonts were installed
  506. Notify = true
  507. # location of fonts (relative to game folder)
  508. Source = 'Fonts/'
  509.  
  510. def self.getFontFolder
  511. fontfolder = MiniRegistry.get(MiniRegistry::HKEY_CURRENT_USER,
  512. "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders","Fonts")
  513. return fontfolder+"\\" if fontfolder
  514. if ENV['SystemRoot']
  515. return ENV['SystemRoot'] + '\\Fonts\\'
  516. elsif ENV['windir']
  517. return ENV['windir'] + '\\Fonts\\'
  518. else
  519. return '\\Windows\\Fonts\\'
  520. end
  521. end
  522.  
  523. AFR = Win32API.new('gdi32', 'AddFontResource', ['P'], 'L')
  524. WPS = Win32API.new('kernel32', 'WriteProfileString', ['P'] * 3, 'L')
  525. SM = Win32API.new('user32', 'PostMessage', ['L'] * 4, 'L')
  526. WM_FONTCHANGE = 0x001D
  527. HWND_BROADCAST = 0xffff
  528.  
  529. def self.copy_file(src,dest)
  530. File.open(src,'rb') {|r|
  531. File.open(dest,'wb') {|w|
  532. while s = r.read(4096)
  533. w.write s
  534. end
  535. }
  536. }
  537. end
  538.  
  539. def self.pbResolveFont(name)
  540. RTP.eachPathFor(Source+name) {|file|
  541. return file if safeExists?(file)
  542. }
  543. return Source+name
  544. end
  545.  
  546. def self.install
  547. success = []
  548. # Check if all fonts already exist
  549. filesExist = true
  550. fontsExist = true
  551. dest = self.getFontFolder
  552. for i in 0...Names.size
  553. if !safeExists?(dest + Filenames[i])
  554. filesExist = false
  555. end
  556. if !Font.exist?(Names[i])
  557. fontsExist = false
  558. end
  559. end
  560. return if filesExist
  561. # Check if all source fonts exist
  562. exist = true
  563. for i in 0...Names.size
  564. if !RTP.exists?(Source + Filenames[i])
  565. exist = false
  566. break
  567. end
  568. end
  569. return if !exist # Exit if not all source fonts exist
  570. Kernel.pbMessage(_INTL("One or more fonts used in this game do not exist on the system.\1"))
  571. Kernel.pbMessage(_INTL("The game can be played, but the look of the game's text will not be optimal."))
  572. failed = false
  573. for i in 0...Filenames.size
  574. f = Filenames[i]
  575. if safeExists?(dest + f) && !Font.exist?(Names[i])
  576. File.delete(dest + f) rescue nil
  577. end
  578. # check if already installed...
  579. if not safeExists?(dest + f)
  580. # check to ensure font is in specified location...
  581. if RTP.exists?(Source + f)
  582. # copy file to fonts folder
  583. succeeded = false
  584. begin
  585. copy_file(pbResolveFont(f), dest + f)
  586. # add font resource
  587. AFR.call(dest + f)
  588. # add entry to win.ini/registry
  589. WPS.call('Fonts', Names[i] + ' (TrueType)', f)
  590. succeeded = safeExists?(dest + f)
  591. rescue SystemCallError
  592. # failed
  593. succeeded = false
  594. end
  595. if succeeded
  596. success.push(Names[i])
  597. else
  598. failed = true
  599. end
  600. end
  601. else
  602. success.push(Names[i]) # assume success
  603. end
  604. end
  605. if success.length>0 # one or more fonts successfully installed
  606. SM.call(HWND_BROADCAST,WM_FONTCHANGE,0,0)
  607. if Notify
  608. fonts = ''
  609. success.each do |f|
  610. fonts << f << ', '
  611. end
  612. if failed
  613. Kernel.pbMessage(_INTL("Some of the fonts were successfully installed.\1"))
  614. Kernel.pbMessage(_INTL("To install the other fonts, copy the files in this game's Fonts folder to the Fonts folder in Control Panel.\1"))
  615. else
  616. Kernel.pbMessage(_INTL("The fonts were successfully installed.\1"))
  617. end
  618. if Kernel.pbConfirmMessage(_INTL("Would you like to restart the game and apply the changes?"))
  619. a = Thread.new { system('Game') }
  620. exit
  621. end
  622. end
  623. else
  624. # No fonts were installed.
  625. Kernel.pbMessage(_INTL("To install the necessary fonts, copy the files in this game's Fonts folder to the Fonts folder in Control Panel."))
  626. end
  627. end
  628. end
Advertisement
Add Comment
Please, Sign In to add comment