Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $gtk.reset
- $gtk.scheduled_callbacks.clear
- def initialise args
- # star grid resolution
- args.state.sector_width ||= 10
- args.state.sector_height ||= 10
- args.state.n_sectors_x ||= (1280 / args.state.sector_width).ceil
- args.state.n_sectors_y ||= (720 / args.state.sector_height).ceil
- true
- end
- class Sprite
- attr_sprite
- def initialize(x, y, w, h)
- self.x = x
- self.y = y
- self.w = w
- self.h = h
- self.path = 'star.png'
- end
- end
- def tick args
- # initialisation
- args.state.initialised ||= initialise args
- # space
- args.outputs.solids << { x: 0, y: 0, w: 1280, h: 720, r: 32, g: 32, b: 32 }
- # frame rate
- args.outputs.labels << { x: 1270, y: 710, text: "%d" % args.gtk.current_framerate, alignment_enum: 2, r: 255, g: 255, b: 255 }
- # star parameters
- star_diameter = 4
- star_radius = (star_diameter / 2).to_i
- # # Predefined elements
- # args.state.stars ||= (0 .. args.state.n_sectors_y).map do |y|
- # (0 .. args.state.n_sectors_x).map do |x|
- # xpos = (x + 1) * args.state.sector_width - star_radius
- # ypos = (y + 1) * args.state.sector_height - star_radius
- # # { x: xpos, y: ypos, w: star_diameter, h: star_diameter, path: 'star.png' }
- # # [xpos, ypos, star_diameter, star_diameter, 'star.png']
- # Sprite.new(xpos, ypos, star_diameter, star_diameter)
- # end
- # end
- # args.outputs.sprites << args.state.stars
- # sector loop
- args.outputs.sprites << (0 .. args.state.n_sectors_y).map do |y|
- (0 .. args.state.n_sectors_x).map do |x|
- xpos = (x + 1) * args.state.sector_width - star_radius
- ypos = (y + 1) * args.state.sector_height - star_radius
- # { x: xpos, y: ypos, w: star_diameter, h: star_diameter, path: 'star.png' }
- # [xpos, ypos, star_diameter, star_diameter, 'star.png']
- Sprite.new(xpos, ypos, star_diameter, star_diameter)
- end
- end
- args.outputs.labels << { x: 1270, y: 680, text: "%d" % args.outputs.sprites.size, alignment_enum: 2, r: 255, g: 255, b: 255 }
- end
Advertisement
Add Comment
Please, Sign In to add comment