2 #include "mof/ConsoleIO.h"
7 et::World::World(std::vector<et::RegenerationEvent>& regenerationHistory)
9 m_regenerationLevel = 0;
13 std::vector<et::RegenerationEvent> stock;
15 m_pAreaMap = new et::AreaMap(10 , 10);
16 for(int i = 0 ; i < regenerationHistory.size() ; i++){
17 et::RegenerationEvent event = regenerationHistory.at(i);
18 if(event.isSleepEvent()){
20 for(int j = 0 ; j < stock.size() ; j++){
21 regenePoint += updateAreaPowerLevel(stock.at(j).position , stock.at(j));
25 else stock.push_back(event);
28 for(int i = 0 ; i < stock.size() ; i++){
29 //
\94z
\92u
\8dÏ
\82Ý
\83G
\83\8c\83\81\83\93\83g
\82Æ
\82µ
\82Ä
\8f\88\97\9d
30 et::Area area = m_pAreaMap->get(stock.at(i).position.x , stock.at(i).position.y);
31 if(stock.at(i).forest)area.forestGen = true;
33 m_regenerationLevel = regenePoint / 10;
36 et::World::~World(void)
42 int et::World::updateAreaPowerLevel(mof::Vector2D& position , et::RegenerationEvent& event){
44 static int tableX[] = { -1 , 0 , 1 , -1 , 0 , 1 , -1 , 0 , 1};
45 static int tableY[] = { -1 , -1 , -1 , 0 , 0 , 0 , 1 , 1 , 1};
46 static int tableEffect[] = { 1 , 3 , 1 , 3 , 5 , 3 , 1 , 3 , 1};
47 for(int i = 0 ; i < 9 ; i++){
48 mof::Vector2D target = position;
49 target.x += tableX[i];
50 target.y += tableY[i];
51 if(0 <= target.x && target.x < m_pAreaMap->getWidth() && 0 <= target.y && target.y < m_pAreaMap->getHeight() ){
52 et::Area area = m_pAreaMap->get(target.x , target.y);
54 int tmp = area.powerLevel.forest;
55 area.powerLevel.forest += tableEffect[i];
56 if(area.powerLevel.forest > 9)area.powerLevel.forest = 9;
57 regenePoint += area.powerLevel.forest - tmp;
59 m_pAreaMap->set(target.x , target.y , area);
67 et::Area& et::World::getArea(int x , int y){
68 return m_pAreaMap->get(x , y);
71 void et::World::setArea(int x , int y , et::Area& area){
72 m_pAreaMap->set(x , y , area);
77 et::AreaPowerLevelMap et::World::getAreaPowerLevelMap(){
78 et::AreaPowerLevelMap powerLevelMap(m_pAreaMap->getWidth() , m_pAreaMap->getHeight());
79 for(int x = 0 ; x < powerLevelMap.getWidth() ; x++){
80 for(int y = 0 ; y < powerLevelMap.getHeight() ; y++)powerLevelMap.set(x , y , m_pAreaMap->get(x , y).powerLevel);