Advertisement
Guest User

load

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