Particles!
parent
49f7d36b8e
commit
40cc3ed7ed
|
@ -0,0 +1,149 @@
|
|||
slugs
|
||||
- Delay -
|
||||
active: false
|
||||
- Duration -
|
||||
lowMin: 10000.0
|
||||
lowMax: 10000.0
|
||||
- Count -
|
||||
min: 0
|
||||
max: 200
|
||||
- Emission -
|
||||
lowMin: 2.0
|
||||
lowMax: 2.0
|
||||
highMin: 4.0
|
||||
highMax: 4.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Life -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 500.0
|
||||
highMax: 750.0
|
||||
relative: false
|
||||
scalingCount: 3
|
||||
scaling0: 1.0
|
||||
scaling1: 1.0
|
||||
scaling2: 1.0
|
||||
timelineCount: 3
|
||||
timeline0: 0.0
|
||||
timeline1: 0.66
|
||||
timeline2: 1.0
|
||||
independent: false
|
||||
- Life Offset -
|
||||
active: false
|
||||
independent: false
|
||||
- X Offset -
|
||||
active: false
|
||||
- Y Offset -
|
||||
active: false
|
||||
- Spawn Shape -
|
||||
shape: square
|
||||
- Spawn Width -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 60.0
|
||||
highMax: 60.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Spawn Height -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 60.0
|
||||
highMax: 60.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- X Scale -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 20.0
|
||||
highMax: 20.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Y Scale -
|
||||
active: false
|
||||
- Velocity -
|
||||
active: true
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 0.0
|
||||
highMax: 0.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Angle -
|
||||
active: true
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 359.0
|
||||
highMax: 359.0
|
||||
relative: false
|
||||
scalingCount: 3
|
||||
scaling0: 0.0
|
||||
scaling1: 1.0
|
||||
scaling2: 1.0
|
||||
timelineCount: 3
|
||||
timeline0: 0.0
|
||||
timeline1: 0.999
|
||||
timeline2: 1.0
|
||||
- Rotation -
|
||||
active: false
|
||||
- Wind -
|
||||
active: false
|
||||
- Gravity -
|
||||
active: false
|
||||
- Tint -
|
||||
colorsCount: 9
|
||||
colors0: 1.0
|
||||
colors1: 1.0
|
||||
colors2: 1.0
|
||||
colors3: 0.0
|
||||
colors4: 0.0
|
||||
colors5: 0.0
|
||||
colors6: 1.0
|
||||
colors7: 1.0
|
||||
colors8: 1.0
|
||||
timelineCount: 3
|
||||
timeline0: 0.0
|
||||
timeline1: 0.050933786
|
||||
timeline2: 1.0
|
||||
- Transparency -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 1.0
|
||||
highMax: 1.0
|
||||
relative: false
|
||||
scalingCount: 4
|
||||
scaling0: 0.0
|
||||
scaling1: 1.0
|
||||
scaling2: 1.0
|
||||
scaling3: 0.0
|
||||
timelineCount: 4
|
||||
timeline0: 0.0
|
||||
timeline1: 0.21232876
|
||||
timeline2: 0.65068495
|
||||
timeline3: 0.9794521
|
||||
- Options -
|
||||
attached: false
|
||||
continuous: false
|
||||
aligned: false
|
||||
additive: false
|
||||
behind: false
|
||||
premultipliedAlpha: false
|
||||
spriteMode: single
|
||||
- Image Paths -
|
||||
/home/emamaker/github/amazeing/gdx/core/assets/data/powerups/ball_and_chain.png
|
||||
|
|
@ -0,0 +1,142 @@
|
|||
Untitled
|
||||
- Delay -
|
||||
active: false
|
||||
- Duration -
|
||||
lowMin: 5000.0
|
||||
lowMax: 5000.0
|
||||
- Count -
|
||||
min: 0
|
||||
max: 200
|
||||
- Emission -
|
||||
lowMin: 1.0
|
||||
lowMax: 1.0
|
||||
highMin: 10.0
|
||||
highMax: 10.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Life -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 150.0
|
||||
highMax: 350.0
|
||||
relative: false
|
||||
scalingCount: 3
|
||||
scaling0: 1.0
|
||||
scaling1: 1.0
|
||||
scaling2: 0.9183673
|
||||
timelineCount: 3
|
||||
timeline0: 0.0
|
||||
timeline1: 0.66
|
||||
timeline2: 1.0
|
||||
independent: false
|
||||
- Life Offset -
|
||||
active: false
|
||||
independent: false
|
||||
- X Offset -
|
||||
active: false
|
||||
- Y Offset -
|
||||
active: false
|
||||
- Spawn Shape -
|
||||
shape: square
|
||||
- Spawn Width -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 200.0
|
||||
highMax: 200.0
|
||||
relative: true
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Spawn Height -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 200.0
|
||||
highMax: 200.0
|
||||
relative: true
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- X Scale -
|
||||
lowMin: 300.0
|
||||
lowMax: 300.0
|
||||
highMin: 400.0
|
||||
highMax: 400.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Y Scale -
|
||||
active: false
|
||||
- Velocity -
|
||||
active: true
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 3.0
|
||||
highMax: 3.0
|
||||
relative: true
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Angle -
|
||||
active: true
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 0.0
|
||||
highMax: 0.0
|
||||
relative: false
|
||||
scalingCount: 3
|
||||
scaling0: 0.0
|
||||
scaling1: 0.0
|
||||
scaling2: 0.0
|
||||
timelineCount: 3
|
||||
timeline0: 0.0
|
||||
timeline1: 0.5
|
||||
timeline2: 1.0
|
||||
- Rotation -
|
||||
active: false
|
||||
- Wind -
|
||||
active: false
|
||||
- Gravity -
|
||||
active: false
|
||||
- Tint -
|
||||
colorsCount: 3
|
||||
colors0: 1.0
|
||||
colors1: 1.0
|
||||
colors2: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Transparency -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 1.0
|
||||
highMax: 1.0
|
||||
relative: false
|
||||
scalingCount: 4
|
||||
scaling0: 1.0
|
||||
scaling1: 1.0
|
||||
scaling2: 1.0
|
||||
scaling3: 1.0
|
||||
timelineCount: 4
|
||||
timeline0: 0.0
|
||||
timeline1: 0.25342464
|
||||
timeline2: 0.60761464
|
||||
timeline3: 0.98057497
|
||||
- Options -
|
||||
attached: false
|
||||
continuous: false
|
||||
aligned: false
|
||||
additive: false
|
||||
behind: false
|
||||
premultipliedAlpha: false
|
||||
spriteMode: random
|
||||
- Image Paths -
|
||||
explosion.png
|
||||
boom.png
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
|
@ -0,0 +1,313 @@
|
|||
explosion
|
||||
- Delay -
|
||||
active: false
|
||||
- Duration -
|
||||
lowMin: 1000.0
|
||||
lowMax: 1000.0
|
||||
- Count -
|
||||
min: 0
|
||||
max: 200
|
||||
- Emission -
|
||||
lowMin: 2.0
|
||||
lowMax: 2.0
|
||||
highMin: 5.0
|
||||
highMax: 5.0
|
||||
relative: false
|
||||
scalingCount: 5
|
||||
scaling0: 1.0
|
||||
scaling1: 1.0
|
||||
scaling2: 1.0
|
||||
scaling3: 1.0
|
||||
scaling4: 0.59183675
|
||||
timelineCount: 5
|
||||
timeline0: 0.0
|
||||
timeline1: 0.1509288
|
||||
timeline2: 0.39041096
|
||||
timeline3: 0.72602737
|
||||
timeline4: 0.86986303
|
||||
- Life -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 200.0
|
||||
highMax: 1000.0
|
||||
relative: false
|
||||
scalingCount: 6
|
||||
scaling0: 1.0
|
||||
scaling1: 1.0
|
||||
scaling2: 1.0
|
||||
scaling3: 1.0
|
||||
scaling4: 1.0
|
||||
scaling5: 1.0
|
||||
timelineCount: 6
|
||||
timeline0: 0.0
|
||||
timeline1: 0.113777086
|
||||
timeline2: 0.47678018
|
||||
timeline3: 0.5944272
|
||||
timeline4: 0.7972136
|
||||
timeline5: 0.89860684
|
||||
independent: false
|
||||
- Life Offset -
|
||||
active: false
|
||||
independent: false
|
||||
- X Offset -
|
||||
active: false
|
||||
- Y Offset -
|
||||
active: false
|
||||
- Spawn Shape -
|
||||
shape: square
|
||||
- Spawn Width -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 200.0
|
||||
highMax: 200.0
|
||||
relative: false
|
||||
scalingCount: 2
|
||||
scaling0: 1.0
|
||||
scaling1: 0.0
|
||||
timelineCount: 2
|
||||
timeline0: 0.0
|
||||
timeline1: 0.98630136
|
||||
- Spawn Height -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 200.0
|
||||
highMax: 200.0
|
||||
relative: false
|
||||
scalingCount: 2
|
||||
scaling0: 1.0
|
||||
scaling1: 0.020408163
|
||||
timelineCount: 2
|
||||
timeline0: 0.0
|
||||
timeline1: 1.0
|
||||
- X Scale -
|
||||
lowMin: 40.0
|
||||
lowMax: 40.0
|
||||
highMin: 80.0
|
||||
highMax: 100.0
|
||||
relative: true
|
||||
scalingCount: 6
|
||||
scaling0: 0.039325844
|
||||
scaling1: 0.2977528
|
||||
scaling2: 0.6011236
|
||||
scaling3: 0.71910113
|
||||
scaling4: 0.8707865
|
||||
scaling5: 1.0
|
||||
timelineCount: 6
|
||||
timeline0: 0.0
|
||||
timeline1: 0.16331269
|
||||
timeline2: 0.29256967
|
||||
timeline3: 0.46826625
|
||||
timeline4: 0.65634674
|
||||
timeline5: 0.996904
|
||||
- Y Scale -
|
||||
active: false
|
||||
- Velocity -
|
||||
active: true
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 3.0
|
||||
highMax: 3.0
|
||||
relative: true
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Angle -
|
||||
active: true
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 0.0
|
||||
highMax: 0.0
|
||||
relative: false
|
||||
scalingCount: 3
|
||||
scaling0: 0.0
|
||||
scaling1: 0.0
|
||||
scaling2: 0.0
|
||||
timelineCount: 3
|
||||
timeline0: 0.0
|
||||
timeline1: 0.5
|
||||
timeline2: 1.0
|
||||
- Rotation -
|
||||
active: false
|
||||
- Wind -
|
||||
active: false
|
||||
- Gravity -
|
||||
active: true
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 0.0
|
||||
highMax: 0.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Tint -
|
||||
colorsCount: 3
|
||||
colors0: 1.0
|
||||
colors1: 1.0
|
||||
colors2: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Transparency -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 1.0
|
||||
highMax: 1.0
|
||||
relative: false
|
||||
scalingCount: 4
|
||||
scaling0: 0.0
|
||||
scaling1: 0.6666667
|
||||
scaling2: 0.84210527
|
||||
scaling3: 0.24561404
|
||||
timelineCount: 4
|
||||
timeline0: 0.0
|
||||
timeline1: 0.26027396
|
||||
timeline2: 0.60273975
|
||||
timeline3: 0.9109589
|
||||
- Options -
|
||||
attached: false
|
||||
continuous: false
|
||||
aligned: false
|
||||
additive: false
|
||||
behind: false
|
||||
premultipliedAlpha: false
|
||||
spriteMode: single
|
||||
- Image Paths -
|
||||
explosion.png
|
||||
|
||||
|
||||
boom
|
||||
- Delay -
|
||||
active: false
|
||||
- Duration -
|
||||
lowMin: 1500.0
|
||||
lowMax: 1500.0
|
||||
- Count -
|
||||
min: 0
|
||||
max: 25
|
||||
- Emission -
|
||||
lowMin: 1.0
|
||||
lowMax: 1.0
|
||||
highMin: 2.0
|
||||
highMax: 2.0
|
||||
relative: false
|
||||
scalingCount: 5
|
||||
scaling0: 0.0
|
||||
scaling1: 1.0
|
||||
scaling2: 0.67346936
|
||||
scaling3: 0.0
|
||||
scaling4: 0.0
|
||||
timelineCount: 5
|
||||
timeline0: 0.0
|
||||
timeline1: 0.15413533
|
||||
timeline2: 0.42465752
|
||||
timeline3: 0.5068493
|
||||
timeline4: 0.99303406
|
||||
- Life -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 500.0
|
||||
highMax: 500.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
independent: false
|
||||
- Life Offset -
|
||||
active: false
|
||||
independent: false
|
||||
- X Offset -
|
||||
active: false
|
||||
- Y Offset -
|
||||
active: false
|
||||
- Spawn Shape -
|
||||
shape: ellipse
|
||||
edges: false
|
||||
side: both
|
||||
- Spawn Width -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 100.0
|
||||
highMax: 100.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Spawn Height -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 100.0
|
||||
highMax: 100.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- X Scale -
|
||||
lowMin: 10.0
|
||||
lowMax: 10.0
|
||||
highMin: 30.0
|
||||
highMax: 80.0
|
||||
relative: false
|
||||
scalingCount: 3
|
||||
scaling0: 0.37078652
|
||||
scaling1: 0.75842696
|
||||
scaling2: 0.96067417
|
||||
timelineCount: 3
|
||||
timeline0: 0.0
|
||||
timeline1: 0.38467494
|
||||
timeline2: 0.996904
|
||||
- Y Scale -
|
||||
active: false
|
||||
- Velocity -
|
||||
active: false
|
||||
- Angle -
|
||||
active: false
|
||||
- Rotation -
|
||||
active: true
|
||||
lowMin: -15.0
|
||||
lowMax: -15.0
|
||||
highMin: 5.0
|
||||
highMax: 5.0
|
||||
relative: false
|
||||
scalingCount: 2
|
||||
scaling0: 0.0
|
||||
scaling1: 1.0
|
||||
timelineCount: 2
|
||||
timeline0: 0.0
|
||||
timeline1: 1.0
|
||||
- Wind -
|
||||
active: false
|
||||
- Gravity -
|
||||
active: false
|
||||
- Tint -
|
||||
colorsCount: 3
|
||||
colors0: 1.0
|
||||
colors1: 1.0
|
||||
colors2: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Transparency -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 1.0
|
||||
highMax: 1.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Options -
|
||||
attached: false
|
||||
continuous: false
|
||||
aligned: false
|
||||
additive: true
|
||||
behind: false
|
||||
premultipliedAlpha: false
|
||||
spriteMode: single
|
||||
- Image Paths -
|
||||
boom.png
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
|
@ -0,0 +1,313 @@
|
|||
explosion
|
||||
- Delay -
|
||||
active: false
|
||||
- Duration -
|
||||
lowMin: 1000.0
|
||||
lowMax: 1000.0
|
||||
- Count -
|
||||
min: 0
|
||||
max: 200
|
||||
- Emission -
|
||||
lowMin: 2.0
|
||||
lowMax: 2.0
|
||||
highMin: 5.0
|
||||
highMax: 5.0
|
||||
relative: false
|
||||
scalingCount: 5
|
||||
scaling0: 1.0
|
||||
scaling1: 1.0
|
||||
scaling2: 1.0
|
||||
scaling3: 1.0
|
||||
scaling4: 0.59183675
|
||||
timelineCount: 5
|
||||
timeline0: 0.0
|
||||
timeline1: 0.1509288
|
||||
timeline2: 0.39041096
|
||||
timeline3: 0.72602737
|
||||
timeline4: 0.86986303
|
||||
- Life -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 200.0
|
||||
highMax: 1000.0
|
||||
relative: false
|
||||
scalingCount: 6
|
||||
scaling0: 1.0
|
||||
scaling1: 1.0
|
||||
scaling2: 1.0
|
||||
scaling3: 1.0
|
||||
scaling4: 1.0
|
||||
scaling5: 1.0
|
||||
timelineCount: 6
|
||||
timeline0: 0.0
|
||||
timeline1: 0.113777086
|
||||
timeline2: 0.47678018
|
||||
timeline3: 0.5944272
|
||||
timeline4: 0.7972136
|
||||
timeline5: 0.89860684
|
||||
independent: false
|
||||
- Life Offset -
|
||||
active: false
|
||||
independent: false
|
||||
- X Offset -
|
||||
active: false
|
||||
- Y Offset -
|
||||
active: false
|
||||
- Spawn Shape -
|
||||
shape: square
|
||||
- Spawn Width -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 100.0
|
||||
highMax: 100.0
|
||||
relative: false
|
||||
scalingCount: 2
|
||||
scaling0: 1.0
|
||||
scaling1: 0.0
|
||||
timelineCount: 2
|
||||
timeline0: 0.0
|
||||
timeline1: 0.98630136
|
||||
- Spawn Height -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 100.0
|
||||
highMax: 100.0
|
||||
relative: false
|
||||
scalingCount: 2
|
||||
scaling0: 1.0
|
||||
scaling1: 0.020408163
|
||||
timelineCount: 2
|
||||
timeline0: 0.0
|
||||
timeline1: 1.0
|
||||
- X Scale -
|
||||
lowMin: 40.0
|
||||
lowMax: 40.0
|
||||
highMin: 50.0
|
||||
highMax: 70.0
|
||||
relative: true
|
||||
scalingCount: 6
|
||||
scaling0: 0.039325844
|
||||
scaling1: 0.2977528
|
||||
scaling2: 0.6011236
|
||||
scaling3: 0.71910113
|
||||
scaling4: 0.8707865
|
||||
scaling5: 1.0
|
||||
timelineCount: 6
|
||||
timeline0: 0.0
|
||||
timeline1: 0.16331269
|
||||
timeline2: 0.29256967
|
||||
timeline3: 0.46826625
|
||||
timeline4: 0.65634674
|
||||
timeline5: 0.996904
|
||||
- Y Scale -
|
||||
active: false
|
||||
- Velocity -
|
||||
active: true
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 3.0
|
||||
highMax: 3.0
|
||||
relative: true
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Angle -
|
||||
active: true
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 0.0
|
||||
highMax: 0.0
|
||||
relative: false
|
||||
scalingCount: 3
|
||||
scaling0: 0.0
|
||||
scaling1: 0.0
|
||||
scaling2: 0.0
|
||||
timelineCount: 3
|
||||
timeline0: 0.0
|
||||
timeline1: 0.5
|
||||
timeline2: 1.0
|
||||
- Rotation -
|
||||
active: false
|
||||
- Wind -
|
||||
active: false
|
||||
- Gravity -
|
||||
active: true
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 0.0
|
||||
highMax: 0.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Tint -
|
||||
colorsCount: 3
|
||||
colors0: 1.0
|
||||
colors1: 1.0
|
||||
colors2: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Transparency -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 1.0
|
||||
highMax: 1.0
|
||||
relative: false
|
||||
scalingCount: 4
|
||||
scaling0: 0.0
|
||||
scaling1: 0.71929824
|
||||
scaling2: 0.8596491
|
||||
scaling3: 0.36842105
|
||||
timelineCount: 4
|
||||
timeline0: 0.0
|
||||
timeline1: 0.33561644
|
||||
timeline2: 0.65753424
|
||||
timeline3: 0.96575344
|
||||
- Options -
|
||||
attached: false
|
||||
continuous: false
|
||||
aligned: false
|
||||
additive: false
|
||||
behind: false
|
||||
premultipliedAlpha: false
|
||||
spriteMode: single
|
||||
- Image Paths -
|
||||
explosion.png
|
||||
|
||||
|
||||
boom
|
||||
- Delay -
|
||||
active: false
|
||||
- Duration -
|
||||
lowMin: 1500.0
|
||||
lowMax: 1500.0
|
||||
- Count -
|
||||
min: 0
|
||||
max: 25
|
||||
- Emission -
|
||||
lowMin: 1.0
|
||||
lowMax: 1.0
|
||||
highMin: 2.0
|
||||
highMax: 2.0
|
||||
relative: false
|
||||
scalingCount: 5
|
||||
scaling0: 0.0
|
||||
scaling1: 1.0
|
||||
scaling2: 0.67346936
|
||||
scaling3: 0.0
|
||||
scaling4: 0.0
|
||||
timelineCount: 5
|
||||
timeline0: 0.0
|
||||
timeline1: 0.15413533
|
||||
timeline2: 0.42465752
|
||||
timeline3: 0.5068493
|
||||
timeline4: 0.99303406
|
||||
- Life -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 500.0
|
||||
highMax: 500.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
independent: false
|
||||
- Life Offset -
|
||||
active: false
|
||||
independent: false
|
||||
- X Offset -
|
||||
active: false
|
||||
- Y Offset -
|
||||
active: false
|
||||
- Spawn Shape -
|
||||
shape: ellipse
|
||||
edges: false
|
||||
side: both
|
||||
- Spawn Width -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 100.0
|
||||
highMax: 100.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Spawn Height -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 100.0
|
||||
highMax: 100.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- X Scale -
|
||||
lowMin: 10.0
|
||||
lowMax: 10.0
|
||||
highMin: 30.0
|
||||
highMax: 80.0
|
||||
relative: false
|
||||
scalingCount: 3
|
||||
scaling0: 0.37078652
|
||||
scaling1: 0.75842696
|
||||
scaling2: 0.96067417
|
||||
timelineCount: 3
|
||||
timeline0: 0.0
|
||||
timeline1: 0.38467494
|
||||
timeline2: 0.996904
|
||||
- Y Scale -
|
||||
active: false
|
||||
- Velocity -
|
||||
active: false
|
||||
- Angle -
|
||||
active: false
|
||||
- Rotation -
|
||||
active: true
|
||||
lowMin: -15.0
|
||||
lowMax: -15.0
|
||||
highMin: 5.0
|
||||
highMax: 5.0
|
||||
relative: false
|
||||
scalingCount: 2
|
||||
scaling0: 0.0
|
||||
scaling1: 1.0
|
||||
timelineCount: 2
|
||||
timeline0: 0.0
|
||||
timeline1: 1.0
|
||||
- Wind -
|
||||
active: false
|
||||
- Gravity -
|
||||
active: false
|
||||
- Tint -
|
||||
colorsCount: 3
|
||||
colors0: 1.0
|
||||
colors1: 1.0
|
||||
colors2: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Transparency -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 1.0
|
||||
highMax: 1.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Options -
|
||||
attached: false
|
||||
continuous: false
|
||||
aligned: false
|
||||
additive: true
|
||||
behind: false
|
||||
premultipliedAlpha: false
|
||||
spriteMode: single
|
||||
- Image Paths -
|
||||
boom.png
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
slugs
|
||||
- Delay -
|
||||
active: false
|
||||
- Duration -
|
||||
lowMin: 10000.0
|
||||
lowMax: 10000.0
|
||||
- Count -
|
||||
min: 0
|
||||
max: 200
|
||||
- Emission -
|
||||
lowMin: 2.0
|
||||
lowMax: 2.0
|
||||
highMin: 4.0
|
||||
highMax: 4.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Life -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 500.0
|
||||
highMax: 750.0
|
||||
relative: false
|
||||
scalingCount: 3
|
||||
scaling0: 1.0
|
||||
scaling1: 1.0
|
||||
scaling2: 1.0
|
||||
timelineCount: 3
|
||||
timeline0: 0.0
|
||||
timeline1: 0.66
|
||||
timeline2: 1.0
|
||||
independent: false
|
||||
- Life Offset -
|
||||
active: false
|
||||
independent: false
|
||||
- X Offset -
|
||||
active: false
|
||||
- Y Offset -
|
||||
active: false
|
||||
- Spawn Shape -
|
||||
shape: square
|
||||
- Spawn Width -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 60.0
|
||||
highMax: 60.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Spawn Height -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 60.0
|
||||
highMax: 60.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- X Scale -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 20.0
|
||||
highMax: 20.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Y Scale -
|
||||
active: false
|
||||
- Velocity -
|
||||
active: true
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 0.0
|
||||
highMax: 0.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Angle -
|
||||
active: true
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 359.0
|
||||
highMax: 359.0
|
||||
relative: false
|
||||
scalingCount: 3
|
||||
scaling0: 0.0
|
||||
scaling1: 1.0
|
||||
scaling2: 1.0
|
||||
timelineCount: 3
|
||||
timeline0: 0.0
|
||||
timeline1: 0.999
|
||||
timeline2: 1.0
|
||||
- Rotation -
|
||||
active: false
|
||||
- Wind -
|
||||
active: false
|
||||
- Gravity -
|
||||
active: false
|
||||
- Tint -
|
||||
colorsCount: 9
|
||||
colors0: 1.0
|
||||
colors1: 1.0
|
||||
colors2: 1.0
|
||||
colors3: 1.0
|
||||
colors4: 1.0
|
||||
colors5: 1.0
|
||||
colors6: 1.0
|
||||
colors7: 1.0
|
||||
colors8: 1.0
|
||||
timelineCount: 3
|
||||
timeline0: 0.0
|
||||
timeline1: 0.01
|
||||
timeline2: 1.0
|
||||
- Transparency -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 1.0
|
||||
highMax: 1.0
|
||||
relative: false
|
||||
scalingCount: 4
|
||||
scaling0: 0.0
|
||||
scaling1: 1.0
|
||||
scaling2: 1.0
|
||||
scaling3: 0.0
|
||||
timelineCount: 4
|
||||
timeline0: 0.0
|
||||
timeline1: 0.21232876
|
||||
timeline2: 0.65068495
|
||||
timeline3: 0.9794521
|
||||
- Options -
|
||||
attached: false
|
||||
continuous: false
|
||||
aligned: false
|
||||
additive: false
|
||||
behind: false
|
||||
premultipliedAlpha: false
|
||||
spriteMode: single
|
||||
- Image Paths -
|
||||
/home/emamaker/github/amazeing/gdx/core/assets/data/powerups/feather.png
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
slugs
|
||||
- Delay -
|
||||
active: false
|
||||
- Duration -
|
||||
lowMin: 15000.0
|
||||
lowMax: 15000.0
|
||||
- Count -
|
||||
min: 0
|
||||
max: 200
|
||||
- Emission -
|
||||
lowMin: 2.0
|
||||
lowMax: 2.0
|
||||
highMin: 4.0
|
||||
highMax: 4.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Life -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 500.0
|
||||
highMax: 750.0
|
||||
relative: false
|
||||
scalingCount: 3
|
||||
scaling0: 1.0
|
||||
scaling1: 1.0
|
||||
scaling2: 1.0
|
||||
timelineCount: 3
|
||||
timeline0: 0.0
|
||||
timeline1: 0.66
|
||||
timeline2: 1.0
|
||||
independent: false
|
||||
- Life Offset -
|
||||
active: false
|
||||
independent: false
|
||||
- X Offset -
|
||||
active: false
|
||||
- Y Offset -
|
||||
active: false
|
||||
- Spawn Shape -
|
||||
shape: square
|
||||
- Spawn Width -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 60.0
|
||||
highMax: 60.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Spawn Height -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 60.0
|
||||
highMax: 60.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- X Scale -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 20.0
|
||||
highMax: 20.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Y Scale -
|
||||
active: false
|
||||
- Velocity -
|
||||
active: true
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 0.0
|
||||
highMax: 0.0
|
||||
relative: false
|
||||
scalingCount: 1
|
||||
scaling0: 1.0
|
||||
timelineCount: 1
|
||||
timeline0: 0.0
|
||||
- Angle -
|
||||
active: true
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 359.0
|
||||
highMax: 359.0
|
||||
relative: false
|
||||
scalingCount: 3
|
||||
scaling0: 0.0
|
||||
scaling1: 1.0
|
||||
scaling2: 1.0
|
||||
timelineCount: 3
|
||||
timeline0: 0.0
|
||||
timeline1: 0.999
|
||||
timeline2: 1.0
|
||||
- Rotation -
|
||||
active: false
|
||||
- Wind -
|
||||
active: false
|
||||
- Gravity -
|
||||
active: false
|
||||
- Tint -
|
||||
colorsCount: 9
|
||||
colors0: 0.58431375
|
||||
colors1: 0.8784314
|
||||
colors2: 0.43529412
|
||||
colors3: 0.0
|
||||
colors4: 0.0
|
||||
colors5: 0.0
|
||||
colors6: 1.0
|
||||
colors7: 1.0
|
||||
colors8: 1.0
|
||||
timelineCount: 3
|
||||
timeline0: 0.0
|
||||
timeline1: 0.050933786
|
||||
timeline2: 1.0
|
||||
- Transparency -
|
||||
lowMin: 0.0
|
||||
lowMax: 0.0
|
||||
highMin: 1.0
|
||||
highMax: 1.0
|
||||
relative: false
|
||||
scalingCount: 4
|
||||
scaling0: 0.0
|
||||
scaling1: 1.0
|
||||
scaling2: 1.0
|
||||
scaling3: 0.0
|
||||
timelineCount: 4
|
||||
timeline0: 0.0
|
||||
timeline1: 0.21232876
|
||||
timeline2: 0.65068495
|
||||
timeline3: 0.9794521
|
||||
- Options -
|
||||
attached: false
|
||||
continuous: false
|
||||
aligned: false
|
||||
additive: false
|
||||
behind: false
|
||||
premultipliedAlpha: false
|
||||
spriteMode: single
|
||||
- Image Paths -
|
||||
/home/emamaker/github/amazeing/gdx/core/assets/data/powerups/slug.png
|
||||
|
|
@ -6,7 +6,10 @@ import com.badlogic.gdx.Game;
|
|||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.InputMultiplexer;
|
||||
import com.badlogic.gdx.graphics.FPSLogger;
|
||||
import com.badlogic.gdx.graphics.g2d.ParticleEffectPool.PooledEffect;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.physics.bullet.Bullet;
|
||||
import com.badlogic.gdx.utils.Array;
|
||||
import com.emamaker.amazeing.manager.GameManager;
|
||||
import com.emamaker.amazeing.manager.managers.GameManagerLocal;
|
||||
import com.emamaker.amazeing.manager.network.GameClient;
|
||||
|
@ -39,6 +42,12 @@ public class AMazeIng extends Game {
|
|||
|
||||
public static Platform PLATFORM;
|
||||
|
||||
public float delta = 0;
|
||||
|
||||
public SpriteBatch spriteBatch;
|
||||
public Array<PooledEffect> effects = new Array<PooledEffect>();
|
||||
|
||||
|
||||
public AMazeIng(Platform p) {
|
||||
PLATFORM = p;
|
||||
}
|
||||
|
@ -68,6 +77,8 @@ public class AMazeIng extends Game {
|
|||
setupGUI();
|
||||
setupGameManager();
|
||||
setupPowerUps();
|
||||
|
||||
spriteBatch = new SpriteBatch();
|
||||
}
|
||||
|
||||
public void setupGUI() {
|
||||
|
@ -94,17 +105,43 @@ public class AMazeIng extends Game {
|
|||
@Override
|
||||
public void render() {
|
||||
super.render();
|
||||
delta = Math.min(1f / 30f, Gdx.graphics.getDeltaTime());
|
||||
|
||||
server.update();
|
||||
client.update();
|
||||
gameManager.update();
|
||||
|
||||
spriteBatch.begin();
|
||||
// Update and draw effects:
|
||||
for (int i = effects.size - 1; i >= 0; i--) {
|
||||
PooledEffect effect = effects.get(i);
|
||||
effect.draw(spriteBatch, delta);
|
||||
if (effect.isComplete()) {
|
||||
effect.free();
|
||||
effects.removeIndex(i);
|
||||
}
|
||||
}
|
||||
spriteBatch.end();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
gameManager.dispose();
|
||||
client.stop();
|
||||
if (server.isRunning())
|
||||
client.stop(true);
|
||||
else
|
||||
client.stop();
|
||||
server.stop();
|
||||
world.dispose();
|
||||
clearEffects();
|
||||
}
|
||||
|
||||
public void clearEffects() {
|
||||
// Reset all effects:
|
||||
for (int i = effects.size - 1; i >= 0; i--)
|
||||
effects.get(i).free(); //free all the effects back to the pool
|
||||
effects.clear(); //clear the current effects array
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -173,8 +173,10 @@ public class GameManager {
|
|||
|
||||
public void checkWin() {
|
||||
for (MazePlayer p : players)
|
||||
if (checkWin(p))
|
||||
if (checkWin(p)) {
|
||||
setFinished();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public void setFinished() {
|
||||
|
@ -183,7 +185,7 @@ public class GameManager {
|
|||
|
||||
for (MazePlayer p : players)
|
||||
p.disablePowerUp();
|
||||
|
||||
main.clearEffects();
|
||||
}
|
||||
|
||||
public boolean getFinished() {
|
||||
|
@ -321,7 +323,7 @@ public class GameManager {
|
|||
}
|
||||
|
||||
public void requestChangeToMap(int[][] todraw) {
|
||||
mazeGen.requestChangeToMap(todraw);
|
||||
mazeGen.show(todraw);
|
||||
}
|
||||
|
||||
public void resetCamera() {
|
||||
|
|
|
@ -10,7 +10,6 @@ import com.emamaker.amazeing.AMazeIng;
|
|||
import com.emamaker.amazeing.manager.managers.GameManagerClient;
|
||||
import com.emamaker.amazeing.manager.network.action.NetworkAction;
|
||||
import com.emamaker.amazeing.manager.network.action.actions.client.game.NACGameStatusUpdate;
|
||||
import com.emamaker.amazeing.manager.network.action.actions.client.game.NACServerClosed;
|
||||
import com.emamaker.amazeing.manager.network.action.actions.client.game.NACUpdateMap;
|
||||
import com.emamaker.amazeing.manager.network.action.actions.client.login.NACLoginAO;
|
||||
import com.emamaker.amazeing.manager.network.action.actions.client.login.NACLoginAO2;
|
||||
|
@ -22,6 +21,7 @@ import com.emamaker.amazeing.maze.settings.MazeSettings;
|
|||
import com.emamaker.amazeing.player.MazePlayer;
|
||||
import com.emamaker.amazeing.player.MazePlayerLocal;
|
||||
import com.emamaker.amazeing.player.PlayerUtils;
|
||||
import com.emamaker.amazeing.utils.MathUtils.Constants;
|
||||
import com.esotericsoftware.kryonet.Client;
|
||||
|
||||
public class GameClient extends NetworkHandler {
|
||||
|
@ -29,7 +29,7 @@ public class GameClient extends NetworkHandler {
|
|||
public Client client;
|
||||
String addr;
|
||||
|
||||
boolean updateMobilePlayers = false;
|
||||
boolean updateMobilePlayers = true;
|
||||
|
||||
public CopyOnWriteArrayList<String> localPlayers = new CopyOnWriteArrayList<String>();
|
||||
|
||||
|
@ -72,7 +72,6 @@ public class GameClient extends NetworkHandler {
|
|||
actions.add(new NACUpdatePlayerPosForced(this));
|
||||
actions.add(new NACUpdatePlayersPos(this));
|
||||
actions.add(new NACUpdateOtherPlayerPos(this));
|
||||
actions.add(new NACServerClosed(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -85,6 +84,12 @@ public class GameClient extends NetworkHandler {
|
|||
super.update();
|
||||
|
||||
if (isRunning()) {
|
||||
//Check if the server disconnected or it's timing out
|
||||
if(!client.isConnected() || ((NACGameStatusUpdate.gotMessage && System.currentTimeMillis() - NACGameStatusUpdate.lastMsgTime > Constants.COMMUNICATION_TIMEOUT_MILLIS))) {
|
||||
stop(true);
|
||||
main.uiManager.srvJoinScreen.showErrorDlg(1);
|
||||
}
|
||||
//Normal client update
|
||||
if (gameManager != null) {
|
||||
if (gameManager.gameStarted) {
|
||||
} else {
|
||||
|
@ -106,26 +111,39 @@ public class GameClient extends NetworkHandler {
|
|||
|
||||
@Override
|
||||
public void stop() {
|
||||
stop(false);
|
||||
}
|
||||
|
||||
public void stop(boolean fromserver) {
|
||||
if (isRunning()) {
|
||||
for (String s : localPlayers) {
|
||||
((NACRemovePlayer) getActionByClass(NACRemovePlayer.class)).startAction(null, null, s);
|
||||
if (!fromserver) {
|
||||
for (String s : localPlayers) {
|
||||
((NACRemovePlayer) getActionByClass(NACRemovePlayer.class)).startAction(null, null, s);
|
||||
}
|
||||
}
|
||||
|
||||
for (MazePlayer p : players.values())
|
||||
p.dispose();
|
||||
players.clear();
|
||||
|
||||
for (NetworkAction n : pendingActions)
|
||||
n.onParentClosing();
|
||||
|
||||
while (!pendingActions.isEmpty())
|
||||
update();
|
||||
if (!fromserver) {
|
||||
for (NetworkAction n : pendingActions)
|
||||
n.onParentClosing();
|
||||
|
||||
while (!pendingActions.isEmpty())
|
||||
update();
|
||||
}
|
||||
|
||||
pendingActions.clear();
|
||||
todoActions.clear();
|
||||
actions.clear();
|
||||
|
||||
client.stop();
|
||||
running = false;
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* CHECKING FOR NEW PLAYERS */
|
||||
|
|
|
@ -7,7 +7,6 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||
|
||||
import com.emamaker.amazeing.manager.managers.GameManagerServer;
|
||||
import com.emamaker.amazeing.manager.network.action.actions.server.game.NASGameStatusUpdate;
|
||||
import com.emamaker.amazeing.manager.network.action.actions.server.game.NASServerClosed;
|
||||
import com.emamaker.amazeing.manager.network.action.actions.server.game.NASUpdateMap;
|
||||
import com.emamaker.amazeing.manager.network.action.actions.server.login.NASLoginAO2;
|
||||
import com.emamaker.amazeing.manager.network.action.actions.server.login.NASLoginUUID;
|
||||
|
@ -15,6 +14,7 @@ import com.emamaker.amazeing.manager.network.action.actions.server.login.NASRemo
|
|||
import com.emamaker.amazeing.manager.network.action.actions.server.player.NASUpdatePlayerPos;
|
||||
import com.emamaker.amazeing.manager.network.action.actions.server.player.NASUpdatePlayerPosForced;
|
||||
import com.emamaker.amazeing.player.MazePlayer;
|
||||
import com.emamaker.amazeing.utils.MathUtils.Constants;
|
||||
import com.esotericsoftware.kryonet.Server;
|
||||
|
||||
public class GameServer extends NetworkHandler {
|
||||
|
@ -26,7 +26,6 @@ public class GameServer extends NetworkHandler {
|
|||
// Returns true if the server started successfully
|
||||
public boolean start(int port_) {
|
||||
port = port_;
|
||||
running = true;
|
||||
try {
|
||||
server = new Server();
|
||||
// For consistency, the classes to be sent over the network are
|
||||
|
@ -41,6 +40,8 @@ public class GameServer extends NetworkHandler {
|
|||
startDefaultActions();
|
||||
|
||||
System.out.println("Server registered and running on port " + port);
|
||||
|
||||
running = true;
|
||||
return true;
|
||||
|
||||
} catch (IOException e) {
|
||||
|
@ -59,7 +60,6 @@ public class GameServer extends NetworkHandler {
|
|||
actions.add(new NASUpdateMap(this));
|
||||
actions.add(new NASUpdatePlayerPosForced(this));
|
||||
actions.add(new NASUpdatePlayerPos(this));
|
||||
actions.add(new NASServerClosed(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -68,6 +68,22 @@ public class GameServer extends NetworkHandler {
|
|||
// getActionByClass(NAServerUpdatePlayers.class).startAction(null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
super.update();
|
||||
|
||||
if(isRunning()) {
|
||||
//Check if there's some player not responding that needs to be removed
|
||||
for(String s: players.keySet()) {
|
||||
if(System.currentTimeMillis() - players.get(s).LAST_NETWORK_TIME > Constants.COMMUNICATION_TIMEOUT_MILLIS) {
|
||||
players.get(s).dispose();
|
||||
players.remove(s);
|
||||
}
|
||||
System.out.println(Arrays.toString(players.values().toArray()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void periodicNonGameUpdate() {
|
||||
}
|
||||
|
@ -99,9 +115,12 @@ public class GameServer extends NetworkHandler {
|
|||
for (MazePlayer p : players.values()) {
|
||||
p.dispose();
|
||||
players.clear();
|
||||
getActionByClass(NASServerClosed.class).startAction(null, null);
|
||||
server.stop();
|
||||
running = false;
|
||||
|
||||
pendingActions.clear();
|
||||
todoActions.clear();
|
||||
actions.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
package com.emamaker.amazeing.manager.network;
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
import com.badlogic.gdx.math.Vector3;
|
||||
import com.emamaker.amazeing.AMazeIng;
|
||||
import com.emamaker.amazeing.manager.GameManager;
|
||||
|
@ -12,6 +8,10 @@ import com.emamaker.amazeing.manager.network.NetworkCommon.UpdatePlayerPosition;
|
|||
import com.emamaker.amazeing.manager.network.action.NetworkAction;
|
||||
import com.emamaker.amazeing.player.MazePlayer;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
public abstract class NetworkHandler {
|
||||
|
||||
public ConcurrentHashMap<String, MazePlayer> players = new ConcurrentHashMap<String, MazePlayer>();
|
||||
|
@ -26,7 +26,7 @@ public abstract class NetworkHandler {
|
|||
// Some actions (such as the first step of login) cannot be done in multiple
|
||||
// instances at the same time
|
||||
// Actions of this type have to be stored here
|
||||
public ConcurrentLinkedQueue<NetworkAction> todoActions = new ConcurrentLinkedQueue<>();
|
||||
public CopyOnWriteArrayList<NetworkAction> todoActions = new CopyOnWriteArrayList<>();
|
||||
CopyOnWriteArrayList<NetworkAction> deletePending = new CopyOnWriteArrayList<>();
|
||||
|
||||
int port;
|
||||
|
@ -61,12 +61,24 @@ public abstract class NetworkHandler {
|
|||
}
|
||||
|
||||
public void updatePending() {
|
||||
if (!todoActions.isEmpty()) {
|
||||
if (!alreadyPending(todoActions.peek()))
|
||||
todoActions.peek().startAction(null, null);
|
||||
addToPending(todoActions.remove());
|
||||
//System.out.println(Arrays.toString(todoActions.toArray()));
|
||||
for(NetworkAction a : todoActions) {
|
||||
if(!alreadyPending(a)) {
|
||||
System.out.println(a);
|
||||
addToPending(a);
|
||||
todoActions.remove(a);
|
||||
}
|
||||
}
|
||||
|
||||
// if (!todoActions.isEmpty()) {
|
||||
// System.out.println("Actions queue: " + Arrays.toString(todoActions.toArray()));
|
||||
// if (!alreadyPending(todoActions.peek())) {
|
||||
// todoActions.peek().startAction(null, null);
|
||||
// System.out.println("Getting action from queue: " + todoActions.peek());
|
||||
// addToPending(todoActions.remove());
|
||||
// }
|
||||
// }
|
||||
|
||||
for (NetworkAction n : pendingActions)
|
||||
n.update();
|
||||
}
|
||||
|
@ -75,7 +87,7 @@ public abstract class NetworkHandler {
|
|||
* Unluckily, we can't check if a specific action is already pending. But we can
|
||||
* check if there's another type of the same action running. NetworkActions can
|
||||
* override the startAction method to be started even if there's another one
|
||||
* already running (e.g. PositionUpdates)
|
||||
* already running (e.g. Player Removal)
|
||||
*/
|
||||
public boolean alreadyPending(NetworkAction act) {
|
||||
for (NetworkAction a : pendingActions) {
|
||||
|
@ -83,6 +95,10 @@ public abstract class NetworkHandler {
|
|||
// System.out.println("Already pending " + act);
|
||||
return true;
|
||||
}
|
||||
/*for(int i = 0; i < act.maskActions.length; i++){
|
||||
if(a.getClass().isAssignableFrom(a.maskActions[i].getClass())) return true;
|
||||
}*/
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -94,6 +110,7 @@ public abstract class NetworkHandler {
|
|||
}
|
||||
|
||||
public void addToPending(NetworkAction a) {
|
||||
a.registerEndListener();
|
||||
pendingActions.add(a);
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ import com.emamaker.amazeing.AMazeIng;
|
|||
import com.emamaker.amazeing.manager.network.GameClient;
|
||||
import com.emamaker.amazeing.manager.network.GameServer;
|
||||
import com.emamaker.amazeing.manager.network.NetworkHandler;
|
||||
import com.emamaker.amazeing.utils.MathUtils.Constants;
|
||||
import com.esotericsoftware.kryonet.Connection;
|
||||
import com.esotericsoftware.kryonet.Listener;
|
||||
|
||||
|
@ -36,12 +37,14 @@ public abstract class NetworkAction {
|
|||
protected NetworkHandler parent;
|
||||
protected boolean oneTime;
|
||||
|
||||
protected long TIMEOUT_TIME = 5000;
|
||||
protected long startTime;
|
||||
boolean tookTimeout = false;
|
||||
boolean usingTimeout = true;
|
||||
boolean oneAtTheTime = true;
|
||||
|
||||
//A list of actions that prevent the action to be started inside alreadyPending method
|
||||
//(e.g NACLoginAO cannot be started if there's still a NACLoginAO2 running)
|
||||
|
||||
public AMazeIng main = AMazeIng.getMain();
|
||||
|
||||
Listener startListener = new Listener() {
|
||||
|
@ -74,13 +77,9 @@ public abstract class NetworkAction {
|
|||
this.parent = parent_;
|
||||
this.oneTime = oneTime;
|
||||
|
||||
if (client() != null)
|
||||
client().client.addListener(endListener);
|
||||
if (server() != null)
|
||||
server().server.addListener(endListener);
|
||||
|
||||
tookTimeout = false;
|
||||
usingTimeout = true;
|
||||
// setMaskActions(maskActions);
|
||||
// update();
|
||||
}
|
||||
|
||||
|
@ -96,6 +95,8 @@ public abstract class NetworkAction {
|
|||
client().client.addListener(startListener);
|
||||
if (server() != null)
|
||||
server().server.addListener(startListener);
|
||||
|
||||
// setMaskActions(maskActions_);
|
||||
}
|
||||
|
||||
public void startAction() {
|
||||
|
@ -110,6 +111,8 @@ public abstract class NetworkAction {
|
|||
if (oneAtTheTime) {
|
||||
if (!parent.alreadyPending(this))
|
||||
parent.addToPending(newInstance());
|
||||
// else
|
||||
// addToQueue();
|
||||
} else {
|
||||
parent.addToPending(newInstance());
|
||||
}
|
||||
|
@ -123,7 +126,7 @@ public abstract class NetworkAction {
|
|||
resolveAction();
|
||||
if (oneTime)
|
||||
responseReceived(null, null);
|
||||
if (System.currentTimeMillis() - startTime > TIMEOUT_TIME && usingTimeout)
|
||||
if (System.currentTimeMillis() - startTime > Constants.NETWORK_ACTION_TIMEOUT_MILLIS && usingTimeout)
|
||||
detachFromParent();
|
||||
}
|
||||
|
||||
|
@ -183,4 +186,12 @@ public abstract class NetworkAction {
|
|||
parent.todoActions.add(newInstance());
|
||||
}
|
||||
|
||||
public void registerEndListener() {
|
||||
if (client() != null)
|
||||
client().client.addListener(endListener);
|
||||
if (server() != null)
|
||||
server().server.addListener(endListener);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -12,6 +12,9 @@ import com.esotericsoftware.kryonet.Connection;
|
|||
|
||||
public class NACGameStatusUpdate extends NetworkAction {
|
||||
|
||||
public static boolean gotMessage = false;
|
||||
public static long lastMsgTime = 0;
|
||||
|
||||
protected NACGameStatusUpdate(NetworkHandler parent, Connection c, Object incomingMsg_, Object responsePacket_,
|
||||
Object endPacket_, boolean oneTime) {
|
||||
super(parent, c, incomingMsg_, responsePacket_, endPacket_, oneTime);
|
||||
|
@ -51,6 +54,9 @@ public class NACGameStatusUpdate extends NetworkAction {
|
|||
client().gameManager.gameStarted = ((GameStatusUpdate) incomingMsg).gameStarted;
|
||||
client().gameManager.anyoneWon = ((GameStatusUpdate) incomingMsg).anyoneWon;
|
||||
|
||||
gotMessage = true;
|
||||
lastMsgTime = System.currentTimeMillis();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
package com.emamaker.amazeing.manager.network.action.actions.client.game;
|
||||
|
||||
import com.emamaker.amazeing.manager.network.NetworkCommon;
|
||||
import com.emamaker.amazeing.manager.network.NetworkHandler;
|
||||
import com.emamaker.amazeing.manager.network.action.NetworkAction;
|
||||
import com.esotericsoftware.kryonet.Connection;
|
||||
|
||||
public class NACServerClosed extends NetworkAction {
|
||||
|
||||
protected NACServerClosed(NetworkHandler parent, Connection c, Object incomingMsg_, Object responsePacket_,
|
||||
Object endPacket_, boolean oneTime) {
|
||||
super(parent, c, incomingMsg_, responsePacket_, endPacket_, oneTime);
|
||||
}
|
||||
|
||||
public NACServerClosed(NetworkHandler parent_) {
|
||||
super(parent_, new NetworkCommon.ServerClosed(), null, null, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resolveAction() {
|
||||
super.resolveAction();
|
||||
|
||||
System.out.println("Server stopped!");
|
||||
parent.stop();
|
||||
main.uiManager.srvJoinScreen.showErrorDlg(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void responseReceived(Connection conn, Object msg) {
|
||||
super.responseReceived(conn, msg);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NetworkAction newInstance() {
|
||||
return new NACServerClosed(client(), incomingConnection, incomingMsg, responsePacket, endPacket, oneTime);
|
||||
}
|
||||
|
||||
}
|
|
@ -43,7 +43,7 @@ public class NACRemovePlayer extends NetworkAction {
|
|||
@Override
|
||||
public void resolveAction() {
|
||||
super.resolveAction();
|
||||
System.out.println("Asking the server to remove player " + uuid);
|
||||
// System.out.println("Asking the server to remove player " + uuid);
|
||||
((RemovePlayer) responsePacket).uuid = uuid;
|
||||
client().client.sendUDP(responsePacket);
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ public class NACRemovePlayer extends NetworkAction {
|
|||
}
|
||||
detachFromParent();
|
||||
}
|
||||
// System.out.println("Response received for " + this);
|
||||
System.out.println("Response received for " + this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -4,10 +4,13 @@ import com.emamaker.amazeing.manager.network.NetworkCommon;
|
|||
import com.emamaker.amazeing.manager.network.NetworkHandler;
|
||||
import com.emamaker.amazeing.manager.network.action.NetworkAction;
|
||||
import com.emamaker.amazeing.player.MazePlayerLocal;
|
||||
import com.emamaker.amazeing.utils.MathUtils.Constants;
|
||||
import com.esotericsoftware.kryonet.Connection;
|
||||
|
||||
public class NACUpdatePlayersPos extends NetworkAction {
|
||||
|
||||
long lastTime = 0;
|
||||
|
||||
protected NACUpdatePlayersPos(NetworkHandler parent, Connection c, Object incomingMsg_, Object responsePacket_,
|
||||
Object endPacket_, boolean oneTime) {
|
||||
super(parent, c, incomingMsg_, responsePacket_, endPacket_, oneTime);
|
||||
|
@ -24,9 +27,13 @@ public class NACUpdatePlayersPos extends NetworkAction {
|
|||
|
||||
if (parent.gameManager.gameStarted)
|
||||
for (String s : client().localPlayers) {
|
||||
if (parent.players.containsKey(s) && ((MazePlayerLocal) parent.players.get(s)).getPressed()) {
|
||||
// Update pos if the player moved or every sec
|
||||
if (parent.players.containsKey(s) && (((MazePlayerLocal) parent.players.get(s)).getPressed()
|
||||
|| System.currentTimeMillis() - lastTime > Constants.CLIENT_POS_PERIODIC_UPDATE)) {
|
||||
responsePacket = parent.updatePlayer(s, parent.players.get(s), false);
|
||||
client().client.sendUDP(responsePacket);
|
||||
if (System.currentTimeMillis() - lastTime > Constants.CLIENT_POS_PERIODIC_UPDATE)
|
||||
lastTime = System.currentTimeMillis();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
package com.emamaker.amazeing.manager.network.action.actions.server.game;
|
||||
|
||||
import com.emamaker.amazeing.manager.network.NetworkCommon;
|
||||
import com.emamaker.amazeing.manager.network.NetworkHandler;
|
||||
import com.emamaker.amazeing.manager.network.action.NetworkAction;
|
||||
import com.esotericsoftware.kryonet.Connection;
|
||||
|
||||
public class NASServerClosed extends NetworkAction {
|
||||
|
||||
protected NASServerClosed(NetworkHandler parent, Connection c, Object incomingMsg_, Object responsePacket_,
|
||||
Object endPacket_, boolean oneTime) {
|
||||
super(parent, c, incomingMsg_, responsePacket_, endPacket_, oneTime);
|
||||
}
|
||||
|
||||
public NASServerClosed(NetworkHandler parent_) {
|
||||
super(parent_, null, new NetworkCommon.ServerClosed(), null, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resolveAction() {
|
||||
super.resolveAction();
|
||||
System.out.println("Server stopped?");
|
||||
server().server.sendToAllUDP(responsePacket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void responseReceived(Connection conn, Object msg) {
|
||||
super.responseReceived(conn, msg);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NetworkAction newInstance() {
|
||||
return new NASServerClosed(server(), incomingConnection, incomingMsg, responsePacket, endPacket, oneTime);
|
||||
}
|
||||
|
||||
}
|
|
@ -30,6 +30,8 @@ public class NASLoginAO2 extends NetworkAction {
|
|||
System.out.println("Client accepted uuid " + uuid);
|
||||
MazePlayerRemote player = new MazePlayerRemote(uuid);
|
||||
server().players.put(uuid, player);
|
||||
server().players.get(uuid).LAST_NETWORK_TIME = System.currentTimeMillis();
|
||||
|
||||
server().setUpdatePos(uuid, false);
|
||||
}
|
||||
((ServerLoginAO2)responsePacket).uuid = uuid;
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.emamaker.amazeing.manager.network.action.actions.server.login;
|
|||
import java.util.UUID;
|
||||
|
||||
import com.emamaker.amazeing.manager.network.NetworkCommon;
|
||||
import com.emamaker.amazeing.manager.network.NetworkCommon.ClientLoginAO2;
|
||||
import com.emamaker.amazeing.manager.network.NetworkCommon.ServerLoginUUID;
|
||||
import com.emamaker.amazeing.manager.network.NetworkHandler;
|
||||
import com.emamaker.amazeing.manager.network.action.NetworkAction;
|
||||
|
|
|
@ -27,6 +27,7 @@ public class NASUpdatePlayerPos extends NetworkAction {
|
|||
float pz = ((UpdatePlayerPosition) incomingMsg).pz;
|
||||
if (parent.players.containsKey(uuid) && server().canUpdatePos(uuid) && parent.gameManager.gameStarted) {
|
||||
parent.players.get(uuid).setPos(px, py, pz);
|
||||
parent.players.get(uuid).LAST_NETWORK_TIME = System.currentTimeMillis();
|
||||
server().server.sendToAllUDP(incomingMsg);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -242,9 +242,12 @@ public class MazeGenerator {
|
|||
OLDMAZEX = MazeSettings.MAZEX;
|
||||
OLDMAZEZ = MazeSettings.MAZEZ;
|
||||
|
||||
todraw = new int[w][h];
|
||||
|
||||
for (int j = 0; j < h; j++) {
|
||||
for (int i = 0; i < w; i++) {
|
||||
todraw[i][j] = todraw_[i][j];
|
||||
|
||||
main.world.worldManager.setCell(i, 0, j, CellId.ID_GRASS);
|
||||
|
||||
if (todraw[i][j] == 1)
|
||||
|
@ -260,16 +263,14 @@ public class MazeGenerator {
|
|||
}
|
||||
|
||||
public int[][] changeMap(int[][] tmp, int x, int z, int type) {
|
||||
if(x > 0 && x < w - 1 && z > 0 && z < h - 1 && todraw[x][z] != 2) tmp[x][z] = type;
|
||||
if (x > 0 && x < w - 1 && z > 0 && z < h - 1 && todraw[x][z] != 2) {
|
||||
tmp[x][z] = type;
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
|
||||
public void requestChangeToMap(int[][] todraw_) {
|
||||
if(AMazeIng.getMain().client.isRunning()) {
|
||||
// AMazeIng.getMain().client.requestUpdateMap(todraw_);
|
||||
}else {
|
||||
show(todraw_);
|
||||
}
|
||||
show(todraw_);
|
||||
}
|
||||
|
||||
boolean allCellsVisited() {
|
||||
|
|
|
@ -142,4 +142,17 @@ public class MazeSetting {
|
|||
return options[currentOption];
|
||||
}
|
||||
|
||||
public String getValueAt(int i) {
|
||||
if(i < options.length) return options[i];
|
||||
return "";
|
||||
}
|
||||
|
||||
public String getFirstValue() {
|
||||
return getValueAt(0);
|
||||
}
|
||||
|
||||
public String getLastValue() {
|
||||
return getValueAt(options.length-1);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ public class MazeSettings {
|
|||
AMazeIng.getMain().uiManager);
|
||||
|
||||
setStartPowerups = new MazeSettingStartPowerUps("POWERUPS AT START : ",
|
||||
new String[] { "1", "2", "3", "4", "5", "8", "10", "15" }, 2, AMazeIng.getMain().uiManager);
|
||||
new String[] { "1", "2", "3", "4", "5", "8", "10", "15" }, 6, AMazeIng.getMain().uiManager);
|
||||
|
||||
setEpDist = new MazeSettingEPDIST("END POINT DISTANCE:", new String[] { "1", "2", "5", "10", "20" }, 2,
|
||||
AMazeIng.getMain().uiManager);
|
||||
|
|
|
@ -48,6 +48,8 @@ public abstract class MazePlayer implements Disposable {
|
|||
public float speed;
|
||||
public float turnSpeed;
|
||||
|
||||
public long LAST_NETWORK_TIME = 0;
|
||||
|
||||
Vector3 pos = new Vector3();
|
||||
Quaternion rot = new Quaternion();
|
||||
|
||||
|
@ -146,7 +148,7 @@ public abstract class MazePlayer implements Disposable {
|
|||
}
|
||||
|
||||
public void usePowerUp() {
|
||||
if (currentPowerUp != null && !currentPowerUp.beingUsed)
|
||||
if (currentPowerUp != null)
|
||||
if (currentPowerUp.usePowerUp(this))
|
||||
disablePowerUp();
|
||||
}
|
||||
|
|
|
@ -304,7 +304,6 @@ public class MazePlayerLocal extends MazePlayer {
|
|||
if (!isDisposed() && initedPhysics) {
|
||||
characterTransform.set(x, y, z, i, j, k, l);
|
||||
ghostObject.setWorldTransform(characterTransform);
|
||||
System.out.println(characterTransform.getTranslation(new Vector3()).toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
package com.emamaker.amazeing.player.powerups;
|
||||
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
import com.badlogic.gdx.graphics.GL20;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.VertexAttributes;
|
||||
import com.badlogic.gdx.graphics.g2d.ParticleEffect;
|
||||
import com.badlogic.gdx.graphics.g2d.ParticleEffectPool;
|
||||
import com.badlogic.gdx.graphics.g2d.ParticleEffectPool.PooledEffect;
|
||||
import com.badlogic.gdx.graphics.g3d.Environment;
|
||||
import com.badlogic.gdx.graphics.g3d.Material;
|
||||
import com.badlogic.gdx.graphics.g3d.Model;
|
||||
|
@ -16,6 +20,7 @@ import com.badlogic.gdx.math.Vector3;
|
|||
import com.badlogic.gdx.utils.Disposable;
|
||||
import com.emamaker.amazeing.AMazeIng;
|
||||
import com.emamaker.amazeing.player.MazePlayer;
|
||||
import com.emamaker.amazeing.utils.MathUtils;
|
||||
|
||||
public class PowerUp implements Disposable {
|
||||
|
||||
|
@ -36,11 +41,15 @@ public class PowerUp implements Disposable {
|
|||
|
||||
Vector3 pos = new Vector3();
|
||||
|
||||
public PowerUp(String name_, Texture texture_, boolean cont) {
|
||||
this(name_, texture_, cont, 1, 1);
|
||||
ParticleEffect effect;
|
||||
ParticleEffectPool effectPool;
|
||||
|
||||
public PowerUp(String name_, Texture texture_, boolean cont, FileHandle effectFile, FileHandle imageSrc) {
|
||||
this(name_, texture_, cont, 1, 1, effectFile, imageSrc);
|
||||
}
|
||||
|
||||
public PowerUp(String name_, Texture texture_, boolean cont, float scaleX, float scaleZ) {
|
||||
public PowerUp(String name_, Texture texture_, boolean cont, float scaleX, float scaleZ, FileHandle effectFile,
|
||||
FileHandle imageSrc) {
|
||||
this.name = name_;
|
||||
this.texture = texture_;
|
||||
this.scaleX = scaleX;
|
||||
|
@ -54,6 +63,12 @@ public class PowerUp implements Disposable {
|
|||
beingUsed = false;
|
||||
built = false;
|
||||
toUpdatePos = false;
|
||||
|
||||
if (effectFile != null && imageSrc != null) {
|
||||
effect = new ParticleEffect();
|
||||
effect.load(effectFile, imageSrc);
|
||||
effectPool = new ParticleEffectPool(effect, 1, 2);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
|
@ -106,7 +121,15 @@ public class PowerUp implements Disposable {
|
|||
|
||||
// Return true if the effect has been resolved
|
||||
public boolean usePowerUp(MazePlayer player) {
|
||||
// System.out.println(this.name + "!");
|
||||
System.out.println(this.name + " ! ");
|
||||
|
||||
if (effect != null) {
|
||||
PooledEffect e = effectPool.obtain();
|
||||
Vector3 pos = MathUtils.toScreenCoords(player.getPos());
|
||||
e.setPosition(pos.x, pos.y);
|
||||
|
||||
AMazeIng.getMain().effects.add(e);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -122,36 +145,47 @@ class PowerUpTemporized extends PowerUp {
|
|||
long time = 0, startTime = 0;
|
||||
boolean used = false;
|
||||
|
||||
public PowerUpTemporized(String name_, Texture texture_, boolean cont, float secs_) {
|
||||
this(name_, texture_, cont, secs_, 1, 1);
|
||||
public PowerUpTemporized(String name_, Texture texture_, boolean cont, float secs_, FileHandle effectFile,
|
||||
FileHandle imageSrc) {
|
||||
this(name_, texture_, cont, secs_, 1, 1, effectFile, imageSrc);
|
||||
}
|
||||
|
||||
public PowerUpTemporized(String name_, Texture texture_, boolean cont, float secs_, float scaleX, float scaleZ) {
|
||||
super(name_, texture_, cont, scaleX, scaleZ);
|
||||
public PowerUpTemporized(String name_, Texture texture_, boolean cont, float secs_, float scaleX, float scaleZ,
|
||||
FileHandle effectFile, FileHandle imageSrc) {
|
||||
super(name_, texture_, cont, scaleX, scaleZ, effectFile, imageSrc);
|
||||
this.time = (long) (secs_ * 1000);
|
||||
startTime = 0;
|
||||
}
|
||||
|
||||
PooledEffect e;
|
||||
|
||||
@Override
|
||||
public boolean usePowerUp(MazePlayer player) {
|
||||
super.usePowerUp(player);
|
||||
|
||||
if (!used) {
|
||||
startTime = System.currentTimeMillis();
|
||||
used = true;
|
||||
|
||||
e = effectPool.obtain();
|
||||
AMazeIng.getMain().effects.add(e);
|
||||
}
|
||||
|
||||
if (System.currentTimeMillis() - startTime < time) {
|
||||
if (System.currentTimeMillis() - startTime <= time) {
|
||||
temporizedEffect(player);
|
||||
System.out.println("starting " + name);
|
||||
return false;
|
||||
} else {
|
||||
used = false;
|
||||
System.out.println("finishing " + name);
|
||||
e = null;
|
||||
temporizedEffectExpired(player);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public void temporizedEffect(MazePlayer player) {
|
||||
Vector3 p = MathUtils.toScreenCoords(player.getPos());
|
||||
e.setPosition(p.x, p.y);
|
||||
|
||||
beingUsed = true;
|
||||
}
|
||||
|
||||
|
@ -166,24 +200,26 @@ class PowerUpGiver extends PowerUp {
|
|||
PowerUp powerup;
|
||||
MazePlayer p;
|
||||
|
||||
public PowerUpGiver(PowerUp p, String name, Texture texture, boolean continuos) {
|
||||
this(p, name, texture, continuos, 1f, 1f);
|
||||
public PowerUpGiver(PowerUp p, String name, Texture texture, boolean continuos, FileHandle effectFile,
|
||||
FileHandle imageSrc) {
|
||||
this(p, name, texture, continuos, 1f, 1f, effectFile, imageSrc);
|
||||
}
|
||||
|
||||
public PowerUpGiver(PowerUp p, String name, Texture texture, boolean continuos, float scaleX, float scaleZ) {
|
||||
super(name, texture, continuos, scaleX, scaleZ);
|
||||
public PowerUpGiver(PowerUp p, String name, Texture texture, boolean continuos, float scaleX, float scaleZ,
|
||||
FileHandle effectFile, FileHandle imageSrc) {
|
||||
super(name, texture, continuos, scaleX, scaleZ, effectFile, imageSrc);
|
||||
this.powerup = p;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean usePowerUp(MazePlayer player) {
|
||||
super.usePowerUp(player);
|
||||
// super.usePowerUp(player);
|
||||
|
||||
p = null;
|
||||
if (AMazeIng.getMain().currentGameManager.players.size() > 1) {
|
||||
while (p == player || p == null)
|
||||
p = AMazeIng.getMain().currentGameManager.getRandomPlayer();
|
||||
p.currentPowerUp = new PowerUpBallAndChain();
|
||||
p.currentPowerUp = powerup;
|
||||
p.usePowerUp();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,21 +1,25 @@
|
|||
package com.emamaker.amazeing.player.powerups;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.emamaker.amazeing.player.MazePlayer;
|
||||
import com.emamaker.amazeing.utils.TextureLoader;
|
||||
|
||||
public class PowerUpBallAndChain extends PowerUpTemporized {
|
||||
|
||||
public PowerUpBallAndChain() {
|
||||
super("BALL AND CHAIN", TextureLoader.textureBallAndChain, true, 10, 1f, 1f);
|
||||
super("BALL AND CHAIN", TextureLoader.textureBallAndChain, true, 10, 1f, 1f,
|
||||
Gdx.files.internal("data/particles/ball_and_chain.particle"), Gdx.files.internal("data/powerups"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void temporizedEffect(MazePlayer player) {
|
||||
super.temporizedEffect(player);
|
||||
player.speedMult = 0.5f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void temporizedEffectExpired(MazePlayer player) {
|
||||
super.temporizedEffectExpired(player);
|
||||
player.speedMult = 1f;
|
||||
}
|
||||
}
|
||||
|
@ -23,9 +27,7 @@ public class PowerUpBallAndChain extends PowerUpTemporized {
|
|||
class PowerUpGiveBallAndChain extends PowerUpGiver {
|
||||
|
||||
public PowerUpGiveBallAndChain() {
|
||||
super(new PowerUpBallAndChain(), "BALL AND CHAIN GIVER",
|
||||
TextureLoader.textureBallAndChain, false,
|
||||
1f, 1f);
|
||||
super(new PowerUpBallAndChain(), "BALL AND CHAIN GIVER", TextureLoader.textureBallAndChain, false, null, null);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.emamaker.amazeing.player.powerups;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.emamaker.amazeing.AMazeIng;
|
||||
import com.emamaker.amazeing.player.MazePlayer;
|
||||
|
@ -12,11 +14,11 @@ public class PowerUpBomb extends PowerUp {
|
|||
AMazeIng main = AMazeIng.getMain();
|
||||
|
||||
public PowerUpBomb() {
|
||||
this("BOMB", TextureLoader.textureBomb, false, 1f, 1f);
|
||||
this("BOMB", TextureLoader.textureBomb, false, 1f, 1f, Gdx.files.internal("data/particles/explosion_small.particle"), Gdx.files.internal("data/particles"));
|
||||
}
|
||||
|
||||
public PowerUpBomb(String name, Texture texture, boolean cont, float sx, float sz) {
|
||||
super(name, texture, cont, sx, sz);
|
||||
public PowerUpBomb(String name, Texture texture, boolean cont, float sx, float sz, FileHandle effectFile, FileHandle imageSrc) {
|
||||
super(name, texture, cont, sx, sz, effectFile, imageSrc);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -26,6 +28,8 @@ public class PowerUpBomb extends PowerUp {
|
|||
int px = (int) player.getPos().x;
|
||||
int pz = (int) player.getPos().z;
|
||||
|
||||
System.out.println("Player in " + player.getPos());
|
||||
|
||||
int tmptodraw[][] = new int[main.currentGameManager.mazeGen.w][main.currentGameManager.mazeGen.h];
|
||||
|
||||
for (int i = 0; i < main.currentGameManager.mazeGen.w; i++)
|
||||
|
@ -47,7 +51,7 @@ public class PowerUpBomb extends PowerUp {
|
|||
class PowerUpBigBomb extends PowerUpBomb{
|
||||
|
||||
public PowerUpBigBomb() {
|
||||
super("BIG BOMB", TextureLoader.textureBomb, false, 1.5f, 1.5f);
|
||||
super("BIG BOMB", TextureLoader.textureBomb, false, 1.5f, 1.5f, Gdx.files.internal("data/particles/explosion.particle"), Gdx.files.internal("data/particles"));
|
||||
radius = 2;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.emamaker.amazeing.player.powerups;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.emamaker.amazeing.player.MazePlayer;
|
||||
import com.emamaker.amazeing.utils.TextureLoader;
|
||||
|
||||
|
@ -7,16 +8,18 @@ public class PowerUpFeather extends PowerUpTemporized {
|
|||
|
||||
public PowerUpFeather() {
|
||||
super("FEATHER", TextureLoader.textureFeather, true, 10,
|
||||
1f, 1f);
|
||||
1f, 1f, Gdx.files.internal("data/particles/feather.particle"), Gdx.files.internal("data/powerups"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void temporizedEffect(MazePlayer player) {
|
||||
super.temporizedEffect(player);
|
||||
player.speedMult = 2f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void temporizedEffectExpired(MazePlayer player) {
|
||||
super.temporizedEffectExpired(player);
|
||||
player.speedMult = 1f;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,22 +1,25 @@
|
|||
package com.emamaker.amazeing.player.powerups;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.emamaker.amazeing.player.MazePlayer;
|
||||
import com.emamaker.amazeing.utils.TextureLoader;
|
||||
|
||||
public class PowerUpSlug extends PowerUpTemporized {
|
||||
|
||||
public PowerUpSlug() {
|
||||
super("SLUG", TextureLoader.textureSlug, true, 20,
|
||||
1.3f, 1.3f);
|
||||
super("SLUG", TextureLoader.textureSlug, true, 15,
|
||||
1.3f, 1.3f, Gdx.files.internal("data/particles/slugs.particle"), Gdx.files.internal("data/powerups"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void temporizedEffect(MazePlayer player) {
|
||||
super.temporizedEffect(player);
|
||||
player.speedMult = 0.25f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void temporizedEffectExpired(MazePlayer player) {
|
||||
super.temporizedEffectExpired(player);
|
||||
player.speedMult = 1f;
|
||||
}
|
||||
|
||||
|
@ -25,7 +28,7 @@ public class PowerUpSlug extends PowerUpTemporized {
|
|||
class PowerUpGiveSlug extends PowerUpGiver {
|
||||
|
||||
public PowerUpGiveSlug() {
|
||||
super(new PowerUpSlug(), "SLUG GIVER", TextureLoader.textureSlug, false, 1f, 1f);
|
||||
super(new PowerUpSlug(), "SLUG GIVER", TextureLoader.textureSlug, false, 1f, 1f, null, null);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -84,7 +84,7 @@ public class PreGameScreen extends MyScreen {
|
|||
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
|
||||
hide();
|
||||
if (uiManager.main.client.isRunning()) {
|
||||
uiManager.main.client.stop();
|
||||
uiManager.main.client.stop(true);
|
||||
uiManager.main.setScreen(uiManager.srvJoinScreen);
|
||||
}
|
||||
if (uiManager.main.server.isRunning()) {
|
||||
|
|
|
@ -78,9 +78,9 @@ public class ServerJoinScreen extends MyScreen {
|
|||
/* ERROR DIALOG */
|
||||
errorDlg = new Dialog("Error in communicating with server", uiManager.skin);
|
||||
errorDlgText = new Label("", uiManager.skin);
|
||||
errorDlg.text(helpDlgText);
|
||||
errorDlg.text(errorDlgText);
|
||||
errorDlgOkBtn = new TextButton("OK", uiManager.skin);
|
||||
errorDlg.button(helpDlgOkBtn);
|
||||
errorDlg.button(errorDlgOkBtn);
|
||||
errorDlg.addListener(new InputListener() {
|
||||
@Override
|
||||
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
|
||||
|
@ -160,6 +160,11 @@ public class ServerJoinScreen extends MyScreen {
|
|||
failDlgText.setFontScale(labScale*0.9f);
|
||||
failDlgOkBtn.getLabel().setFontScale(labScale*0.9f);
|
||||
|
||||
errorDlg.setSize(cw*0.7f, ch*0.2f);
|
||||
errorDlg.setPosition((sw-failDlg.getWidth())/2, (sh-failDlg.getHeight())/2);
|
||||
errorDlgText.setFontScale(labScale*0.9f);
|
||||
errorDlgOkBtn.getLabel().setFontScale(labScale*0.9f);
|
||||
|
||||
instLab.setFontScale(labScale);
|
||||
srvIpL.setFontScale(labScale);
|
||||
backBtn.getLabel().setFontScale(labScale);
|
||||
|
|
|
@ -1,10 +1,35 @@
|
|||
package com.emamaker.amazeing.utils;
|
||||
|
||||
import com.badlogic.gdx.math.Vector3;
|
||||
import com.emamaker.amazeing.AMazeIng;
|
||||
|
||||
public class MathUtils extends net.dermetfan.gdx.math.MathUtils {
|
||||
|
||||
public static float vectorDistance(Vector3 v1, Vector3 v2) {
|
||||
return (float) Math.sqrt((v1.x - v2.x)*(v1.x - v2.x) + (v1.y - v2.y)*(v1.y - v2.y) + (v1.z - v2.z)*(v1.z - v2.z));
|
||||
return (float) Math
|
||||
.sqrt((v1.x - v2.x) * (v1.x - v2.x) + (v1.y - v2.y) * (v1.y - v2.y) + (v1.z - v2.z) * (v1.z - v2.z));
|
||||
}
|
||||
|
||||
|
||||
public static Vector3 toScreenCoords(Vector3 vec) {
|
||||
//This exta variable is needed otherwise the cam.project will convert the vector in argument from world coordinates to screen coordinates
|
||||
Vector3 v1 = new Vector3(vec);
|
||||
return AMazeIng.getMain().world.cam.project(v1);
|
||||
}
|
||||
|
||||
public static long map(long x, long in_min, long in_max, long out_min, long out_max) {
|
||||
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
|
||||
}
|
||||
|
||||
public static int map(int x, int in_min, int in_max, int out_min, int out_max) {
|
||||
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
|
||||
}
|
||||
|
||||
public static class Constants {
|
||||
|
||||
public static int NETWORK_ACTION_TIMEOUT_MILLIS = 7000;
|
||||
public static int COMMUNICATION_TIMEOUT_MILLIS = 100000;
|
||||
public static int CLIENT_POS_PERIODIC_UPDATE = 1000;
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 59 KiB |
|
@ -2,10 +2,10 @@ apply plugin: "java"
|
|||
|
||||
sourceCompatibility = 1.7
|
||||
sourceSets.main.java.srcDirs = [ "src/" ]
|
||||
sourceSets.main.resources.srcDirs = ["../android/assets"]
|
||||
sourceSets.main.resources.srcDirs = ["../core/assets/"]
|
||||
|
||||
project.ext.mainClassName = "com.emamaker.amazeing.desktop.DesktopLauncher"
|
||||
project.ext.assetsDir = new File("../android/assets")
|
||||
project.ext.assetsDir = new File("../core/assets")
|
||||
|
||||
task run(dependsOn: classes, type: JavaExec) {
|
||||
main = project.mainClassName
|
||||
|
|
Loading…
Reference in New Issue