tweaks and proper y sorting for player, enemy

This commit is contained in:
Magnus Küderli
2025-10-28 19:16:01 +01:00
parent 4f1385fac2
commit b862f256ea
22 changed files with 371 additions and 108 deletions
+32 -32
View File
@@ -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
1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -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 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -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 -1 -1 -1 -1 -1 -1 -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
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 5 2 -1 -1 -1 -1 -1 -1 -1
5 -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 -1 1 4 4 5 -1 -1 -1 -1
6 -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 1 -1 1 -1 1 2 5 -1 -1 -1
7 -1 -1 -1 -1 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 1 -1 1 -1 1 2 5 -1 -1
8 -1 -1 -1 -1 1 -1 -1 -1 10 -1 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 1 -1 1 -1 1 2 5 -1
9 -1 -1 -1 -1 1 -1 -1 -1 10 -1 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 1 -1 1 -1 1 2 -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 2 3 3 -1 1 -1 1 3 3 5 -1
11 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1
12 -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
13 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
14 -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
15 -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
16 -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 3 3 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
17 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -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
18 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
19 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
20 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
21 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -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 10 -1 10 -1 -1 -1 -1 -1
22 -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 10 -1 -1 -1 -1 -1
23 -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 10 -1 -1 -1 -1 -1
24 -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
25 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -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
26 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -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
27 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -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
28 -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 10 -1 -1 -1 -1 -1
29 -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 10 -1 -1 -1 -1 -1
30 -1 -1 -1 -1 -1 -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 10 -1 -1 -1 -1 -1
31 -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 10 -1 -1 -1 -1 -1
32 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 -1 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 8 -1 10 -1 -1 -1 -1 -1
33 -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 10 -1 -1 -1 -1 -1
34 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 -1 1 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 6 1 1 8 -1 -1 -1 10 -1 10 -1 -1 -1 -1
35 -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 10 -1 10 -1 -1 -1
36 -1 -1 -1 -1 1 -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 10 -1 10 -1 10 -1 10 -1 10 -1 10 -1 10 -1 10 -1 10 -1 10 -1 10
37 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -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
38 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -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
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 10 -1 -1 -1
40 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -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 10 -1 10 -1
+32 -32
View File
@@ -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

+12
View File
@@ -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",
+2
View File
@@ -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
View File
@@ -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);
+1
View File
@@ -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);
+38
View File
@@ -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();
+10
View File
@@ -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);
+3 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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);
+88
View File
@@ -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
View File
@@ -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
View File
@@ -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);
}
}
BIN
View File
Binary file not shown.