empi 0.19 → 0.24
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.
- checksums.yaml +4 -4
- data/lib/empi.rb +22 -75
- data/lib/lib/game_states/build_state.rb +68 -0
- data/lib/lib/game_states/game_state.rb +27 -0
- data/lib/lib/game_states/play_state.rb +135 -0
- data/lib/lib/game_states/quit_state.rb +33 -0
- data/lib/lib/game_states/welcome_state.rb +64 -0
- data/lib/{army.rb → lib/units/army.rb} +7 -4
- data/lib/{ship.rb → lib/units/ship.rb} +7 -4
- data/lib/lib/units/town.rb +108 -0
- data/lib/{unit.rb → lib/units/unit.rb} +66 -41
- data/lib/{unitFunction.rb → lib/units/unitFunction.rb} +15 -6
- data/lib/lib/user_interface/cursor.rb +190 -0
- data/lib/lib/user_interface/infopane.rb +49 -0
- data/lib/{map.rb → lib/user_interface/map.rb} +31 -25
- data/lib/lib/user_interface/tile.rb +52 -0
- data/lib/docu/Empi v18.png b/data/lib/media/Empi → v18.png +0 -0
- metadata +30 -20
- data/lib/cursor.rb +0 -166
- data/lib/docu/info.txt +0 -372
- data/lib/infopane.rb +0 -36
- data/lib/tile.rb +0 -36
- data/lib/town.rb +0 -77
data/lib/docu/info.txt
DELETED
@@ -1,372 +0,0 @@
|
|
1
|
-
/-- /// /-/ -/-
|
2
|
-
/-- ||| /-/ |
|
3
|
-
/-- ||| | -/-
|
4
|
-
|
5
|
-
Empi: Ruby Edition
|
6
|
-
====================
|
7
|
-
CC-BY-SA 3.0, Detros
|
8
|
-
http://www.bay12forums.com/smf/index.php?topic=157538
|
9
|
-
https://rubygems.org/gems/empi
|
10
|
-
rasunadon@seznam.cz
|
11
|
-
|
12
|
-
|
13
|
-
v19 dev
|
14
|
-
=========
|
15
|
-
- units which can't build will not only protest against such function but also not set it
|
16
|
-
fixed: units which can't build can still have function set to build
|
17
|
-
- added link to the gem page to the header of this Info file
|
18
|
-
- defenders of capturable units need to be dealt with before it can be captured
|
19
|
-
fixed: capturing town with units leaves those enemy units inside
|
20
|
-
- destroyed transporters first destroy their cargo
|
21
|
-
fixed: destroyed transport ships don't give points for their lost cargo
|
22
|
-
- apparently fixed in v0.18 with storing of last unit in cursor
|
23
|
-
fixed: transported units show in infopane info of their transport instead when selected
|
24
|
-
- cargo part of info shown even for empty transporters
|
25
|
-
- UnitFunction stores its unit
|
26
|
-
fixed: transported units don't function properly, their transports secretly function instead of them
|
27
|
-
- preliminary work done on setting build projects
|
28
|
-
- towns say what their project and its progress are
|
29
|
-
- parts are first build and then checked so building process takes one less turn now
|
30
|
-
- captured towns have their build process reset
|
31
|
-
- reworded function parts of unit info
|
32
|
-
|
33
|
-
newly found issues
|
34
|
-
--------------------
|
35
|
-
! passing a Window to Image.from_text has been deprecated since Gosu 0.9
|
36
|
-
! Fontconfig error: failed reading config file
|
37
|
-
! no way to list cargo in loaded maps
|
38
|
-
! units loaded from tile can spawn on unsuitable terrain
|
39
|
-
|
40
|
-
file changes
|
41
|
-
--------------
|
42
|
-
army.rb
|
43
|
-
PARTS_TO_BE_BUILT
|
44
|
-
|
45
|
-
cursor.rb
|
46
|
-
removed debug printouts from to_next_unit!()
|
47
|
-
|
48
|
-
empi.rb
|
49
|
-
added Build function to help
|
50
|
-
|
51
|
-
ship
|
52
|
-
PARTS_TO_BE_BUILT
|
53
|
-
|
54
|
-
unit.rb
|
55
|
-
set_function(func) properly returns if it tries to set build function for unit which can't build
|
56
|
-
capture(by_whom) renamed to capture!(by_whom)
|
57
|
-
destroy(by_whom) renamed to destroy!(by_whom)
|
58
|
-
tile_check() renamed to is_terrain_suitable?()
|
59
|
-
+engage!(by_whom) - Process engagement targeted at this unit
|
60
|
-
+attack!(by_whom) - Process attack targeted at this unit
|
61
|
-
capture!(by_whom) checks if unit can be captured and if capturing faction is different from current one
|
62
|
-
destroy!(by_whom) removes from cargo of its transporter when transported
|
63
|
-
cargo part shortened in info()
|
64
|
-
positive cargo_max used instead of cargo size to show cargo part of info
|
65
|
-
simplified calling of UnitFunction in function!
|
66
|
-
set_function(func) renamed to set_function!(func)
|
67
|
-
PARTS_TO_BE_BUILT
|
68
|
-
moved build part of capture! to Town
|
69
|
-
moved build part of set_function! to Town
|
70
|
-
+can_be_built?
|
71
|
-
|
72
|
-
unitFunction.rb
|
73
|
-
removed PARTS_NEEDED
|
74
|
-
@unit
|
75
|
-
states project and its state when building in func!()
|
76
|
-
loading needed unit parameters from its stored unit in func!()
|
77
|
-
+info() - Set function part of long info string of unit
|
78
|
-
|
79
|
-
town.rb
|
80
|
-
@parts_needed
|
81
|
-
@project
|
82
|
-
+build_info - Tell the state of current build project
|
83
|
-
+capture!(by_whom) - Process capture targeted at this town and reset build process
|
84
|
-
+set_function(func) - Set desired function and possibly also project
|
85
|
-
+set_project! - Set desired project
|
86
|
-
|
87
|
-
save/m02-err.esf
|
88
|
-
copy of m02 with two extra units on unsuitable terrain
|
89
|
-
|
90
|
-
v18 dev
|
91
|
-
=========
|
92
|
-
- help is now listing all keys
|
93
|
-
- help shown after the first load of new map
|
94
|
-
- units use all left moves when loaded, unless they are loaded into towns
|
95
|
-
- even units with 0 moves left show their moves in their info
|
96
|
-
- added "End of turn" marker
|
97
|
-
- added licensing/contact info also to this info file and not just to gem specs
|
98
|
-
- several exception handlers added to Cursor
|
99
|
-
- units stored in Tile class
|
100
|
-
fixed: units are still stored via Map class instead of Tile one
|
101
|
-
- movement and function keys processed in Cursor, movement checked in Unit
|
102
|
-
fixed: units are still accessed via Window class instead of Cursor one
|
103
|
-
- moving of cursor stores the current unit so it can possibly get moved (again)
|
104
|
-
- function setting of units separated to its own method
|
105
|
-
- autodisabling of freeroam mode on each end of turn moved to the start of next turn
|
106
|
-
|
107
|
-
newly found issues
|
108
|
-
--------------------
|
109
|
-
! help should be shown after each load of new map
|
110
|
-
! transported units can't get commands from freeroaming cursor
|
111
|
-
! transported units don't function properly, their transports secretly function instead of them
|
112
|
-
! unit info shown twice at the start of the first turn
|
113
|
-
! units which can't build can still have function set to build (though they do protest)
|
114
|
-
|
115
|
-
file changes
|
116
|
-
--------------
|
117
|
-
empi.rb
|
118
|
-
help shown at the start of game
|
119
|
-
added End turn and End game keys to help()
|
120
|
-
"End of turn" marker
|
121
|
-
removed calling of @map.draw_units
|
122
|
-
removed search for next movable unit
|
123
|
-
|
124
|
-
map.rb
|
125
|
-
all_map_units() uses indirect access via get_unit()
|
126
|
-
get_unit(), set_unit() access given coordinates of @tiles
|
127
|
-
draw_units() and @units removed
|
128
|
-
|
129
|
-
unit.rb
|
130
|
-
removed processing of movement and function keys
|
131
|
-
info() uses @moves_max > 0 instead of can_move()
|
132
|
-
check_movement() sets @moves_left to 1 when unit is loaded so it then gets lowered to 0
|
133
|
-
|
134
|
-
cursor.rb
|
135
|
-
switch_freeroam() renamed to switch_freeroam!()
|
136
|
-
+move! - Move by given change of coordinates
|
137
|
-
+to_next_unit! - Find next unit to target with cursor
|
138
|
-
@unit
|
139
|
-
+set_function_to_unit(func) - Tries to set function <func> to currently selected unit
|
140
|
-
|
141
|
-
tile.rb
|
142
|
-
@unit
|
143
|
-
|
144
|
-
infopane.rb
|
145
|
-
removed one space from score output
|
146
|
-
|
147
|
-
docu/Empi v18.png
|
148
|
-
docu/Empi v18 - printouts.png
|
149
|
-
|
150
|
-
v17 dev
|
151
|
-
=========
|
152
|
-
- selected map: m02
|
153
|
-
- terrain stuff separated to Tile class
|
154
|
-
! units are still stored via Map class instead of Tile one
|
155
|
-
! units are still accessed via Window class instead of Cursor one
|
156
|
-
- removed debug printout from Unit class
|
157
|
-
- moving transports don't leave their cargo behind
|
158
|
-
- capturing done only by armies
|
159
|
-
fixed: all units can capture towns (armies visiting towns are left allowed for now)
|
160
|
-
- only towns can be captured, other units do battle
|
161
|
-
fixed: battling units capture instead of damaging
|
162
|
-
! capturing town with units leaves those enemy units inside
|
163
|
-
! damaged units are destroyed
|
164
|
-
- printouts tweaked
|
165
|
-
fixed: transported units show only info of their transport instead when selected
|
166
|
-
! transported units show in infopane info of their transport instead when selected
|
167
|
-
! destroyed transport ships don't give points for their lost cargo
|
168
|
-
|
169
|
-
file changes
|
170
|
-
--------------
|
171
|
-
empi.rb
|
172
|
-
cursor prints out info() even for not moved units
|
173
|
-
(say, when friend unit without avaiable cargo capacity was on the destination tile)
|
174
|
-
added PROMPT to responding printouts
|
175
|
-
|
176
|
-
cursor.rb
|
177
|
-
info() shows info of transported units too
|
178
|
-
|
179
|
-
map.rb
|
180
|
-
TILE constants moved to tile.rb
|
181
|
-
initialize() sets tile and leaves processing of loaded symbol to it
|
182
|
-
tile() returns object of tile instead directly its terrain type
|
183
|
-
+all_tiles - Return all tiles
|
184
|
-
draw_tiles
|
185
|
-
|
186
|
-
unit.rb
|
187
|
-
removed debug printout used for checking of units leaving towns
|
188
|
-
added PROMPT to responding printouts
|
189
|
-
check_movement() makes sure cargo is moved too
|
190
|
-
check_movement() checks if moved unit has enough move points
|
191
|
-
check_movement() print outs are more detailed
|
192
|
-
tile_check() doesn't check terrain type for transported units
|
193
|
-
info() prints out also max cargo capacity
|
194
|
-
fixed comparing of functions in set_function()
|
195
|
-
+can_capture?
|
196
|
-
+can_be_captured?
|
197
|
-
can_move() renamed to can_move?()
|
198
|
-
reset_moves() renamed to reset_moves!()
|
199
|
-
|
200
|
-
army.rb
|
201
|
-
can capture
|
202
|
-
|
203
|
-
town.rb
|
204
|
-
can be captured
|
205
|
-
|
206
|
-
save/m02.esf
|
207
|
-
+two ships, one for each faction
|
208
|
-
|
209
|
-
tile.rb
|
210
|
-
|
211
|
-
|
212
|
-
v16 dev
|
213
|
-
=========
|
214
|
-
- units on sentry duty say so when functioning
|
215
|
-
- neutral units can't have functions
|
216
|
-
- links to media and save files use full path
|
217
|
-
- towns build armies
|
218
|
-
fixed: no building of units
|
219
|
-
! hardcoded unit type to be built
|
220
|
-
- units can transport other units
|
221
|
-
- newly built units are stored in town instead of map
|
222
|
-
fixed: new units are saved in map instead of the towns that built them
|
223
|
-
! transported units are never drawn
|
224
|
-
! transported units show only info of their transport instead when selected
|
225
|
-
! all units can capture and visit towns
|
226
|
-
|
227
|
-
file changes
|
228
|
-
--------------
|
229
|
-
map.rb
|
230
|
-
initialize() uses full paths to files
|
231
|
-
all_units renamed to all_map_units() - Return only units directly on map
|
232
|
-
+all_transported_units() - Return only units transported by other units
|
233
|
-
+all_units() - Return both map units and transported units
|
234
|
-
draw_units() draws only map units
|
235
|
-
|
236
|
-
unit.rb
|
237
|
-
+@cargo, @cargo_max
|
238
|
-
+can_transport?() - Unit is able to both transport other units and currently has some space left
|
239
|
-
set_function() checks for @faction == 0
|
240
|
-
checking of movement separated from update()
|
241
|
-
+check_movement() - Processes move of unit and takes care of its (un)loading or attack
|
242
|
-
capture() makes newly captured towns start building
|
243
|
-
|
244
|
-
town.rb
|
245
|
-
initialize() uses full path to file
|
246
|
-
+parts_built
|
247
|
-
+@cargo_max set to 10
|
248
|
-
|
249
|
-
army.rb
|
250
|
-
initialize() uses full path to file
|
251
|
-
|
252
|
-
ship.rb
|
253
|
-
initialize() uses full path to file
|
254
|
-
+@cargo_max set to 3
|
255
|
-
|
256
|
-
unitFunction.rb
|
257
|
-
+FUNCBUILD case in func!()
|
258
|
-
FUNCSENTRY case in func!() sets "ret" even when unit keeps sentrying
|
259
|
-
|
260
|
-
|
261
|
-
v15 dev
|
262
|
-
=========
|
263
|
-
- selected map: m03
|
264
|
-
- units referenced only from map
|
265
|
-
fixed: no destruction of units
|
266
|
-
- loading of units from file
|
267
|
-
fixed: no loading
|
268
|
-
- checks of loaded terrain tiles and units
|
269
|
-
- map stored as [row, column], not [xx, yy]
|
270
|
-
|
271
|
-
file changes
|
272
|
-
--------------
|
273
|
-
empi.rb
|
274
|
-
-scenario_units() - Return list of units for given scenario
|
275
|
-
|
276
|
-
map.rb
|
277
|
-
load_map() now loads units too
|
278
|
-
load_head() now returns number of units to load too
|
279
|
-
load_map(), tile(), get_unit(), set_unit() use rr and cc instead of xx and yy
|
280
|
-
+load_unit() - Load one unit from given line
|
281
|
-
+draw_units() - Draw all units
|
282
|
-
|
283
|
-
save/m01.esf
|
284
|
-
8 units from old empi.scenario_units()
|
285
|
-
|
286
|
-
save/m02.esf
|
287
|
-
10 units similar to old empi.scenario_units()
|
288
|
-
|
289
|
-
save/m03.esf
|
290
|
-
|
291
|
-
|
292
|
-
v14 dev
|
293
|
-
=========
|
294
|
-
- loading of terrain tiles from file
|
295
|
-
fixed: hardcoded starting scenario
|
296
|
-
! hardcoded save file name
|
297
|
-
! hardcoded map size
|
298
|
-
|
299
|
-
file changes
|
300
|
-
--------------
|
301
|
-
empi.rb
|
302
|
-
TILE constants moved to map.rb
|
303
|
-
|
304
|
-
map.rb
|
305
|
-
-scenario_tiles() - Return map tile for given scenario
|
306
|
-
+load_map() - Load map from file (for now only terrain tiles)
|
307
|
-
+load_head() - Load head row of file
|
308
|
-
|
309
|
-
unit.rb
|
310
|
-
removed generic unit image
|
311
|
-
|
312
|
-
save/m01.esf
|
313
|
-
save/m02.esf
|
314
|
-
|
315
|
-
|
316
|
-
older versions
|
317
|
-
================
|
318
|
-
- towns and armies
|
319
|
-
- functions none and sentry
|
320
|
-
- armor and movement points
|
321
|
-
- movement of units
|
322
|
-
- rudimentary terrain checking after move
|
323
|
-
- capturing of units
|
324
|
-
- turn and score counting
|
325
|
-
- command line and screen text output
|
326
|
-
- next available unit / freeroam cursor
|
327
|
-
|
328
|
-
|
329
|
-
current state
|
330
|
-
===============
|
331
|
-
old wishlist
|
332
|
-
! no panning of map
|
333
|
-
!x no destruction of units
|
334
|
-
!x no building of units
|
335
|
-
! no victory conditions
|
336
|
-
!x battling units capture instead of damaging
|
337
|
-
! attacker always wins
|
338
|
-
! player playing both factions at once
|
339
|
-
!x hardcoded starting scenario
|
340
|
-
! no fog of war
|
341
|
-
! no saving
|
342
|
-
!x no loading
|
343
|
-
! no title screen
|
344
|
-
! no highscore screen
|
345
|
-
! no settings
|
346
|
-
! no sound, no music
|
347
|
-
|
348
|
-
new problems
|
349
|
-
! hardcoded save file name
|
350
|
-
! hardcoded map size
|
351
|
-
! hardcoded unit type to be built
|
352
|
-
! transported units are never drawn
|
353
|
-
!x transported units show only info of their transport instead when selected
|
354
|
-
!x all units can capture towns
|
355
|
-
!x all units can visit towns
|
356
|
-
!x units are still stored via Map class instead of Tile one
|
357
|
-
!x units are still accessed via Window class instead of Cursor one
|
358
|
-
!x capturing town with units leaves those enemy units inside
|
359
|
-
! damaged units are destroyed
|
360
|
-
!x transported units show in infopane info of their transport instead when selected
|
361
|
-
!x destroyed transport ships don't give points for their lost cargo
|
362
|
-
! help should be shown after each load of new map
|
363
|
-
! transported units can't get commands from freeroaming cursor
|
364
|
-
!x transported units don't function properly, their transports secretly function instead of them
|
365
|
-
! unit info shown twice at the start of the first turn
|
366
|
-
!x units which can't build can still have function set to build
|
367
|
-
! passing a Window to Image.from_text has been deprecated since Gosu 0.9
|
368
|
-
! Fontconfig error: failed reading config file
|
369
|
-
! no way to list cargo in loaded maps
|
370
|
-
! units loaded from tile can spawn on unsuitable terrain
|
371
|
-
|
372
|
-
(! thing to fix, !x fixed thing)
|
data/lib/infopane.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
# Score, turn and event texts
|
2
|
-
class Infopane
|
3
|
-
attr_writer :text, :act_fact
|
4
|
-
|
5
|
-
def initialize
|
6
|
-
@score = [0, 0]
|
7
|
-
@turn = 0
|
8
|
-
@act_fact = 0 # active faction
|
9
|
-
@text = 'ready'
|
10
|
-
end
|
11
|
-
|
12
|
-
def update
|
13
|
-
end
|
14
|
-
|
15
|
-
def draw
|
16
|
-
turnscore = Gosu::Image.from_text(
|
17
|
-
self, "Turn: #{@turn}, Score: #{@score[0]} - #{@score[1]}", Gosu.default_font_name, 20)
|
18
|
-
turnscore.draw(XTEXT, YTEXT, ZTEXT)
|
19
|
-
|
20
|
-
text = Gosu::Image.from_text(self, "#{@text}", Gosu.default_font_name, 20)
|
21
|
-
text.draw(XTEXT, (TILESIZE / 2) + YTEXT, ZTEXT)
|
22
|
-
end
|
23
|
-
|
24
|
-
def next_faction
|
25
|
-
# TODO active faction switching
|
26
|
-
end
|
27
|
-
|
28
|
-
def next_turn
|
29
|
-
@turn += 1
|
30
|
-
puts "Turn: #{@turn}, Score: #{@score[0]} - #{@score[1]}"
|
31
|
-
end
|
32
|
-
|
33
|
-
def add_score(to_whom, how_much)
|
34
|
-
@score[to_whom] += how_much
|
35
|
-
end
|
36
|
-
end
|
data/lib/tile.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
TILE_SEA = 0
|
2
|
-
TILE_GROUND = 1
|
3
|
-
|
4
|
-
SYMBOL_SEA = '.'
|
5
|
-
SYMBOL_GROUND = '#'
|
6
|
-
|
7
|
-
class Tile
|
8
|
-
attr_accessor :terrain, :infopane, :unit
|
9
|
-
|
10
|
-
def initialize(x, y, loaded_symbol, infopane)
|
11
|
-
dir_path = File.dirname(__FILE__)
|
12
|
-
|
13
|
-
@x = x
|
14
|
-
@y = y
|
15
|
-
@infopane = infopane
|
16
|
-
|
17
|
-
case(loaded_symbol)
|
18
|
-
when SYMBOL_SEA then
|
19
|
-
@terrain = TILE_SEA
|
20
|
-
@image = Gosu::Image.new(dir_path + '/media/sea.png')
|
21
|
-
when SYMBOL_GROUND then
|
22
|
-
@terrain = TILE_GROUND
|
23
|
-
@image = Gosu::Image.new(dir_path + '/media/ground.png')
|
24
|
-
else
|
25
|
-
abort("tile.initialize(): Unknown terrain symbol (#{loaded_symbol})")
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def draw
|
30
|
-
@image.draw(@x * TILESIZE, (@y + 1) * TILESIZE, ZTILE)
|
31
|
-
|
32
|
-
if @unit
|
33
|
-
@unit.draw
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
data/lib/town.rb
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
require_relative './unit'
|
2
|
-
|
3
|
-
class Town < Unit
|
4
|
-
attr_accessor :project, :parts_built, :parts_needed
|
5
|
-
|
6
|
-
def initialize(x, y, faction, map, infopane)
|
7
|
-
super
|
8
|
-
dir_path = File.dirname(__FILE__)
|
9
|
-
@image = Gosu::Image.new(dir_path + '/media/town.png')
|
10
|
-
|
11
|
-
@name = 'town'
|
12
|
-
@value = 20
|
13
|
-
@armor_left = @armor_max = 1
|
14
|
-
@moves_max = 0
|
15
|
-
@cargo_max = 10
|
16
|
-
|
17
|
-
@parts_built = 0
|
18
|
-
@parts_needed = 0
|
19
|
-
@project = nil
|
20
|
-
|
21
|
-
set_function!(FUNCBUILD)
|
22
|
-
end
|
23
|
-
|
24
|
-
def can_build?
|
25
|
-
true
|
26
|
-
end
|
27
|
-
|
28
|
-
def can_be_captured?
|
29
|
-
true
|
30
|
-
end
|
31
|
-
|
32
|
-
# Tell the state of current build project
|
33
|
-
def build_info
|
34
|
-
"#{@parts_built}/#{@parts_needed}"
|
35
|
-
end
|
36
|
-
|
37
|
-
# Process capture targeted at this town and reset build process
|
38
|
-
def capture!(by_whom)
|
39
|
-
super
|
40
|
-
|
41
|
-
# Reset build process
|
42
|
-
@project = nil
|
43
|
-
@parts_built = 0
|
44
|
-
set_function!(FUNCBUILD)
|
45
|
-
end
|
46
|
-
|
47
|
-
# Set desired function and possibly also project
|
48
|
-
def set_function!(func)
|
49
|
-
super
|
50
|
-
|
51
|
-
if @faction != 0 and func == FUNCBUILD # neutral towns dom't need projects either
|
52
|
-
set_project!
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
# Set desired project
|
57
|
-
def set_project!
|
58
|
-
@desired_project = "army" # TODO ask for input on what to build
|
59
|
-
@parts_needed = 3 # TODO load from given project class
|
60
|
-
|
61
|
-
if @desired_project == @project
|
62
|
-
puts PROMPT + to_s + ": project has already been set to #{@project} (#{build_info} done)"
|
63
|
-
else
|
64
|
-
previous_project = @project
|
65
|
-
@project = @desired_project
|
66
|
-
lost_parts = @parts_built
|
67
|
-
@parts_built = 0
|
68
|
-
|
69
|
-
new_project_set_text = PROMPT + to_s + ": project set to #{@project} (#{build_info} done)"
|
70
|
-
unless lost_parts > 0
|
71
|
-
puts new_project_set_text
|
72
|
-
else
|
73
|
-
puts new_project_set_text + ", losing #{lost_parts} parts of #{previous_project} "
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|