@@ -16,6 +16,7 @@ Keybindings:
16
16
B: Toggle Screen Border Collisions
17
17
Arrow Keys (Up/Down/Left/Right): Add/Remove 1/1/100/100 Particles
18
18
J/K: Decrease/Increase Multiplier
19
+ -/+: Decrease/Increase Ball Size
19
20
ESC: Quit"#
20
21
) ]
21
22
struct Cli {
@@ -67,6 +68,10 @@ struct Cli {
67
68
#[ arg( long) ]
68
69
no_multipler : bool ,
69
70
71
+ /// If set, the ball_size label will not be drawn
72
+ #[ arg( long) ]
73
+ no_ball_size_label : bool ,
74
+
70
75
/// If set, no labels will be drawn.
71
76
/// Equivalent to setting all the no_* flags
72
77
#[ arg( long) ]
@@ -94,10 +99,14 @@ fn main() {
94
99
0.99
95
100
} ;
96
101
97
- let ball_size = if let Some ( ball_size) = args. ball_size {
102
+ let mut ball_size = if let Some ( ball_size) = args. ball_size {
98
103
ball_size
99
104
} else {
100
- 20.0
105
+ if args. balls {
106
+ 20.0
107
+ } else {
108
+ 1.0
109
+ }
101
110
} ;
102
111
103
112
if args. no_labels {
@@ -106,6 +115,7 @@ fn main() {
106
115
args. no_border = true ;
107
116
args. no_attract = true ;
108
117
args. no_multipler = true ;
118
+ args. no_ball_size_label = true ;
109
119
}
110
120
111
121
let mut width = if let Some ( w) = args. width { w } else { 800 } ;
@@ -130,31 +140,24 @@ fn main() {
130
140
width = raylib:: GetScreenWidth ( ) ;
131
141
height = raylib:: GetScreenHeight ( ) ;
132
142
143
+ // Maybe check if it possible to do this with a match statement :)
133
144
if raylib:: IsKeyPressed ( raylib:: KeyboardKey :: KeyR as i32 ) {
134
145
particles = ( 0 ..particle_count)
135
146
. map ( |_| particle:: Particle :: new ( width, height) )
136
147
. collect ( ) ;
137
- }
138
-
139
- if raylib:: IsKeyPressed ( raylib:: KeyboardKey :: KeySpace as i32 )
148
+ } else if raylib:: IsKeyPressed ( raylib:: KeyboardKey :: KeySpace as i32 )
140
149
|| raylib:: IsMouseButtonPressed ( 0 )
141
150
{
142
151
attract = !attract;
143
- }
144
-
145
- if raylib:: IsKeyPressed ( raylib:: KeyboardKey :: KeyB as i32 ) {
152
+ } else if raylib:: IsKeyPressed ( raylib:: KeyboardKey :: KeyB as i32 ) {
146
153
border = !border;
147
- }
148
-
149
- if raylib:: IsKeyDown ( raylib:: KeyboardKey :: KeyK as i32 ) {
154
+ } else if raylib:: IsKeyDown ( raylib:: KeyboardKey :: KeyK as i32 ) {
150
155
multiplier += 0.1
151
156
} else if raylib:: IsKeyDown ( raylib:: KeyboardKey :: KeyJ as i32 ) {
152
157
if multiplier >= 0.0 {
153
158
multiplier -= 0.1 ;
154
159
}
155
- }
156
-
157
- if raylib:: IsKeyDown ( raylib:: KeyboardKey :: KeyUp as i32 ) {
160
+ } else if raylib:: IsKeyDown ( raylib:: KeyboardKey :: KeyUp as i32 ) {
158
161
particles. push ( particle:: Particle :: new ( width, height) ) ;
159
162
160
163
particle_count += 1 ;
@@ -176,6 +179,20 @@ fn main() {
176
179
particles. push ( particle:: Particle :: new ( width, height) ) ;
177
180
}
178
181
particle_count += 100 ;
182
+ } else if raylib:: IsKeyDown ( raylib:: KeyboardKey :: KeyPlus as i32 )
183
+ || raylib:: IsKeyDown ( raylib:: KeyboardKey :: KeyAdd as i32 )
184
+ {
185
+ ball_size += 1.0 ;
186
+ args. balls = true ;
187
+ } else if raylib:: IsKeyDown ( raylib:: KeyboardKey :: KeyMinus as i32 )
188
+ || raylib:: IsKeyDown ( raylib:: KeyboardKey :: KeySubtract as i32 )
189
+ {
190
+ if ball_size >= 2.0 {
191
+ args. balls = true ;
192
+ ball_size -= 1.0 ;
193
+ } else {
194
+ args. balls = false ;
195
+ }
179
196
}
180
197
181
198
let mouse_position = raylib:: GetMousePosition ( ) ;
@@ -276,6 +293,23 @@ fn main() {
276
293
) ;
277
294
}
278
295
296
+ if !args. no_ball_size_label {
297
+ let text = CString :: new ( format ! ( "Ball Size: {:.01}" , ball_size) ) . unwrap ( ) ;
298
+ let text_ptr = text. as_ptr ( ) ;
299
+ raylib:: DrawText (
300
+ text_ptr,
301
+ 10 ,
302
+ 110 ,
303
+ 20 ,
304
+ raylib:: Color {
305
+ r : 255 ,
306
+ g : 255 ,
307
+ b : 255 ,
308
+ a : 255 ,
309
+ } ,
310
+ ) ;
311
+ }
312
+
279
313
raylib:: EndDrawing ( ) ;
280
314
}
281
315
raylib:: CloseWindow ( ) ;
0 commit comments