Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <fstream>
- #include <sstream>
- #include <string>
- #include <map>
- #include <algorithm>
- #include <iterator>
- #include <vector>
- using namespace std;
- class Holdings
- {
- private:
- int strToInt(string s)
- {
- istringstream is;
- is.str(s);
- int i;
- is >> i;
- return i;
- }
- public:
- map <string, int> data;
- //takes data from EmpireHoldings.dat and assigns it to variables
- int getHoldings(string strStartRead, string strEndRead)
- {
- ifstream fin("EmpireHoldings.dat");
- while (true)
- {
- string strFindStart;
- getline (fin, strFindStart);
- if (strFindStart == strStartRead)
- {
- cout << strFindStart << endl; //need to make it print to a file instead of to console
- break;
- }
- }
- while (true)
- {
- istringstream is;
- string key;
- int value;
- string line;
- getline(fin, line);
- if (line == strEndRead) break;
- cout << line << endl; //need to make it print to a file instead of to console
- is.str(line);
- is >> key;
- is >> value;
- data[key] = value;
- }
- fin.close();
- return 0;
- }
- int getInputs(string strStartRead, string strEndRead) //changes variables based on HFC Input.dat
- {
- ifstream inf("HFC Input.dat");
- //need to make upkeep function (population consuming food, etc)
- while(true)
- {
- string strFindStart;
- getline(inf, strFindStart);
- if (strFindStart == strStartRead) break;
- }
- int nTemporaryPopulation = data["Population:"];
- while(true)
- {
- string strCommand;
- getline(inf, strCommand);
- if (strCommand == strEndRead) break;
- istringstream iss(strCommand);
- vector<string> tokens;
- copy(istream_iterator<string>(iss), istream_iterator<string>(), back_inserter<vector<string> >(tokens));
- int nX = 0;
- if (nTemporaryPopulation < 1) break;
- int y;
- y = strToInt(tokens[nX + 1]);
- nTemporaryPopulation = nTemporaryPopulation - y;
- if (tokens[nX] == "build")
- {
- if (tokens[nX + 2] == "towns")
- data["towns:"]= data["towns:"] + y;
- if (tokens[nX + 2] == "farms")
- data["farms:"] = data["farms:"] + y;
- if (tokens[nX + 2] == "stables")
- data["stables:"] = data["stables:"] + y;
- if (tokens[nX + 2] == "naturepreserves")
- data["nature preserves:"] = data["nature preserves:"] + y;
- if (tokens[nX + 2] == "fisheries")
- data["fisheries:"] = data["fisheries:"] + y;
- if (tokens[nX + 2] == "mines")
- data["mines:"] = data["mines:"] + y;
- if (tokens[nX + 2] == "forges")
- data["forges:"] = data["forges:"] + y;
- if (tokens[nX + 2] == "subterraneanfarms")
- data["subterranean farms:"] = data["subterranean farms:"] + y;
- if (tokens[nX + 2] == "fortresses")
- data["fortresses:"] = data["fortresses:"] + y;
- if (tokens[nX + 2] == "graveyards")
- data["graveyards:"] = data["graveyards:"] + y;
- if (tokens[nX + 2] == "unicorn pens")
- data["unicorn pens:"] = data["unicorn pens:"] + y;
- }
- if (tokens[nX] == "work")
- {
- if (tokens[nX + 2] == "towns")
- {
- if (strStartRead == "*Human Empire"|| strStartRead == "*Kobold Empire")
- data["Population:"] = data["Population:"] + (2 * y);
- else
- data["Population:"] = data["Population:"] + y;
- }
- if (tokens[nX + 2] == "farms"|| tokens[nX + 2] == "fisheries"|| (tokens[nX + 2] == "subterranean" && tokens[nX + 3] == "farms"))
- {
- if (strStartRead == "*Halfling Empire")
- data["food:"] = data["food:"] + (y * 6);
- else
- data["food:"] = data["food:"] + (y * 2);
- }
- if (tokens[nX + 2] == "stables")
- data["horses:"] = data["horses:"] + y;
- if (tokens[nX + 2] == "nature" && tokens[nX + 3] == "preserves")
- data["food:"] = data["food:"] + (y * 2);
- if (tokens[nX + 2] == "graveyards")
- data["Population:"] = data["Population:"] - 1;
- //+ 1 undead army
- if (tokens[nX + 2] == "unicorn" && tokens[nX + 3] == "pens")
- data["unicorns"] = data["unicorns"] + y;
- //need to do a thing for mines
- }
- if (tokens[nX] == "smelt")
- {
- if (tokens[nX + 2] == "iron")
- {
- data["Iron Ore:"] = data["Iron Ore:"] - y;
- data["Coal:"] = data["Coal:"] - y;
- data["Iron Bars:"] = data["Iron Bars:"] + y;
- }
- if (tokens[nX + 2] == "steel")
- {
- data["Iron Bars"] = data["Iron Bars"] - (y * 2);
- data["Coal:"] = data["Coal:"] - (y * 2);
- data["Steel Bars:"] = data["Steel Bars:"] + y;
- }
- if (tokens[nX + 2] == "mithril")
- {
- data["Raw Mithril:"] = data["Raw Mithril"] - y;
- data["Coal:"] = data["Coal:"] - (y * 10);
- data["Mithril Bars:"] = data["Mithril Bars:"] + y;
- }
- }
- if (tokens[nX] == "forge")
- {
- if (tokens[nX + 2] == "iron")
- {
- if (tokens[nX + 3] == "armor")
- {
- data["Iron Bars:"] = data["Iron Bars:"] - (y * 5);
- data["Iron Armor:"] = data["Iron Armor:"] + y;
- }
- if (tokens[nX + 3] == "weapons")
- {
- data["Iron Bars:"] = data["Iron Bars:"] - (y * 3);
- data["Iron Weapons:"] = data["Iron Weapons:"] + y;
- }
- }
- if (tokens[nX + 2] == "steel")
- {
- if (tokens[nX + 3] == "armor")
- {
- data["Steel Bars:"] = data["Steel Bars:"] - (y * 5);
- data["Steel Armor:"] = data["Steel Armor:"] + y;
- }
- if (tokens[nX + 3] == "weapons")
- {
- data["Steel Bars:"] = data["Steel Bars:"] - (y * 3);
- data["Steel Weapons:"] = data["Steel Weapons:"] + y;
- }
- }
- if (tokens[nX + 2] == "mithril")
- {
- if (tokens[nX + 3] == "armor")
- {
- data["Mithril Bars:"] = data["Mithril Bars:"] - (y * 5);
- data["Mithril Armor:"] = data["Mithril Armor:"] + y;
- }
- if (tokens[nX + 3] == "weapons")
- {
- data["Mithril Bars:"] = data["Mithril Bars:"] - (y * 3);
- data["Mithril Weapons:"] = data["Mithril Weapons:"] + y;
- }
- }
- }
- }
- inf.close();
- return 0;
- }
- //prints up-to-date data to EmpireHoldings.dat
- int printHoldings()
- {
- map<string, int>::iterator it;
- for (it = data.begin(); it != data.end(); it++)
- {
- cout << it -> first;
- cout << it -> second;
- }
- return 0;
- }
- };
- int main()
- {
- Holdings HumanHoldings;
- HumanHoldings.getHoldings("*Human Empire:", "endHuman");
- HumanHoldings.getInputs("*Human Empire:", "endHuman");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement