What I'm currently working on is my battle engine. Basically what I decided to do is keep a gamescreen of the battle on the background (with enemies, the party and the skill animations) and then add on top of it a battlemenu menuscreen which navigates through the available commands for my characters.
Then I created a BattleEventArgs Event type to interact between the two screens. This event returns an Action type with datas of the type of the action (skill, item, attack, run, etc etc), the ID of the said action in the database (Item database or skill database, depends on the action) and the ID of the target in battle, which is the index of the entity in the party (both enemy or player party, depends on the type of skill or item, be it healing or attacking skill/item).
Then when I return to the battlescreen, the menu disappears and the battle goes on, it cycles through all the entities on the field to see who's striking first (based on a speed check, dexterity stat) and if it's a player, it brings up the battlemenu, else it runs the enemy AI script (which I have yet to make).
It's a nice battle system in my opinion, I'm only having a bit of problems with cycling through the different options in the menu, as some of them may have a multiple list to access to (skill command -> list of skills -> list of entities to use the skill on. Then return the selected entity and the selected skill..) but I'll work something out.