Added overlay for future fps and stats display

This commit is contained in:
2020-05-02 17:34:19 -05:00
parent 27de5667be
commit 9593d341bf
7 changed files with 68 additions and 9 deletions

View File

@@ -106,6 +106,7 @@ require_relative "lib/scenes/turn_table"
require_relative "lib/crosshair" require_relative "lib/crosshair"
require_relative "lib/demo" require_relative "lib/demo"
require_relative "lib/overlay"
require_relative "lib/window" require_relative "lib/window"
require_relative "lib/tools/asset_viewer" require_relative "lib/tools/asset_viewer"

View File

@@ -14,7 +14,6 @@ class IMICFPS
@lights = [] @lights = []
@collision_manager = CollisionManager.new(map: self) @collision_manager = CollisionManager.new(map: self)
@renderer = window.renderer
Publisher.new Publisher.new
end end
@@ -54,7 +53,7 @@ class IMICFPS
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # clear the screen and the depth buffer glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # clear the screen and the depth buffer
gl_error? gl_error?
@renderer.draw(camera, @lights, @entities) window.renderer.draw(camera, @lights, @entities)
end end
end end

17
lib/overlay.rb Normal file
View File

@@ -0,0 +1,17 @@
class IMICFPS
class Overlay
include CommonMethods
def initialize
@text = CyberarmEngine::Text.new("")
end
def draw
Gosu.draw_rect(0, 0, 256, 20, Gosu::Color.rgba(0, 0, 0, 100))
Gosu.draw_rect(2, 2, 256 - 4, 20 - 4, Gosu::Color.rgba(100, 100, 100, 100))
@text.x = 3
@text.y = 3
@text.text = "FPS: #{Gosu.fps}"
@text.draw
end
end
end

View File

@@ -31,7 +31,6 @@ class IMICFPS
@lights << @light @lights << @light
@camera = Camera.new(position: Vector.new(0, 1.5, 5), orientation: Vector.forward) @camera = Camera.new(position: Vector.new(0, 1.5, 5), orientation: Vector.forward)
@renderer = Renderer.new
label @manifest.name, text_size: 50 label @manifest.name, text_size: 50
label @manifest.model label @manifest.model
@@ -55,7 +54,7 @@ class IMICFPS
) )
Gosu.gl do Gosu.gl do
@renderer.draw(@camera, [@light], @map.entities) window.renderer.draw(@camera, [@light], @map.entities)
end end
@crosshair.draw @crosshair.draw

View File

@@ -1,17 +1,58 @@
class IMICFPS class IMICFPS
class MapEditorTool class MapEditorTool
class Editor < CyberarmEngine::GuiState class Editor < CyberarmEngine::GuiState
attr_reader :map
def setup def setup
@map = Map.new( map_parser: @options[:map] ) # TODO: Move everything required for a playable game map
@camera = Camera.new( position: Vector.new, orientation: Vector.new(0, 90, 0) ) # in a Scene or Scene3D container object
# and refactor Game to use it.
Publisher.new
@map = Map.new( map_parser: @options[:map_parser] )
@camera = Camera.new( position: Vector.new )
@crosshair = Crosshair.new
@map.setup
end end
def draw def draw
window.renderer.draw(@camera, @map.entities, @map.lights) super
@map.render(@camera)
@crosshair.draw
end end
def update def update
@camera.position.y -= 1 * window.dt super
Publisher.instance.publish(:tick, Gosu.milliseconds - window.delta_time)
@map.update
@camera.update
end
def button_down(id)
if id == Gosu::KB_ESCAPE
# TODO: Use Editor specific menu
push_state(GamePauseMenu)
return
end
InputMapper.keydown(id)
Publisher.instance.publish(:button_down, nil, id)
@map.entities.each do |entity|
entity.button_down(id) if defined?(entity.button_down)
end
end
def button_up(id)
InputMapper.keyup(id)
Publisher.instance.publish(:button_up, nil, id)
@map.entities.each do |entity|
entity.button_up(id) if defined?(entity.button_up)
end
@camera.button_up(id)
end end
end end
end end

View File

@@ -16,7 +16,7 @@ class IMICFPS
push_state(ExtrasMenu) push_state(ExtrasMenu)
end end
link "Exit" do link "Exit Game" do
window.close window.close
end end

View File

@@ -26,6 +26,7 @@ class IMICFPS
@renderer = Renderer.new @renderer = Renderer.new
@renderer.preload_default_shaders @renderer.preload_default_shaders
@scene = TurnTableScene.new @scene = TurnTableScene.new
@overlay = Overlay.new
@canvas_size = Vector.new(self.width, self.height) @canvas_size = Vector.new(self.width, self.height)
@@ -46,6 +47,7 @@ class IMICFPS
super super
@console.draw if @show_console @console.draw if @show_console
@overlay.draw
draw_cursor if needs_cursor draw_cursor if needs_cursor
_canvas_size = Vector.new(self.width, self.height) _canvas_size = Vector.new(self.width, self.height)