Class: AuthorEngine::Window

Inherits:
Gosu::Window
  • Object
show all
Defined in:
lib/author_engine/window.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeWindow

Returns a new instance of Window.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/author_engine/window.rb', line 15

def initialize
  super(512, 512, fullscreen: false)
  super(512, 512, fullscreen: true) if ARGV.join.include?("--fullscreen")
  # super(1280, 800, fullscreen: false)
  super(Gosu.screen_width, Gosu.screen_height, fullscreen: true) if ARGV.join.include?("--native")

  Window.instance = self
  @container = nil
  @show_cursor = true
  @scale_x = 1.0
  @scale_y = 1.0
  @square_scale = 1.0
  @base_size = SIZE

  @sprite_size = 16

  @close_counter = 0

  calculate_scale
  setup
end

Instance Attribute Details

#base_sizeObject (readonly)

Returns the value of attribute base_size.



14
15
16
# File 'lib/author_engine/window.rb', line 14

def base_size
  @base_size
end

#containerObject

Returns the value of attribute container.



14
15
16
# File 'lib/author_engine/window.rb', line 14

def container
  @container
end

#scale_xObject (readonly)

Returns the value of attribute scale_x.



14
15
16
# File 'lib/author_engine/window.rb', line 14

def scale_x
  @scale_x
end

#scale_yObject (readonly)

Returns the value of attribute scale_y.



14
15
16
# File 'lib/author_engine/window.rb', line 14

def scale_y
  @scale_y
end

#show_cursorObject

Returns the value of attribute show_cursor.



13
14
15
# File 'lib/author_engine/window.rb', line 13

def show_cursor
  @show_cursor
end

#sprite_sizeObject (readonly)

Returns the value of attribute sprite_size.



14
15
16
# File 'lib/author_engine/window.rb', line 14

def sprite_size
  @sprite_size
end

#square_scaleObject (readonly)

Returns the value of attribute square_scale.



14
15
16
# File 'lib/author_engine/window.rb', line 14

def square_scale
  @square_scale
end

Class Method Details

.instanceObject



3
4
5
# File 'lib/author_engine/window.rb', line 3

def self.instance
  @instance
end

.instance=(_instance) ⇒ Object



7
8
9
# File 'lib/author_engine/window.rb', line 7

def self.instance=(_instance)
  @instance = _instance
end

Instance Method Details

#alt_button_down?Boolean

Returns:

  • (Boolean)


89
90
91
# File 'lib/author_engine/window.rb', line 89

def alt_button_down?
  (Gosu.button_down?(Gosu::KbLeftAlt) || Gosu.button_down?(Gosu::KbRightAlt))
end

#button_down(id) ⇒ Object



113
114
115
116
117
# File 'lib/author_engine/window.rb', line 113

def button_down(id)
  super

  @container.button_down(id)
end

#button_up(id) ⇒ Object



119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/author_engine/window.rb', line 119

def button_up(id)
  super

  if id == Gosu::KbEscape
    @close_counter += 1
    save_and_exit if @close_counter == 2
  else
    @close_counter = 0
  end

  @container.button_up(id)
end

#calculate_scaleObject



48
49
50
51
52
53
54
55
# File 'lib/author_engine/window.rb', line 48

def calculate_scale
  warn "Display is to small! (was #{self.width}x#{self.height} minimum is 128x128)" if self.width < 128 || self.height < 128

  @scale_x = (self.width  / VIEW_WIDTH)
  @scale_y = (self.height / VIEW_HEIGHT)

  @square_scale = @scale_y
end

#closeObject



105
106
107
108
109
110
111
# File 'lib/author_engine/window.rb', line 105

def close
  if @container
    @container.close
  else
    super
  end
end

#control_button_down?Boolean

Returns:

  • (Boolean)


85
86
87
# File 'lib/author_engine/window.rb', line 85

def control_button_down?
  (Gosu.button_down?(Gosu::KbLeftControl) || Gosu.button_down?(Gosu::KbRightControl))
end

#darken(color, amount = 25) ⇒ Object



77
78
79
80
81
82
83
# File 'lib/author_engine/window.rb', line 77

def darken(color, amount = 25)
  if defined?(color.alpha)
    return Gosu::Color.rgba(color.red-amount, color.green-amount, color.blue-amount, color.alpha)
  else
    return Gosu::Color.rgb(color.red-amount, color.green-amount, color.blue-amount)
  end
end

#drawObject



57
58
59
# File 'lib/author_engine/window.rb', line 57

def draw
  @container.draw
end

#lighten(color, amount = 25) ⇒ Object



69
70
71
72
73
74
75
# File 'lib/author_engine/window.rb', line 69

def lighten(color, amount = 25)
  if defined?(color.alpha)
    return Gosu::Color.rgba(color.red+amount, color.green+amount, color.blue+amount, color.alpha)
  else
    return Gosu::Color.rgb(color.red+amount, color.green+amount, color.blue+amount)
  end
end

#needs_cursor?Boolean

Returns:

  • (Boolean)


65
66
67
# File 'lib/author_engine/window.rb', line 65

def needs_cursor?
  @show_cursor
end

#save_and_exitObject



97
98
99
100
101
102
103
# File 'lib/author_engine/window.rb', line 97

def save_and_exit
  if @container.is_a?(Editor)
    @container.savefile.save
  end

  close!
end

#setupObject



37
38
39
# File 'lib/author_engine/window.rb', line 37

def setup
  self.container=(Loader.new)
end

#shift_button_down?Boolean

Returns:

  • (Boolean)


93
94
95
# File 'lib/author_engine/window.rb', line 93

def shift_button_down?
  (Gosu.button_down?(Gosu::KbLeftShift) || Gosu.button_down?(Gosu::KbRightShift))
end

#updateObject



61
62
63
# File 'lib/author_engine/window.rb', line 61

def update
  @container.update
end