]> git.localhorst.tv Git - l2e.git/blobdiff - src/battle/BattleState.cpp
set resizable flag for screen surface
[l2e.git] / src / battle / BattleState.cpp
index 25fb09c0e59b171100f1de77f0bee853337e0243..5f50109b7585682c520d8ff09921de6787a80f20 100644 (file)
@@ -7,12 +7,27 @@
 
 #include "BattleState.h"
 
+#include "PartyLayout.h"
+#include "../graphics/Sprite.h"
+
+#include <stdexcept>
+
 using app::Application;
 
+using std::vector;
+
 namespace battle {
 
-void BattleState::EnterState(Application &ctrl, SDL_Surface *screen) {
+void BattleState::AddMonster(const Monster &m) {
+       if (monsters.size() >= monstersLayout->NumPositions()) {
+               throw std::overflow_error("too many monsters for layout");
+       }
+       monsters.push_back(m);
+}
+
 
+void BattleState::EnterState(Application &ctrl, SDL_Surface *screen) {
+       monstersLayout->CalculatePositions(background->w, background->h, monsterPositions);
 }
 
 void BattleState::ExitState() {
@@ -31,6 +46,9 @@ void BattleState::UpdateWorld(float deltaT) {
 void BattleState::Render(SDL_Surface *screen) {
        // TODO: center background if screen bigger
        SDL_BlitSurface(background, 0, screen, 0);
+       for (vector<Monster>::size_type i(0), end(monsters.size()); i < end; ++i) {
+               monsters[i].Sprite()->DrawCenterBottom(screen, monsterPositions[i]);
+       }
 }
 
 }