Game Development Reference
In-Depth Information
81
end
82
83
def
button_down
(
id
)
84
close
if
id
==
Gosu
::
KbEscape
85
if
id
==
Gosu
::
KbSpace
86
@camera
.
zoom
= 1.0
87
@camera
.
x
= 0
88
@camera
.
y
= 0
89
end
90
end
91
92
def
update
93
@camera
.
x
-=
SPEED
if
button_down?(
Gosu
::
KbA
)
@camera
.
x
+=
SPEED
if
button_down?(
Gosu
::
KbD
)
94
@camera
.
y
-=
SPEED
if
button_down?(
Gosu
::
KbW
)
95
@camera
.
y
+=
SPEED
if
button_down?(
Gosu
::
KbS
)
96
97
98
zoom_delta
=
@camera
.
zoom
> 0 ? 0.01
:
1.0
99
100
if
button_down?(
Gosu
::
KbUp
)
101
@camera
.
zoom
-=
zoom_delta
102
end
103
if
button_down?(
Gosu
::
KbDown
)
104
@camera
.
zoom
+=
zoom_delta
105
end
106
self
.
caption
=
@camera
.
to_s
107
end
108
109
def
draw
110
off_x
= -
@camera
.
x
+
width
/ 2
111
off_y
= -
@camera
.
y
+
height
/ 2
112
cam_x
=
@camera
.
x
113
cam_y
=
@camera
.
y
114
translate(off_x, off_y)
do
115
@camera
.
draw_crosshair
116
zoom
=
@camera
.
zoom
117
scale(zoom, zoom, cam_x, cam_y)
do
118
@map
.
draw(
@camera
)
119
end
120
end
121
info
=
'Objects on/off screen: '
<<
122
"
#{
@map
.
on_screen
}
/
#{
@map
.
off_screen
}
"
123
info_img
=
Gosu
::
Image
.
from_text(
124
self
, info,
Gosu
.
default_font_name,
30
)
125
info_img
.
draw(
10
,
10
,
1
)
126
end