DerTraveler

DragonRuby performance tests

Jun 11th, 2020
1,097
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.03 KB | None | 0 0
  1. $gtk.reset
  2. $gtk.scheduled_callbacks.clear
  3.  
  4. def initialise args
  5.  
  6.   # star grid resolution
  7.   args.state.sector_width ||= 10
  8.   args.state.sector_height ||= 10
  9.  
  10.   args.state.n_sectors_x ||= (1280 / args.state.sector_width).ceil
  11.   args.state.n_sectors_y ||= (720 / args.state.sector_height).ceil
  12.  
  13.   true
  14.  
  15. end
  16.  
  17. class Sprite
  18.   attr_sprite
  19.  
  20.   def initialize(x, y, w, h)
  21.     self.x = x
  22.     self.y = y
  23.     self.w = w
  24.     self.h = h
  25.     self.path = 'star.png'
  26.   end
  27. end
  28.  
  29. def tick args
  30.  
  31.   # initialisation
  32.   args.state.initialised ||= initialise args
  33.  
  34.   # space
  35.   args.outputs.solids << { x: 0, y: 0, w: 1280, h: 720, r: 32, g: 32, b: 32 }
  36.  
  37.   # frame rate
  38.   args.outputs.labels << { x: 1270, y: 710, text: "%d" % args.gtk.current_framerate, alignment_enum: 2, r: 255, g: 255, b: 255 }
  39.  
  40.   # star parameters
  41.   star_diameter = 4
  42.   star_radius = (star_diameter / 2).to_i
  43.  
  44.   # # Predefined elements
  45.   # args.state.stars ||= (0 .. args.state.n_sectors_y).map do |y|
  46.   #   (0 .. args.state.n_sectors_x).map do |x|
  47.   #     xpos = (x + 1) * args.state.sector_width - star_radius
  48.   #     ypos = (y + 1) * args.state.sector_height - star_radius
  49.  
  50.   #     # { x: xpos, y: ypos, w: star_diameter, h: star_diameter, path: 'star.png' }
  51.   #     # [xpos, ypos, star_diameter, star_diameter, 'star.png']
  52.   #     Sprite.new(xpos, ypos, star_diameter, star_diameter)
  53.   #   end
  54.   # end
  55.  
  56.   # args.outputs.sprites << args.state.stars
  57.  
  58.   # sector loop
  59.   args.outputs.sprites << (0 .. args.state.n_sectors_y).map do |y|
  60.     (0 .. args.state.n_sectors_x).map do |x|
  61.       xpos = (x + 1) * args.state.sector_width - star_radius
  62.       ypos = (y + 1) * args.state.sector_height - star_radius
  63.  
  64.       # { x: xpos, y: ypos, w: star_diameter, h: star_diameter, path: 'star.png' }
  65.       # [xpos, ypos, star_diameter, star_diameter, 'star.png']
  66.       Sprite.new(xpos, ypos, star_diameter, star_diameter)
  67.     end
  68.   end
  69.  
  70.   args.outputs.labels << { x: 1270, y: 680, text: "%d" % args.outputs.sprites.size, alignment_enum: 2, r: 255, g: 255, b: 255 }
  71. end
Advertisement
Add Comment
Please, Sign In to add comment