UNPKG

kraft

Version:

A mysterious command line game with lots of secrets

48 lines (31 loc) 1.79 kB
const Lenses = require(__base+'helpers/Lenses'); const Flow = require(__base+'helpers/Flow'); const Output = require(__base+'helpers/Output'); const Items = require(__base+'model/data/Items'); const P = require(__base+'model/player/PlayerModel'); const getCurrentMillis = () => new Date().getTime(); const updateJobForBuilding = (building) => { const item = P.buildingActionArguments(P.location.view(), building).view(); const interval = getCurrentMillis() - P.buildingActionStart(P.location.view(), building).view(); const time = Math.floor(interval / Items[item].requires.time); const resources = R.head(R.keys(Items[item].requires.resources) .map((resource) => Math.floor(P.buildingResource(P.location.view(), building, resource).view(0) / Items[item].requires.resources[resource])) .sort((a,b) => a - b)); // The amount of products made const amount = R.min(time, resources); // Remove the resources from the player R.keys(Items[item].requires.resources).forEach((resource) => { P.buildingResource(P.location.view(), building, resource).min(amount * Items[item].requires.resources[resource]); }); // Add the items to the building P.buildingResource(P.location.view(), building, item).add(amount); // Restart the job P.buildingActionStart(P.location.view(), building).set(getCurrentMillis()); }; exports.checkCurrentJobs = () => { const buildings = P.locationBuildings(P.location.view()).view() || []; const filtered = R.keys(buildings).filter((building) => P.buildingActionType(P.location.view(), building).view() === 'job'); filtered.forEach(updateJobForBuilding); // Save but show no output Output.saveWithoutOutput(Lenses.config()); };