The new game is finally starting to feel like a game, the player can run, jump, attack and fall down now.
The tile collision code was a challenge because my code was really unclear, not using the states right and using direction and speed instead of velocity.
I've cleaned it up completely after failing for about 5 times trying to get the falling right.
After that, it all became much more clear to me what exactly I had to do to make it work!
Also the code is readable now even by non programmers, and a lot smaller.
This game is really teaching me a lot, not only for game programming but programming in general.
Refactoring is a good idea when you're stuck!