zyps 0.2.1 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.txt +0 -14
- data/bin/zyps +240 -28
- data/bin/zyps_demo +18 -2
- data/doc/classes/Behavior.html +205 -0
- data/doc/classes/Behavior.src/M000003.html +18 -0
- data/doc/classes/Behavior.src/M000004.html +19 -0
- data/doc/classes/Clock.html +165 -0
- data/doc/classes/Clock.src/M000026.html +18 -0
- data/doc/classes/Clock.src/M000027.html +21 -0
- data/doc/classes/Color.html +299 -0
- data/doc/classes/Color.src/M000015.html +18 -0
- data/doc/classes/Color.src/M000016.html +16 -0
- data/doc/classes/Color.src/M000017.html +16 -0
- data/doc/classes/Color.src/M000018.html +16 -0
- data/doc/classes/Color.src/M000019.html +18 -0
- data/doc/classes/Color.src/M000020.html +22 -0
- data/doc/classes/Creature.html +176 -0
- data/doc/classes/Creature.src/M000005.html +19 -0
- data/doc/classes/Environment.html +203 -0
- data/doc/classes/Environment.src/M000028.html +19 -0
- data/doc/classes/Environment.src/M000029.html +45 -0
- data/doc/classes/EnvironmentalFactor.html +167 -0
- data/doc/classes/EnvironmentalFactor.src/M000021.html +18 -0
- data/doc/classes/GameObject.html +256 -0
- data/doc/classes/GameObject.src/M000022.html +20 -0
- data/doc/classes/GameObject.src/M000023.html +19 -0
- data/doc/classes/GameObject.src/M000024.html +16 -0
- data/doc/classes/GameObject.src/M000025.html +16 -0
- data/doc/classes/Location.html +167 -0
- data/doc/classes/Location.src/M000014.html +18 -0
- data/doc/classes/Responsive.html +143 -0
- data/doc/classes/Responsive.src/M000030.html +18 -0
- data/doc/classes/TrailsView.html +217 -0
- data/doc/classes/TrailsView.src/M000001.html +40 -0
- data/doc/classes/TrailsView.src/M000002.html +76 -0
- data/doc/classes/Utility.html +264 -0
- data/doc/classes/Utility.src/M000031.html +26 -0
- data/doc/classes/Utility.src/M000032.html +22 -0
- data/doc/classes/Utility.src/M000033.html +18 -0
- data/doc/classes/Utility.src/M000034.html +21 -0
- data/doc/classes/Utility.src/M000035.html +25 -0
- data/doc/classes/Utility.src/M000036.html +21 -0
- data/doc/classes/Utility.src/M000037.html +22 -0
- data/doc/classes/Vector.html +281 -0
- data/doc/classes/Vector.src/M000006.html +19 -0
- data/doc/classes/Vector.src/M000007.html +16 -0
- data/doc/classes/Vector.src/M000008.html +21 -0
- data/doc/classes/Vector.src/M000009.html +16 -0
- data/doc/classes/Vector.src/M000010.html +18 -0
- data/doc/classes/Vector.src/M000011.html +16 -0
- data/doc/classes/Vector.src/M000012.html +18 -0
- data/doc/classes/Vector.src/M000013.html +25 -0
- data/doc/created.rid +1 -0
- data/doc/files/COPYING_LESSER_txt.html +311 -0
- data/doc/files/COPYING_txt.html +1003 -0
- data/doc/files/README_txt.html +214 -0
- data/doc/files/lib/zyps/views/trails_rb.html +134 -0
- data/doc/files/lib/zyps_rb.html +134 -0
- data/doc/fr_class_index.html +38 -0
- data/doc/fr_file_index.html +31 -0
- data/doc/fr_method_index.html +63 -0
- data/doc/index.html +24 -0
- data/doc/rdoc-style.css +208 -0
- data/lib/zyps/views/trails.rb +3 -3
- metadata +81 -6
- data/bin/zyps_server +0 -178
data/doc/rdoc-style.css
ADDED
@@ -0,0 +1,208 @@
|
|
1
|
+
|
2
|
+
body {
|
3
|
+
font-family: Verdana,Arial,Helvetica,sans-serif;
|
4
|
+
font-size: 90%;
|
5
|
+
margin: 0;
|
6
|
+
margin-left: 40px;
|
7
|
+
padding: 0;
|
8
|
+
background: white;
|
9
|
+
}
|
10
|
+
|
11
|
+
h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
|
12
|
+
h1 { font-size: 150%; }
|
13
|
+
h2,h3,h4 { margin-top: 1em; }
|
14
|
+
|
15
|
+
a { background: #eef; color: #039; text-decoration: none; }
|
16
|
+
a:hover { background: #039; color: #eef; }
|
17
|
+
|
18
|
+
/* Override the base stylesheet's Anchor inside a table cell */
|
19
|
+
td > a {
|
20
|
+
background: transparent;
|
21
|
+
color: #039;
|
22
|
+
text-decoration: none;
|
23
|
+
}
|
24
|
+
|
25
|
+
/* and inside a section title */
|
26
|
+
.section-title > a {
|
27
|
+
background: transparent;
|
28
|
+
color: #eee;
|
29
|
+
text-decoration: none;
|
30
|
+
}
|
31
|
+
|
32
|
+
/* === Structural elements =================================== */
|
33
|
+
|
34
|
+
div#index {
|
35
|
+
margin: 0;
|
36
|
+
margin-left: -40px;
|
37
|
+
padding: 0;
|
38
|
+
font-size: 90%;
|
39
|
+
}
|
40
|
+
|
41
|
+
|
42
|
+
div#index a {
|
43
|
+
margin-left: 0.7em;
|
44
|
+
}
|
45
|
+
|
46
|
+
div#index .section-bar {
|
47
|
+
margin-left: 0px;
|
48
|
+
padding-left: 0.7em;
|
49
|
+
background: #ccc;
|
50
|
+
font-size: small;
|
51
|
+
}
|
52
|
+
|
53
|
+
|
54
|
+
div#classHeader, div#fileHeader {
|
55
|
+
width: auto;
|
56
|
+
color: white;
|
57
|
+
padding: 0.5em 1.5em 0.5em 1.5em;
|
58
|
+
margin: 0;
|
59
|
+
margin-left: -40px;
|
60
|
+
border-bottom: 3px solid #006;
|
61
|
+
}
|
62
|
+
|
63
|
+
div#classHeader a, div#fileHeader a {
|
64
|
+
background: inherit;
|
65
|
+
color: white;
|
66
|
+
}
|
67
|
+
|
68
|
+
div#classHeader td, div#fileHeader td {
|
69
|
+
background: inherit;
|
70
|
+
color: white;
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
div#fileHeader {
|
75
|
+
background: #057;
|
76
|
+
}
|
77
|
+
|
78
|
+
div#classHeader {
|
79
|
+
background: #048;
|
80
|
+
}
|
81
|
+
|
82
|
+
|
83
|
+
.class-name-in-header {
|
84
|
+
font-size: 180%;
|
85
|
+
font-weight: bold;
|
86
|
+
}
|
87
|
+
|
88
|
+
|
89
|
+
div#bodyContent {
|
90
|
+
padding: 0 1.5em 0 1.5em;
|
91
|
+
}
|
92
|
+
|
93
|
+
div#description {
|
94
|
+
padding: 0.5em 1.5em;
|
95
|
+
background: #efefef;
|
96
|
+
border: 1px dotted #999;
|
97
|
+
}
|
98
|
+
|
99
|
+
div#description h1,h2,h3,h4,h5,h6 {
|
100
|
+
color: #125;;
|
101
|
+
background: transparent;
|
102
|
+
}
|
103
|
+
|
104
|
+
div#validator-badges {
|
105
|
+
text-align: center;
|
106
|
+
}
|
107
|
+
div#validator-badges img { border: 0; }
|
108
|
+
|
109
|
+
div#copyright {
|
110
|
+
color: #333;
|
111
|
+
background: #efefef;
|
112
|
+
font: 0.75em sans-serif;
|
113
|
+
margin-top: 5em;
|
114
|
+
margin-bottom: 0;
|
115
|
+
padding: 0.5em 2em;
|
116
|
+
}
|
117
|
+
|
118
|
+
|
119
|
+
/* === Classes =================================== */
|
120
|
+
|
121
|
+
table.header-table {
|
122
|
+
color: white;
|
123
|
+
font-size: small;
|
124
|
+
}
|
125
|
+
|
126
|
+
.type-note {
|
127
|
+
font-size: small;
|
128
|
+
color: #DEDEDE;
|
129
|
+
}
|
130
|
+
|
131
|
+
.xxsection-bar {
|
132
|
+
background: #eee;
|
133
|
+
color: #333;
|
134
|
+
padding: 3px;
|
135
|
+
}
|
136
|
+
|
137
|
+
.section-bar {
|
138
|
+
color: #333;
|
139
|
+
border-bottom: 1px solid #999;
|
140
|
+
margin-left: -20px;
|
141
|
+
}
|
142
|
+
|
143
|
+
|
144
|
+
.section-title {
|
145
|
+
background: #79a;
|
146
|
+
color: #eee;
|
147
|
+
padding: 3px;
|
148
|
+
margin-top: 2em;
|
149
|
+
margin-left: -30px;
|
150
|
+
border: 1px solid #999;
|
151
|
+
}
|
152
|
+
|
153
|
+
.top-aligned-row { vertical-align: top }
|
154
|
+
.bottom-aligned-row { vertical-align: bottom }
|
155
|
+
|
156
|
+
/* --- Context section classes ----------------------- */
|
157
|
+
|
158
|
+
.context-row { }
|
159
|
+
.context-item-name { font-family: monospace; font-weight: bold; color: black; }
|
160
|
+
.context-item-value { font-size: small; color: #448; }
|
161
|
+
.context-item-desc { color: #333; padding-left: 2em; }
|
162
|
+
|
163
|
+
/* --- Method classes -------------------------- */
|
164
|
+
.method-detail {
|
165
|
+
background: #efefef;
|
166
|
+
padding: 0;
|
167
|
+
margin-top: 0.5em;
|
168
|
+
margin-bottom: 1em;
|
169
|
+
border: 1px dotted #ccc;
|
170
|
+
}
|
171
|
+
.method-heading {
|
172
|
+
color: black;
|
173
|
+
background: #ccc;
|
174
|
+
border-bottom: 1px solid #666;
|
175
|
+
padding: 0.2em 0.5em 0 0.5em;
|
176
|
+
}
|
177
|
+
.method-signature { color: black; background: inherit; }
|
178
|
+
.method-name { font-weight: bold; }
|
179
|
+
.method-args { font-style: italic; }
|
180
|
+
.method-description { padding: 0 0.5em 0 0.5em; }
|
181
|
+
|
182
|
+
/* --- Source code sections -------------------- */
|
183
|
+
|
184
|
+
a.source-toggle { font-size: 90%; }
|
185
|
+
div.method-source-code {
|
186
|
+
background: #262626;
|
187
|
+
color: #ffdead;
|
188
|
+
margin: 1em;
|
189
|
+
padding: 0.5em;
|
190
|
+
border: 1px dashed #999;
|
191
|
+
overflow: hidden;
|
192
|
+
}
|
193
|
+
|
194
|
+
div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
195
|
+
|
196
|
+
/* --- Ruby keyword styles --------------------- */
|
197
|
+
|
198
|
+
.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
|
199
|
+
|
200
|
+
.ruby-constant { color: #7fffd4; background: transparent; }
|
201
|
+
.ruby-keyword { color: #00ffff; background: transparent; }
|
202
|
+
.ruby-ivar { color: #eedd82; background: transparent; }
|
203
|
+
.ruby-operator { color: #00ffee; background: transparent; }
|
204
|
+
.ruby-identifier { color: #ffdead; background: transparent; }
|
205
|
+
.ruby-node { color: #ffa07a; background: transparent; }
|
206
|
+
.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
|
207
|
+
.ruby-regexp { color: #ffa07a; background: transparent; }
|
208
|
+
.ruby-value { color: #7fffd4; background: transparent; }
|
data/lib/zyps/views/trails.rb
CHANGED
@@ -33,7 +33,7 @@ class TrailsView
|
|
33
33
|
|
34
34
|
def initialize (width = 600, height = 400, trail_length = 5, trail_width = trail_length)
|
35
35
|
|
36
|
-
@width, @height, @trail_length, @trail_width
|
36
|
+
@width, @height, @trail_length, @trail_width = width, height, trail_length, trail_width
|
37
37
|
|
38
38
|
#Create a drawing area.
|
39
39
|
@canvas = Gtk::DrawingArea.new
|
@@ -78,8 +78,8 @@ class TrailsView
|
|
78
78
|
buffer.draw_rectangle(
|
79
79
|
graphics_context,
|
80
80
|
true, #Filled.
|
81
|
-
0, 0, #
|
82
|
-
@width, @height #
|
81
|
+
0, 0, #Lower-left corner.
|
82
|
+
@width, @height #Upper-right corner.
|
83
83
|
)
|
84
84
|
|
85
85
|
#For each GameObject in the environment:
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.0
|
3
3
|
specification_version: 1
|
4
4
|
name: zyps
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2007-08-
|
6
|
+
version: 0.3.1
|
7
|
+
date: 2007-08-16 00:00:00 -07:00
|
8
8
|
summary: A simulation/game with autonomous creatures
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -34,12 +34,88 @@ files:
|
|
34
34
|
- README.txt
|
35
35
|
- bin/zyps
|
36
36
|
- bin/zyps_demo
|
37
|
-
- bin/zyps_server
|
38
37
|
- lib/zyps
|
38
|
+
- lib/zyps.rb
|
39
39
|
- lib/zyps/views
|
40
40
|
- lib/zyps/views/trails.rb
|
41
|
-
- lib/zyps.rb
|
42
41
|
- test/test_zyps.rb
|
42
|
+
- doc/created.rid
|
43
|
+
- doc/rdoc-style.css
|
44
|
+
- doc/files
|
45
|
+
- doc/classes
|
46
|
+
- doc/fr_file_index.html
|
47
|
+
- doc/fr_class_index.html
|
48
|
+
- doc/fr_method_index.html
|
49
|
+
- doc/index.html
|
50
|
+
- doc/files/lib
|
51
|
+
- doc/files/COPYING_LESSER_txt.html
|
52
|
+
- doc/files/COPYING_txt.html
|
53
|
+
- doc/files/README_txt.html
|
54
|
+
- doc/files/lib/zyps_rb.html
|
55
|
+
- doc/files/lib/zyps
|
56
|
+
- doc/files/lib/zyps/views
|
57
|
+
- doc/files/lib/zyps/views/trails_rb.html
|
58
|
+
- doc/classes/TrailsView.src
|
59
|
+
- doc/classes/Behavior.src
|
60
|
+
- doc/classes/Creature.src
|
61
|
+
- doc/classes/Vector.src
|
62
|
+
- doc/classes/Location.src
|
63
|
+
- doc/classes/Color.src
|
64
|
+
- doc/classes/EnvironmentalFactor.src
|
65
|
+
- doc/classes/GameObject.src
|
66
|
+
- doc/classes/Clock.src
|
67
|
+
- doc/classes/Environment.src
|
68
|
+
- doc/classes/Responsive.src
|
69
|
+
- doc/classes/Utility.src
|
70
|
+
- doc/classes/TrailsView.html
|
71
|
+
- doc/classes/Behavior.html
|
72
|
+
- doc/classes/Creature.html
|
73
|
+
- doc/classes/Vector.html
|
74
|
+
- doc/classes/Location.html
|
75
|
+
- doc/classes/Color.html
|
76
|
+
- doc/classes/EnvironmentalFactor.html
|
77
|
+
- doc/classes/GameObject.html
|
78
|
+
- doc/classes/Clock.html
|
79
|
+
- doc/classes/Environment.html
|
80
|
+
- doc/classes/Responsive.html
|
81
|
+
- doc/classes/Utility.html
|
82
|
+
- doc/classes/TrailsView.src/M000001.html
|
83
|
+
- doc/classes/TrailsView.src/M000002.html
|
84
|
+
- doc/classes/Behavior.src/M000003.html
|
85
|
+
- doc/classes/Behavior.src/M000004.html
|
86
|
+
- doc/classes/Creature.src/M000005.html
|
87
|
+
- doc/classes/Vector.src/M000006.html
|
88
|
+
- doc/classes/Vector.src/M000007.html
|
89
|
+
- doc/classes/Vector.src/M000008.html
|
90
|
+
- doc/classes/Vector.src/M000009.html
|
91
|
+
- doc/classes/Vector.src/M000010.html
|
92
|
+
- doc/classes/Vector.src/M000011.html
|
93
|
+
- doc/classes/Vector.src/M000012.html
|
94
|
+
- doc/classes/Vector.src/M000013.html
|
95
|
+
- doc/classes/Location.src/M000014.html
|
96
|
+
- doc/classes/Color.src/M000015.html
|
97
|
+
- doc/classes/Color.src/M000016.html
|
98
|
+
- doc/classes/Color.src/M000017.html
|
99
|
+
- doc/classes/Color.src/M000018.html
|
100
|
+
- doc/classes/Color.src/M000019.html
|
101
|
+
- doc/classes/Color.src/M000020.html
|
102
|
+
- doc/classes/EnvironmentalFactor.src/M000021.html
|
103
|
+
- doc/classes/GameObject.src/M000022.html
|
104
|
+
- doc/classes/GameObject.src/M000023.html
|
105
|
+
- doc/classes/GameObject.src/M000024.html
|
106
|
+
- doc/classes/GameObject.src/M000025.html
|
107
|
+
- doc/classes/Clock.src/M000026.html
|
108
|
+
- doc/classes/Clock.src/M000027.html
|
109
|
+
- doc/classes/Environment.src/M000028.html
|
110
|
+
- doc/classes/Environment.src/M000029.html
|
111
|
+
- doc/classes/Responsive.src/M000030.html
|
112
|
+
- doc/classes/Utility.src/M000031.html
|
113
|
+
- doc/classes/Utility.src/M000032.html
|
114
|
+
- doc/classes/Utility.src/M000033.html
|
115
|
+
- doc/classes/Utility.src/M000034.html
|
116
|
+
- doc/classes/Utility.src/M000035.html
|
117
|
+
- doc/classes/Utility.src/M000036.html
|
118
|
+
- doc/classes/Utility.src/M000037.html
|
43
119
|
test_files:
|
44
120
|
- test/test_zyps.rb
|
45
121
|
rdoc_options:
|
@@ -54,7 +130,6 @@ extra_rdoc_files:
|
|
54
130
|
executables:
|
55
131
|
- zyps
|
56
132
|
- zyps_demo
|
57
|
-
- zyps_server
|
58
133
|
extensions: []
|
59
134
|
|
60
135
|
requirements:
|
data/bin/zyps_server
DELETED
@@ -1,178 +0,0 @@
|
|
1
|
-
#!/usr/local/bin/ruby
|
2
|
-
|
3
|
-
# Copyright 2007 Jay McGavren, jay@mcgavren.com.
|
4
|
-
#
|
5
|
-
# This file is part of Zyps.
|
6
|
-
#
|
7
|
-
# Zyps is free software; you can redistribute it and/or modify
|
8
|
-
# it under the terms of the GNU Lesser General Public License as published by
|
9
|
-
# the Free Software Foundation; either version 3 of the License, or
|
10
|
-
# (at your option) any later version.
|
11
|
-
#
|
12
|
-
# This program is distributed in the hope that it will be useful,
|
13
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
-
# GNU General Public License for more details.
|
16
|
-
#
|
17
|
-
# You should have received a copy of the GNU Lesser General Public License
|
18
|
-
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19
|
-
|
20
|
-
|
21
|
-
begin
|
22
|
-
require 'optparse'
|
23
|
-
require 'zyps'
|
24
|
-
require 'zyps/views/trails'
|
25
|
-
require 'drb'
|
26
|
-
rescue LoadError
|
27
|
-
require 'optparse'
|
28
|
-
require 'rubygems'
|
29
|
-
require 'zyps'
|
30
|
-
require 'zyps/views/trails'
|
31
|
-
require 'drb'
|
32
|
-
end
|
33
|
-
|
34
|
-
|
35
|
-
#An Environment intended for serving over DRb.
|
36
|
-
class RemoteEnvironment < Environment
|
37
|
-
def initialize
|
38
|
-
super
|
39
|
-
@objects.extend DRbUndumped
|
40
|
-
@environmental_factors.extend DRbUndumped
|
41
|
-
end
|
42
|
-
def objects=(value)
|
43
|
-
@objects = value
|
44
|
-
@objects.extend DRbUndumped
|
45
|
-
end
|
46
|
-
def environmental_factors=(value)
|
47
|
-
@environmental_factors = value
|
48
|
-
@environmental_factors.extend DRbUndumped
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
|
53
|
-
#A server for a Zyps Environment.
|
54
|
-
class EnvironmentServer
|
55
|
-
|
56
|
-
#Port to open service on.
|
57
|
-
attr_accessor :port
|
58
|
-
#Maximum allowed number of objects.
|
59
|
-
attr_accessor :max_population
|
60
|
-
#View dimensions.
|
61
|
-
attr_accessor :view_width, :view_height
|
62
|
-
|
63
|
-
#Set up default values.
|
64
|
-
def initialize(port = nil, max_population = 25, fps = 60, view_width = 800, view_height = 600)
|
65
|
-
@port, @max_population, @fps, @view_width, @view_height = port, max_population, fps, view_width, view_height
|
66
|
-
end
|
67
|
-
|
68
|
-
#Create app window, game environment, view, and network service.
|
69
|
-
def main
|
70
|
-
|
71
|
-
#A clock to track frames to draw this second.
|
72
|
-
clock = Clock.new
|
73
|
-
|
74
|
-
#Create a window, and set GTK up to quit when it is closed.
|
75
|
-
window = Gtk::Window.new
|
76
|
-
window.signal_connect("delete_event") {false}
|
77
|
-
window.signal_connect("destroy") {Gtk.main_quit}
|
78
|
-
|
79
|
-
#Add view to window.
|
80
|
-
view = TrailsView.new(@view_width, @view_height)
|
81
|
-
window.add(view.canvas)
|
82
|
-
window.show_all
|
83
|
-
|
84
|
-
#Create environment.
|
85
|
-
environment = RemoteEnvironment.new
|
86
|
-
#Point view at environment.
|
87
|
-
environment.add_observer(view)
|
88
|
-
|
89
|
-
#Create thread to update environment.
|
90
|
-
update_thread = Thread.new do
|
91
|
-
begin
|
92
|
-
loop do
|
93
|
-
environment.interact
|
94
|
-
#Control population.
|
95
|
-
environment.objects.shift while environment.objects.length > @max_population
|
96
|
-
#Sleep for the rest of this frame.
|
97
|
-
delay = (1.0 / @fps) - clock.elapsed_time
|
98
|
-
sleep delay if delay > 0
|
99
|
-
end
|
100
|
-
rescue Exception => exception
|
101
|
-
puts exception, exception.backtrace
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
#Start a network service.
|
106
|
-
DRb.start_service(
|
107
|
-
@port ? "druby://localhost:#{@port}" : nil,
|
108
|
-
environment
|
109
|
-
)
|
110
|
-
#If port was automatically chosen, display our URI.
|
111
|
-
puts DRb.uri unless @port
|
112
|
-
|
113
|
-
#Activate the GUI.
|
114
|
-
Gtk.main
|
115
|
-
|
116
|
-
end
|
117
|
-
|
118
|
-
|
119
|
-
#Set attributes according to command-line arguments.
|
120
|
-
def process_options(arguments)
|
121
|
-
|
122
|
-
#Set up option parser.
|
123
|
-
options = OptionParser.new
|
124
|
-
|
125
|
-
#Define valid options.
|
126
|
-
options.on("-h", "--help", TrueClass, "Display program help.") {
|
127
|
-
puts options.help
|
128
|
-
exit
|
129
|
-
}
|
130
|
-
options.on(
|
131
|
-
"-m",
|
132
|
-
"--max-population [number]",
|
133
|
-
Integer,
|
134
|
-
"The maximum number of allowed game objects. 25 by default."
|
135
|
-
) {|value| @max_population = value}
|
136
|
-
options.on(
|
137
|
-
"-p",
|
138
|
-
"--port [number]",
|
139
|
-
Integer,
|
140
|
-
"Port number to run the server on. If not defined, next available one will be selected and the URI printed to STDOUT."
|
141
|
-
) {|value| @port = value}
|
142
|
-
options.on(
|
143
|
-
"-f",
|
144
|
-
"--fps [frames]",
|
145
|
-
Integer,
|
146
|
-
"Number of frames to draw per second."
|
147
|
-
) {|value| @fps = value}
|
148
|
-
options.on(
|
149
|
-
"--view-width [pixels]",
|
150
|
-
Integer,
|
151
|
-
"Window width. 800 by default."
|
152
|
-
) {|value| @view_width = value}
|
153
|
-
options.on(
|
154
|
-
"--view-height [pixels]",
|
155
|
-
Integer,
|
156
|
-
"Window height. 600 by default."
|
157
|
-
) {|value| @view_height = value}
|
158
|
-
|
159
|
-
#Parse the options, printing usage if parsing fails.
|
160
|
-
options.parse(arguments) rescue puts "#{$!}\nType '#{$0} --help' for valid options."
|
161
|
-
|
162
|
-
end
|
163
|
-
|
164
|
-
|
165
|
-
end
|
166
|
-
|
167
|
-
|
168
|
-
begin
|
169
|
-
#Create a server.
|
170
|
-
server = EnvironmentServer.new
|
171
|
-
#Parse the command line.
|
172
|
-
server.process_options(ARGV)
|
173
|
-
#Start the server.
|
174
|
-
server.main
|
175
|
-
rescue => exception
|
176
|
-
#Print error to STDERR and exit with an abnormal status.
|
177
|
-
abort "Error: " + exception.message + exception.backtrace.join("\n")
|
178
|
-
end
|