Advertisement
Diego-Mertens

nada pues

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