protected override void considerBuy() { decimal orePrice = ((VillageSim)(Simulation.SimInstance)).Markets[(int)Profession.Miner].getLastPrice(); RTMarket toolMarket = ((VillageSim)(Simulation.SimInstance)).Markets[(int)Profession.Blacksmith]; if (Inventory[(int)Profession.Blacksmith] == 0) { toolMarket.searchOffer(this, (int)Profession.Blacksmith, 1, orePrice * 4); } base.considerBuy(); }
protected override void considerBuy() { RTMarket woodMarket = ((VillageSim)(Simulation.SimInstance)).Markets[(int)Profession.Lumberjack]; RTMarket oreMarket = ((VillageSim)(Simulation.SimInstance)).Markets[(int)Profession.Miner]; RTMarket toolMarket = ((VillageSim)(Simulation.SimInstance)).Markets[(int)Profession.Blacksmith]; decimal productionCosts = 1 * (woodMarket.getLastPrice() + oreMarket.getLastPrice()); //if(toolMarket.getLastPrice() > productionCosts) { woodMarket.searchOffer(this, (int)Profession.Lumberjack, 2, woodMarket.getLastPrice() + 0.2m); oreMarket.searchOffer(this, (int)Profession.Miner, 2, oreMarket.getLastPrice() + 0.2m); //} base.considerBuy(); }
protected override void considerBuy() { RTMarket woodMarket = ((VillageSim)(Simulation.SimInstance)).Markets[(int)Profession.Lumberjack]; RTMarket toolMarket = ((VillageSim)(Simulation.SimInstance)).Markets[(int)Profession.Blacksmith]; decimal foodPrice = ((VillageSim)(Simulation.SimInstance)).Markets[(int)Profession.Farmer].getLastPrice(); // buy wood if (Inventory[(int)Profession.Lumberjack] < 3) { woodMarket.searchOffer(this, (int)Profession.Lumberjack, 2, foodPrice); } // buy tools if (Inventory[(int)Profession.Blacksmith] == 0) { toolMarket.searchOffer(this, (int)Profession.Blacksmith, 1, foodPrice * 4); } }
// buy logic // implementation for food protected virtual void considerBuy() { RTMarket foodMarket = ((VillageSim)(Simulation.SimInstance)).Markets[(int)Profession.Farmer]; if (Inventory[(int)Profession.Farmer] < 2) { decimal lastLogPrice = foodMarket.getLastPrice(); int buyAmmount = (int)(Cash / lastLogPrice); if (buyAmmount > 3) { buyAmmount = 3; } // buy max possible ammount or 3 at 0.1 more than market price foodMarket.searchOffer(this, (int)Profession.Farmer, buyAmmount, lastLogPrice + 10m); } }
// constructor public VillageSim(int ammountPerProf, decimal moneysupply) { // get professions from enum at compile profAmmount = Enum.GetNames(typeof(Profession)).Length; SimInstance = this; Population = new HashSet <Person>(); Demographics = new HashSet <Person> [profAmmount]; MoneySupply = moneysupply; initPopulation(ammountPerProf); Markets = new RTMarket[profAmmount]; for (int i = 0; i < profAmmount; i++) { Markets[i] = new RTMarket(profAmmount); } }
protected virtual void considerSell() { int ammountResource = Inventory[(int)Role]; if (ammountResource <= 1) { return; } RTMarket resourceMarket = ((VillageSim)(Simulation.SimInstance)).Markets[(int)Role]; // last price comes with how long it took to find. 0 trade days mean lower price. int searchDelay; //decimal resourcePrice = resourceMarket.getLastPrice(out searchDelay); decimal resourcePrice = resourceMarket._getLastPrice(out searchDelay) + 0.5m; // // old random offset from last price // int randomNum = rnd.Next(-3, 9); // if(randomNum < -1) { // randomNum = -1; // } // random number cycles int randomNum = currentCycleValue - cycleOffset; currentCycleValue = (currentCycleValue + 1) % cycleSize; // decimal randomPrice = decimal.Divide(randomNum, 20) + resourcePrice - searchDelay*0.5m; decimal randomPrice = decimal.Divide(randomNum, 5) + resourcePrice - searchDelay * 0.5m; if (randomPrice < 0.2m) { randomPrice = 0.2m; } resourceMarket.placeOffer(this, ammountResource, randomPrice); }