tweaks and proper y sorting for player, enemy
This commit is contained in:
@@ -2,39 +2,39 @@
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,4,4,5,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,2,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,1,1,-1,-1,4,1,-1,7,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,2,4,4,-1,-1,4,4,5,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,1,1,1,5,-1,-1,-1,6,8,-1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,-1,-1,-1,-1,-1,2,5,-1,-1,-1
|
||||
-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,3,-1,-1,-1,-1,-1,2,5,-1,-1
|
||||
-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,-1,-1,-1,-1,-1,2,5,-1
|
||||
-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,5,-1,-1,-1,-1,-1,2,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,3,-1,-1,3,3,5,-1
|
||||
-1,-1,-1,-1,1,1,-1,-1,4,1,-1,7,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,2,4,4,1,1,4,4,5,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,1,1,1,5,-1,-1,-1,6,8,-1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,1,1,1,1,1,2,5,-1,-1,-1
|
||||
-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,3,1,1,1,1,1,2,5,-1,-1
|
||||
-1,-1,-1,-1,1,-1,-1,10,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,1,1,1,1,1,2,5,-1
|
||||
-1,-1,-1,-1,1,-1,-1,10,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,5,1,1,1,1,1,2,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,3,1,1,3,3,5,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,5,2,5,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,4,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,3,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,4,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
6,8,-1,4,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,6,8,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,6,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,6,1,1,1,1,1,1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,6,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,6,8,-1,-1,-1,-1,7,1,1,9,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,1,-1,-1,1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,2,1,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,2,-1,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,1,8,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,2,1,5,-1,2,1,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,-1,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,1,1,8,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,1,5,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,4,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,3,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,4,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
6,8,-1,4,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,10,10,-1,-1,-1,-1,-1
|
||||
-1,6,8,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,6,1,1,1,1,1,1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,10,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,-1
|
||||
-1,6,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,6,8,-1,-1,-1,-1,7,1,1,9,10,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,1,1,1,1,10,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,2,1,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,1,1,1,1,1,10,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,2,1,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,8,10,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,2,1,5,-1,2,1,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,10,-1,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,1,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,1,1,8,-1,-1,10,10,-1,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,1,5,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,10,-1,-1,-1
|
||||
-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,10,10,10,10,10,10,10,10,10,10,10
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,-1
|
||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,10,10,-1
|
||||
|
||||
|
+32
-32
@@ -143,42 +143,42 @@
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,4098,4098,4098,4098,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4099,4101,4101,4102,0,0,0,0,0,0,
|
||||
0,0,0,0,4098,4098,4098,4098,4098,4098,4098,0,0,4098,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4102,4099,0,0,0,0,0,0,0,
|
||||
0,0,0,0,4098,4098,0,0,4101,4098,0,4104,4106,0,0,0,0,0,0,0,0,0,0,4098,4098,0,0,0,4099,4101,4101,0,0,4101,4101,4102,0,0,0,0,
|
||||
0,0,0,0,4098,4098,4098,4102,0,0,0,4103,4105,0,4101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4102,0,0,0,0,0,4099,4102,0,0,0,
|
||||
0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4099,4100,4100,0,0,0,0,0,4099,4102,0,0,
|
||||
0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4102,0,0,0,0,0,4099,4102,0,
|
||||
0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4099,4102,0,0,0,0,0,4099,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4099,4100,4100,0,0,4100,4100,4102,0,
|
||||
0,0,0,0,4098,4098,0,0,4101,4098,0,4104,4106,0,0,0,0,0,0,0,0,0,0,4098,4098,0,0,0,4099,4101,4101,4098,4098,4101,4101,4102,0,0,0,0,
|
||||
0,0,0,0,4098,4098,4098,4102,0,0,0,4103,4105,0,4101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4102,4098,4098,4098,4098,4098,4099,4102,0,0,0,
|
||||
0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4099,4100,4100,4098,4098,4098,4098,4098,4099,4102,0,0,
|
||||
0,0,0,0,4098,0,0,4107,4107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4102,4098,4098,4098,4098,4098,4099,4102,0,
|
||||
0,0,0,0,4098,0,0,4107,4107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4099,4102,4098,4098,4098,4098,4098,4099,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4099,4100,4100,4098,4098,4100,4100,4102,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4098,4098,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4103,4105,0,0,0,0,0,0,0,0,0,0,0,4099,4102,4099,4102,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,4098,4098,4098,4098,4098,4098,4098,4098,4106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,4098,0,0,0,0,0,0,0,4098,4106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,4101,0,0,0,0,4098,0,0,0,0,0,0,0,0,4098,4098,4098,4098,4098,4098,4098,0,0,0,0,0,4100,4100,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4098,0,0,0,0,0,4101,4101,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
4103,4105,0,4101,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,4103,4105,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,4103,4098,0,0,0,0,0,0,4098,0,0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,4103,4098,4098,4098,4098,4098,4098,0,4098,4098,4098,4098,4098,0,0,0,0,0,0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,4103,4105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4098,0,0,0,0,0,0,0,0,4103,4105,0,0,0,0,4104,4098,4098,4106,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4104,4098,0,0,4098,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,4099,4098,4102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4104,4098,0,0,0,4098,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,4099,0,4102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4098,0,0,4098,4098,4105,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,4099,4098,4102,0,4099,4098,4102,0,0,0,0,0,0,0,0,0,0,0,0,4098,0,0,4098,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,4099,0,4102,0,0,0,0,0,0,0,0,0,0,0,0,4103,4098,4098,4105,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,4099,4098,4102,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
0,0,0,0,0,0,4098,4098,4098,4098,4098,4098,4098,4098,4098,4106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,4101,0,0,0,0,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,0,0,0,0,0,4100,4100,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,0,0,0,0,0,4101,4101,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
4103,4105,0,4101,0,0,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,0,0,0,0,0,0,0,0,0,0,4107,4107,4107,0,0,0,0,0,
|
||||
0,4103,4105,0,0,0,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,0,0,0,0,0,0,0,0,0,0,0,0,4107,0,0,0,0,0,
|
||||
0,0,0,0,0,0,4103,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,4107,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,4103,4098,4098,4098,4098,4098,4098,0,4098,4098,4098,4098,4098,0,0,0,0,0,0,0,0,0,4098,0,0,0,0,4107,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4107,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4107,0,0,0,0,0,
|
||||
0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4107,0,0,0,0,0,
|
||||
0,4103,4105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4107,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4098,0,0,0,0,0,0,0,0,4103,4105,0,0,0,0,4104,4098,4098,4106,4107,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4104,4098,4098,4098,4098,4107,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,4099,4098,4102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4104,4098,4098,4098,4098,4098,4107,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,4099,4098,4102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4098,4098,4098,4098,4098,4105,4107,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,4099,4098,4102,0,4099,4098,4102,0,0,0,0,0,0,0,0,0,0,0,0,4098,4098,4098,4098,0,0,4107,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,4099,4098,4102,0,0,0,0,0,0,0,0,0,0,0,0,4103,4098,4098,4105,0,0,4107,4107,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,4099,4098,4102,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4107,4107,0,0,0,
|
||||
0,0,0,0,4098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4107,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4107,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4107,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4107,4107,4107,0
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 233 B After Width: | Height: | Size: 289 B |
@@ -143,6 +143,18 @@
|
||||
"file": "/home/magnus/code/c/projects/raylib_topdown/src/player.c",
|
||||
"output": "/home/magnus/code/c/projects/raylib_topdown/target"
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
"/usr/bin/gcc",
|
||||
"-c",
|
||||
"-o",
|
||||
"target",
|
||||
"src/renderer.c"
|
||||
],
|
||||
"directory": "/home/magnus/code/c/projects/raylib_topdown",
|
||||
"file": "/home/magnus/code/c/projects/raylib_topdown/src/renderer.c",
|
||||
"output": "/home/magnus/code/c/projects/raylib_topdown/target"
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
"/usr/bin/gcc",
|
||||
|
||||
@@ -23,6 +23,8 @@ typedef struct AField {
|
||||
anode_t** map;
|
||||
} afield_t;
|
||||
|
||||
bool is_collider(int i);
|
||||
|
||||
void reset_field(afield_t *field, int** map);
|
||||
afield_t generate_astar_field(int rows, int columns, int** col_map);
|
||||
|
||||
|
||||
+9
-1
@@ -4,6 +4,10 @@
|
||||
# include "../include/player.h"
|
||||
# include "../include/world.h"
|
||||
|
||||
typedef enum EnemyType {
|
||||
ZOMBIE=1,
|
||||
} enemy_type_t;
|
||||
|
||||
typedef struct Enemy enemy_t;
|
||||
typedef struct Enemy {
|
||||
entity_t entity;
|
||||
@@ -13,10 +17,14 @@ typedef struct Enemy {
|
||||
|
||||
void (*set_vel_func)(world_t*, enemy_t*, player_t*);
|
||||
int (*move_func)(enemy_t*, player_t*, world_t*);
|
||||
void (*update_anim_func)(enemy_t*);
|
||||
void (*update_anim_func)(enemy_t*, player_t*);
|
||||
|
||||
} enemy_t;
|
||||
|
||||
|
||||
enemy_t create_enemy(enemy_type_t type);
|
||||
void update_enemy(enemy_t* enemy, player_t* player, world_t* world);
|
||||
void update_enemies(enemy_t* enemies, int enemy_count, player_t* player, world_t* world);
|
||||
|
||||
void render_enemy(enemy_t* enemy);
|
||||
void render_enemies(enemy_t* enemies, int enemy_count);
|
||||
|
||||
@@ -26,5 +26,6 @@ typedef struct Entity {
|
||||
|
||||
void set_entity_center(entity_t* entity, Vector2 center_pos);
|
||||
Vector2 get_entity_center(entity_t* entity);
|
||||
float get_entity_bottom(entity_t* entity);
|
||||
Rectangle get_entity_rect(entity_t* entity);
|
||||
Rectangle** get_col_tiles_around_entity(entity_t* entity, tilemap_t* col_map);
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
# include <raylib.h>
|
||||
|
||||
typedef enum Rendertype {
|
||||
TEXTURE_PRO,
|
||||
} rendertype_t;
|
||||
|
||||
typedef struct Renderdata {
|
||||
// texture pro
|
||||
rendertype_t type;
|
||||
float ypos;
|
||||
Texture texture;
|
||||
Rectangle src;
|
||||
Rectangle dest;
|
||||
Vector2 origin;
|
||||
float rotation;
|
||||
Color tint;
|
||||
} renderdata_t;
|
||||
|
||||
typedef struct Renderer {
|
||||
renderdata_t* buffer;
|
||||
int buffer_counter;
|
||||
int buffer_capacity;
|
||||
} renderer_t;
|
||||
|
||||
|
||||
extern renderer_t global_renderer;
|
||||
|
||||
renderer_t* get_renderer_ptr();
|
||||
|
||||
void init_render_buffer();
|
||||
|
||||
void clear_render_buffer();
|
||||
|
||||
void push_to_render_buffer(renderdata_t data);
|
||||
|
||||
void free_render_buffer();
|
||||
|
||||
void ysort_and_render_to_screen();
|
||||
@@ -3,9 +3,15 @@
|
||||
#include "../include/tilemap.h"
|
||||
#include "../include/astar.h"
|
||||
|
||||
typedef struct Enemy enemy_t;
|
||||
typedef enum EnemyType enemy_type_t;
|
||||
|
||||
typedef struct World {
|
||||
tilemap_t* col_map;
|
||||
afield_t afield;
|
||||
|
||||
enemy_t* enemies;
|
||||
int enemy_counter;
|
||||
} world_t;
|
||||
|
||||
typedef struct Path {
|
||||
@@ -15,10 +21,14 @@ typedef struct Path {
|
||||
int index;
|
||||
|
||||
bool finished;
|
||||
Vector2 current_dir;
|
||||
float current_speed;
|
||||
} path_t;
|
||||
|
||||
void init_world(world_t* world, char* collision_map);
|
||||
|
||||
void spawn_enemy(enemy_type_t type, world_t* world, Vector2 position);
|
||||
|
||||
Vector2 world_to_tilemap_coord(Vector2 world_pos);
|
||||
Vector2 tilemap_to_world_coord(Vector2 tile_pos);
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "../include/player.h"
|
||||
#include "../include/world.h"
|
||||
|
||||
void target_player(world_t* world, enemy_t* enemy, player_t* player);
|
||||
void pathfind_player(world_t* world, enemy_t* enemy, player_t* player);
|
||||
void init_zombie_enemy(enemy_t* enemy);
|
||||
void update_animation_path(enemy_t* enemy);
|
||||
void update_animation_velocity(enemy_t* enemy);
|
||||
void update_animation_from_path(enemy_t* enemy, player_t* player);
|
||||
void update_animation_from_velocity(enemy_t* enemy, player_t* player);
|
||||
|
||||
+17
-3
@@ -5,6 +5,7 @@
|
||||
# include "../include/anim.h"
|
||||
# include "../include/entity.h"
|
||||
# include "../include/config.h"
|
||||
# include "../include/renderer.h"
|
||||
|
||||
Rectangle get_animation_frame(entity_t* entity) {
|
||||
unsigned long time_delta = get_time_since_ms(entity->anim.anim_start);
|
||||
@@ -66,13 +67,26 @@ void render_entity(entity_t* entity) {
|
||||
};
|
||||
|
||||
Rectangle source_rect = get_animation_frame(entity);
|
||||
|
||||
float bottom_ypos = get_entity_bottom(entity);
|
||||
|
||||
DrawTexturePro(entity->anim.texture, source_rect, dest_rect, (Vector2) { 0.0, 0.0 }, 0, WHITE);
|
||||
|
||||
// DrawTexturePro(entity->anim.texture, source_rect, dest_rect, (Vector2) { 0.0, 0.0 }, 0, WHITE);
|
||||
//
|
||||
push_to_render_buffer((renderdata_t) {
|
||||
.type = TEXTURE_PRO,
|
||||
.ypos = bottom_ypos,
|
||||
.texture = entity->anim.texture,
|
||||
.src = source_rect,
|
||||
.dest = dest_rect,
|
||||
.origin = (Vector2) { 0.0f, 0.0f },
|
||||
.rotation = 0.0f,
|
||||
.tint = WHITE
|
||||
});
|
||||
|
||||
if (get_config_ptr()->render_colliders) {
|
||||
float bottom = get_entity_bottom(entity);
|
||||
Vector2 center = get_entity_center(entity);
|
||||
DrawCircleV(center, 2.0, BLUE);
|
||||
DrawCircleV((Vector2) { center.x, bottom}, 1.0, BLACK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+12
-1
@@ -1,14 +1,25 @@
|
||||
#include <assert.h>
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../include/astar.h"
|
||||
|
||||
|
||||
bool is_collider(int i) {
|
||||
if (i == -1 || i == 10) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void reset_field(afield_t *field, int** map) {
|
||||
for (int r = 0; r < field->rows; r++) {
|
||||
for (int c = 0; c < field->columns; c++) {
|
||||
bool is_obstacle = map[r][c] != -1 ? true : false;
|
||||
bool is_obstacle = is_collider(map[r][c]);
|
||||
|
||||
field->map[r][c] = (anode_t){
|
||||
.parent = {-1, -1},
|
||||
|
||||
+6
-4
@@ -2,15 +2,17 @@
|
||||
|
||||
// Initialize debug_mode to false or true as needed
|
||||
config_t global_config = {
|
||||
// DEBUG
|
||||
// --- DEBUG ---
|
||||
// objects
|
||||
.render_colliders = false,
|
||||
.render_paths = true,
|
||||
.player_collision = true,
|
||||
|
||||
.render_paths = false,
|
||||
// layers
|
||||
.render_ground = true,
|
||||
.render_objects = true,
|
||||
.render_tips = true,
|
||||
|
||||
// --- PHYSICS ---
|
||||
.player_collision = true,
|
||||
};
|
||||
|
||||
config_t* get_config_ptr(void) {
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ void render_colliders(player_t* player, world_t* world) {
|
||||
if (get_config_ptr()->render_colliders) {
|
||||
// PLAYER
|
||||
Color col = get_config_ptr()->player_collision ? RED : BLUE;
|
||||
DrawRectangleLinesEx(get_entity_rect(&(player->entity)), 2.0f, col);
|
||||
DrawRectangleLinesEx(get_entity_rect(&(player->entity)), 1.0f, col);
|
||||
// TILEMAP
|
||||
Rectangle** rects = get_col_tiles_around_entity(&(player->entity), world->col_map);
|
||||
render_collision_tiles(rects);
|
||||
|
||||
+34
-4
@@ -6,6 +6,21 @@
|
||||
# include "../include/world.h"
|
||||
# include "../include/config.h"
|
||||
|
||||
# include "../include/zombie_enemy.h"
|
||||
|
||||
enemy_t create_enemy(enemy_type_t type) {
|
||||
enemy_t new_enemy;
|
||||
|
||||
switch (type) {
|
||||
case ZOMBIE:
|
||||
init_zombie_enemy(&new_enemy);
|
||||
break;
|
||||
}
|
||||
|
||||
return new_enemy;
|
||||
|
||||
}
|
||||
|
||||
void update_enemy(enemy_t* enemy, player_t* player, world_t* world) {
|
||||
assert(enemy->set_vel_func != NULL);
|
||||
assert(enemy->move_func != NULL);
|
||||
@@ -13,16 +28,31 @@ void update_enemy(enemy_t* enemy, player_t* player, world_t* world) {
|
||||
|
||||
enemy->set_vel_func(world, enemy, player);
|
||||
enemy->move_func(enemy, player, world);
|
||||
enemy->update_anim_func(enemy);
|
||||
enemy->update_anim_func(enemy, player);
|
||||
|
||||
entity_face_moving_dir(&(enemy->entity));
|
||||
}
|
||||
|
||||
void update_enemies(enemy_t* enemies, int enemy_count, player_t* player, world_t* world) {
|
||||
for (int i = 0; i < enemy_count; i++) {
|
||||
update_enemy(&enemies[i], player, world);
|
||||
}
|
||||
}
|
||||
|
||||
void render_enemy(enemy_t* enemy) {
|
||||
if (get_config_ptr()->render_paths && enemy->path.nodes) {
|
||||
DrawLineStrip(enemy->path.nodes, enemy->path.len, WHITE);
|
||||
for (int i = 0; i < enemy->path.len; i++) {
|
||||
DrawCircleV(enemy->path.nodes[i], 1.0f, WHITE);
|
||||
}
|
||||
}
|
||||
|
||||
render_entity(&enemy->entity);
|
||||
}
|
||||
|
||||
if (get_config_ptr()->render_paths && enemy->path.nodes) {
|
||||
DrawLineStrip(enemy->path.nodes, enemy->path.len, WHITE);
|
||||
DrawCircleV(tilemap_to_world_coord(enemy->path.target_pos), 2.0f, BLUE);
|
||||
|
||||
void render_enemies(enemy_t* enemies, int enemy_count) {
|
||||
for (int i = 0; i < enemy_count; i++) {
|
||||
render_enemy(&enemies[i]);
|
||||
}
|
||||
}
|
||||
|
||||
+6
-1
@@ -6,6 +6,7 @@
|
||||
#include "../include/tilemap.h"
|
||||
#include "../include/entity.h"
|
||||
#include "../include/config.h"
|
||||
#include "../include/astar.h"
|
||||
|
||||
Rectangle** get_col_tiles_around_entity(entity_t* entity, tilemap_t* col_map) {
|
||||
const int ts = TILE_SIZE; // tile size
|
||||
@@ -37,7 +38,7 @@ Rectangle** get_col_tiles_around_entity(entity_t* entity, tilemap_t* col_map) {
|
||||
// get tile id
|
||||
int collider_type = get_tile_at(col_map, tile_x, tile_y);
|
||||
|
||||
if (collider_type == -1) {
|
||||
if (!is_collider(collider_type)) {
|
||||
continue; // No collision (air)
|
||||
}
|
||||
|
||||
@@ -75,6 +76,10 @@ Vector2 get_entity_center(entity_t* entity) {
|
||||
return pc;
|
||||
}
|
||||
|
||||
float get_entity_bottom(entity_t* entity) {
|
||||
return get_entity_center(entity).y + 0.5*entity->sprite_size.y;
|
||||
}
|
||||
|
||||
void set_entity_center(entity_t* entity, Vector2 center_pos) {
|
||||
Vector2 offset = entity->sprite_size;
|
||||
entity->position = Vector2Subtract(center_pos, offset);
|
||||
|
||||
+12
-6
@@ -6,6 +6,7 @@
|
||||
#include "../include/camera.h"
|
||||
#include "../include/tilemap.h"
|
||||
#include "../include/world.h"
|
||||
#include "../include/renderer.h"
|
||||
#include "../include/config.h"
|
||||
#include "../include/debug.h"
|
||||
#include "../include/enemy.h"
|
||||
@@ -15,14 +16,13 @@ int start_game() {
|
||||
player_t player;
|
||||
camera_t camera;
|
||||
world_t world;
|
||||
enemy_t zombie_enemy;
|
||||
|
||||
// Initialize components
|
||||
init_window("Game", /*RESOLUTION:*/1920/2, 1200/2, /*FPS:*/600);
|
||||
init_render_buffer();
|
||||
init_player(&player);
|
||||
init_camera(&camera, /*ZOOM*/ 5.0);
|
||||
init_world(&world, "assets/levels/test_collision.csv");
|
||||
init_zombie_enemy(&zombie_enemy);
|
||||
printf("[!] Initialized successfully!\n\n");
|
||||
|
||||
tileset_t* tileset_sunnyside = load_tileset(16, "assets/tilesheets/sunnyside.png");
|
||||
@@ -33,12 +33,14 @@ int start_game() {
|
||||
tilemap_t* tilemap_objects = load_tilemap("assets/levels/test_objects.csv");
|
||||
tilemap_t* tilemap_ground = load_tilemap("assets/levels/test_ground.csv");
|
||||
printf("\n[!] Loaded tilemaps successfully!\n\n");
|
||||
|
||||
spawn_enemy(ZOMBIE, &world, Vector2Zero());
|
||||
|
||||
while (!WindowShouldClose()) {
|
||||
// UPDATE
|
||||
update_player(&player, &world);
|
||||
update_camera(&camera, &(player.entity));
|
||||
update_enemy(&zombie_enemy, &player, &world);
|
||||
update_enemies(world.enemies, world.enemy_counter, &player, &world);
|
||||
|
||||
read_debug_input();
|
||||
|
||||
@@ -47,17 +49,21 @@ int start_game() {
|
||||
if (get_config_ptr()->render_ground) { render_tilemap(tilemap_ground, tileset_sunnyside); }
|
||||
if (get_config_ptr()->render_objects) { render_tilemap(tilemap_objects, tileset_sunnyside); }
|
||||
|
||||
render_enemy(&zombie_enemy);
|
||||
render_enemies(world.enemies, world.enemy_counter);
|
||||
render_player(&player);
|
||||
|
||||
ysort_and_render_to_screen();
|
||||
|
||||
if (get_config_ptr()->render_tips) { render_tilemap(tilemap_tips, tileset_sunnyside); }
|
||||
if (get_config_ptr()->render_colliders) { render_tilemap(world.col_map, tileset_collision); }
|
||||
|
||||
render_colliders(&player, &world);
|
||||
|
||||
|
||||
render_to_window(&camera);
|
||||
|
||||
// FINISH
|
||||
clear_render_buffer(); // turning this off looks really cool
|
||||
}
|
||||
|
||||
// cleanup_window(&window);
|
||||
return 0;
|
||||
}
|
||||
|
||||
+7
-4
@@ -19,7 +19,7 @@ int enemy_follow_path(enemy_t* enemy, player_t* player, world_t* world) {
|
||||
}
|
||||
|
||||
if (enemy->path.finished) {
|
||||
printf("TARGET REACHED!\n");
|
||||
// printf("TARGET REACHED!\n");
|
||||
// GOAL WAS ALREADY REACHED
|
||||
// chase player
|
||||
return 0;
|
||||
@@ -29,14 +29,17 @@ int enemy_follow_path(enemy_t* enemy, player_t* player, world_t* world) {
|
||||
Vector2 dir = Vector2Subtract(target_node, get_entity_center(&enemy->entity));
|
||||
float dir_len = Vector2Length(dir);
|
||||
Vector2 norm_dir = Vector2Normalize(dir);
|
||||
|
||||
enemy->path.current_dir = norm_dir;
|
||||
enemy->path.current_speed = dir_len;
|
||||
|
||||
printf("Next node posi [%d|%d]\n", (int)dir.x, (int)dir.y);
|
||||
printf("Next direction [%f|%f]\n", norm_dir.x, norm_dir.y);
|
||||
// printf("Next node posi [%d|%d]\n", (int)dir.x, (int)dir.y);
|
||||
// printf("Next direction [%f|%f]\n", norm_dir.x, norm_dir.y);
|
||||
|
||||
float speed = enemy->entity.speed_cap * 0.7;
|
||||
Vector2 step = Vector2Scale(norm_dir, GetFrameTime() * speed);
|
||||
float step_len = Vector2Length(step);
|
||||
printf("Next step into [%f|%f]\n", step.x, step.y);
|
||||
// printf("Next step into [%f|%f]\n", step.x, step.y);
|
||||
|
||||
if (step_len < dir_len) {
|
||||
Vector2 new_pos = Vector2Add(get_entity_center(&enemy->entity), step);
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
|
||||
# include "../include/renderer.h"
|
||||
|
||||
# define DEFAULT_RENDR_ALLOC 1024
|
||||
|
||||
renderer_t global_renderer = {
|
||||
.buffer = NULL,
|
||||
.buffer_counter = 0,
|
||||
.buffer_capacity = 0,
|
||||
};
|
||||
|
||||
|
||||
renderer_t* get_renderer_ptr() {
|
||||
return &global_renderer;
|
||||
}
|
||||
|
||||
void init_render_buffer() {
|
||||
renderer_t* r = get_renderer_ptr();
|
||||
r->buffer = calloc(DEFAULT_RENDR_ALLOC, sizeof(renderdata_t));
|
||||
assert(r->buffer);
|
||||
r->buffer_capacity = DEFAULT_RENDR_ALLOC;
|
||||
r->buffer_counter = 0;
|
||||
}
|
||||
|
||||
void expand_render_buffer() {
|
||||
renderer_t* r = get_renderer_ptr();
|
||||
// double buffer capacity
|
||||
r->buffer = realloc(r->buffer, 2 * sizeof(renderdata_t) * r->buffer_capacity);
|
||||
assert(r->buffer);
|
||||
r->buffer_capacity *= 2;
|
||||
}
|
||||
|
||||
void push_to_render_buffer(renderdata_t data) {
|
||||
renderer_t* r = get_renderer_ptr();
|
||||
if (r->buffer_counter >= r->buffer_capacity) {
|
||||
expand_render_buffer();
|
||||
}
|
||||
r->buffer[r->buffer_counter++] = data;
|
||||
}
|
||||
|
||||
void free_render_buffer() {
|
||||
renderer_t* r = get_renderer_ptr();
|
||||
free(r->buffer);
|
||||
r->buffer = NULL;
|
||||
}
|
||||
|
||||
void clear_render_buffer() {
|
||||
renderer_t* r = get_renderer_ptr();
|
||||
r->buffer_counter = 0;
|
||||
}
|
||||
|
||||
int compare_objects(const void *a, const void *b) {
|
||||
const renderdata_t *objA = (const renderdata_t *)a;
|
||||
const renderdata_t *objB = (const renderdata_t *)b;
|
||||
|
||||
if (objA->ypos < objB->ypos) return -1;
|
||||
if (objA->ypos > objB->ypos) return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sort_render_buffer() {
|
||||
renderer_t* r = get_renderer_ptr();
|
||||
qsort(r->buffer, r->buffer_counter, sizeof(renderdata_t), compare_objects);
|
||||
}
|
||||
|
||||
void ysort_and_render_to_screen() {
|
||||
renderer_t* r = get_renderer_ptr();
|
||||
|
||||
sort_render_buffer();
|
||||
|
||||
for (int i = 0; i < r->buffer_capacity; i++) {
|
||||
// render
|
||||
int type = r->buffer[i].type;
|
||||
renderdata_t* data = &r->buffer[i];
|
||||
switch (type) {
|
||||
case TEXTURE_PRO:
|
||||
DrawTexturePro(data->texture, data->src, data->dest, data->origin, data->rotation, data->tint);
|
||||
break;
|
||||
// TODO: implement
|
||||
default:
|
||||
printf("[!!] Unimplemented renderer! Index: %d", type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+27
@@ -1,9 +1,14 @@
|
||||
#include <raylib.h>
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "../include/tilemap.h"
|
||||
#include "../include/world.h"
|
||||
#include "../include/config.h"
|
||||
#include "../include/enemy.h"
|
||||
|
||||
#define ENEMY_CAP 1024
|
||||
|
||||
void init_world(world_t* world, char* collision_map) {
|
||||
world->col_map = load_tilemap(collision_map);
|
||||
@@ -12,6 +17,24 @@ void init_world(world_t* world, char* collision_map) {
|
||||
world->col_map->columns,
|
||||
world->col_map->tmap
|
||||
);
|
||||
world->enemies = malloc(sizeof(enemy_t) * ENEMY_CAP);
|
||||
assert(world->enemies);
|
||||
world->enemy_counter = 0;
|
||||
}
|
||||
|
||||
void push_enemy_to_world(world_t* world, enemy_t enemy) {
|
||||
if (world->enemy_counter >= ENEMY_CAP) {
|
||||
printf("[!!] MAXIUM ENEMY CAP OVERSTEPPED\n");
|
||||
return;
|
||||
}
|
||||
|
||||
world->enemies[world->enemy_counter++] = enemy;
|
||||
}
|
||||
|
||||
void spawn_enemy(enemy_type_t type, world_t* world, Vector2 position) {
|
||||
enemy_t enemy = create_enemy(type);
|
||||
enemy.entity.position = position;
|
||||
push_enemy_to_world(world, enemy);
|
||||
}
|
||||
|
||||
|
||||
@@ -83,6 +106,8 @@ path_t world_get_path(world_t* world, Vector2 start, Vector2 target, int max_sea
|
||||
.target_pos = (Vector2) { -1, -1 },
|
||||
.index = -1,
|
||||
.finished = true,
|
||||
.current_dir = (Vector2) { -1, -1 },
|
||||
.current_speed = -1,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -103,6 +128,8 @@ path_t world_get_path(world_t* world, Vector2 start, Vector2 target, int max_sea
|
||||
.target_pos = goal,
|
||||
.index = 1, // skip start node, we should already be there
|
||||
.finished = false,
|
||||
.current_dir = (Vector2) { 0.0f, 0.0f },
|
||||
.current_speed = 0,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+22
-16
@@ -7,13 +7,13 @@
|
||||
|
||||
# include <raymath.h>
|
||||
# include <assert.h>
|
||||
# include <stdio.h>
|
||||
|
||||
|
||||
#define MAX_TARGET_POS_CHANGE 40.0f /*In pixels*/
|
||||
|
||||
typedef enum Zombie_Enemy_States {
|
||||
ZOMBIE_ENEMY_IDLE = 0,
|
||||
ZOMBIE_ENEMY_RUNNING = 1,
|
||||
} zombie_enemy_states;
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ void init_zombie_enemy(enemy_t* enemy) {
|
||||
.frame_count = 4,
|
||||
};
|
||||
assert(IsTextureValid(anim.texture));
|
||||
enemy->vision_radius = 150,
|
||||
enemy->vision_radius = 30,
|
||||
enemy->entity = (entity_t) {
|
||||
.anim = anim,
|
||||
|
||||
@@ -42,9 +42,9 @@ void init_zombie_enemy(enemy_t* enemy) {
|
||||
.speed_cap = 60.0f,
|
||||
};
|
||||
|
||||
enemy->set_vel_func = &target_player;
|
||||
enemy->set_vel_func = &pathfind_player;
|
||||
enemy->move_func = &enemy_follow_path;
|
||||
enemy->update_anim_func = &update_animation_path;
|
||||
enemy->update_anim_func = &update_animation_from_path;
|
||||
}
|
||||
|
||||
void new_path(world_t* world, enemy_t* enemy, player_t* player) {
|
||||
@@ -54,32 +54,38 @@ void new_path(world_t* world, enemy_t* enemy, player_t* player) {
|
||||
enemy->path = world_get_path(world, enemy_tile_pos, player_tile_pos, 200);
|
||||
}
|
||||
|
||||
void target_player(world_t* world, enemy_t* enemy, player_t* player) {
|
||||
int dist = Vector2Length(Vector2Subtract(player->entity.position, enemy->entity.position));
|
||||
|
||||
void pathfind_player(world_t* world, enemy_t* enemy, player_t* player) {
|
||||
int dist = Vector2Length(Vector2Subtract(player->entity.position, enemy->entity.position));
|
||||
|
||||
if (enemy->path.nodes) {
|
||||
float target_pos_change = Vector2Length(Vector2Subtract(get_entity_center(&player->entity), tilemap_to_world_coord(enemy->path.target_pos)));
|
||||
printf("target moved %f\n", target_pos_change);
|
||||
if (target_pos_change > MAX_TARGET_POS_CHANGE) {
|
||||
new_path(world, enemy, player);
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ((dist <= enemy->vision_radius && !enemy->path.nodes) || IsKeyDown(KEY_T) || enemy->path.finished) {
|
||||
if (!enemy->path.nodes || IsKeyDown(KEY_T) || enemy->path.finished) {
|
||||
new_path(world, enemy, player);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void update_animation_path(enemy_t* enemy) {
|
||||
}
|
||||
|
||||
void update_animation_velocity(enemy_t* enemy) {
|
||||
if (Vector2Length(enemy->entity.velocity) > 2.0) {
|
||||
play_animation(&(enemy->entity.anim), (int)RUNNING);
|
||||
void update_animation_from_path(enemy_t* enemy, player_t* player) {
|
||||
if (enemy->path.current_dir.x != 0) {
|
||||
// look in direction of path if there is horizontal movement
|
||||
enemy->entity.anim.flipped = enemy->path.current_dir.x < 0;
|
||||
}
|
||||
else {
|
||||
play_animation(&(enemy->entity.anim), (int)IDLE);
|
||||
// when walking only vertiacally look at player
|
||||
enemy->entity.anim.flipped = player->entity.position.x < enemy->entity.position.x;
|
||||
}
|
||||
|
||||
if (enemy->path.current_speed > 0) {
|
||||
play_animation(&enemy->entity.anim, ZOMBIE_ENEMY_RUNNING);
|
||||
}
|
||||
else {
|
||||
play_animation(&enemy->entity.anim, ZOMBIE_ENEMY_IDLE);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user