void Room::initializeFromFile(std::ifstream& fin, std::vector<Monster>& temp, std::vector<Items>& temp2, int level) { initialized = true; fin >> width; fin >> height; int nMonsters; fin >> nMonsters; for (int i = 0; i < nMonsters; i++) { std::string name; fin >> name; MonsterInstance* m = 0; for (int i = 0; i < temp.size(); i++) { if (!name.compare(temp[i].getName())) m = new MonsterInstance(temp[i]); } if (m == 0) throw "bad monster name"; int x, y; fin >> x; fin >> y; m->setCoords(x, y); monsters.push_back(*m); } int nItems; fin >> nItems; for (int i = 0; i < nItems; i++) { std::string name; fin >> name; ItemInstance* m = 0; for (int i = 0; i < temp2.size(); i++) { if (!name.compare(temp2[i].getName())) m = new ItemInstance(temp2[i]); } if (m == 0) throw "bad item name"; int x, y; fin >> x; fin >> y; m->setCoords(x, y); items.push_back(*m); } }
void Room::initializeRandom(std::vector<Monster>& tempM, std::vector<Items>& tempI, int level) { initialized = true; width = 5 + rand() % 5; height = 5 + rand() % 5; int nMonsters = maxMonsters != 0?rand() % maxMonsters:0; std::vector<Monster> vm; for (int i = 0; i < tempM.size(); i++) { if (tempM[i].getScale() <= level) vm.push_back(tempM[i]); } for (int i = 0; i < nMonsters; i++) { MonsterInstance m(vm[rand() % vm.size()]); m.setCoords(rand() % width, rand() % height); monsters.push_back(m); } int nItems = rand() % maxItems; std::vector<Items> wal; std::vector<Items> ol; for (int i = 1; i < tempI.size(); i++) { if (tempI[i].getType() == 2) { if (tempI[i].getScale() <= level) ol.push_back(tempI[i]); } else if (tempI[i].getScale() <= level) wal.push_back(tempI[i]); } for (int i = 0; i < nItems; i++) { ItemInstance* m; if (rand() % 100 < 20) { m = new ItemInstance(wal[rand() % wal.size()]); } else { m = new ItemInstance(ol[rand() % ol.size()]); } m->setCoords(rand() % width, rand() % height); items.push_back(*m); } }