Yes, that solution will require a lot of changes.

I use 2 different collision detection methods.
What I do is this :
1) I'm using Borland Delphi and Omega/DelphiX, so for enemy colision detection I use Omega's function (it automatically detect collision with other sprites, so it saves a lot of work).

2) Platforms and walls are the real problem
Here I need more information than just knowing that there's been a collision. I need directions. What I do is use 4 functions, one for left collision, another for right, up and down.
Example :
When the sprite moves right, I calculate the current speed and the pixels that are going to be "walked", then I call the right_collison function, that cheks that there are no walls or obstacles. If there are, then it returns the maximun numer of pixel that can be walked before we have to stop (colision). Same applies to left side, botton side, and top side. Botton side is always checked cause os gravity.

What do you think?
Today I've been working on diagonal platforms (45 degrees). I managed to do something, but I'm finding that it is quite difficult task. (i don't know really if finally i'll go on with it). Anyway, I need to definetly implement my collision detection method for platforms.

Thanks man!