void validateDueContracts(List <Contract> dueContracts) { // print("validating"); foreach (var contract in dueContracts) { // print("contract: " + contract.Name); bool valid = true; foreach (var crop in contract.Crops) { // print("crop: " + crop.Key); int harvestedCropCount; if (harvestedCrops.TryGetValue(crop.Key, out harvestedCropCount)) { // print("found: " + crop.Key); harvestedCropCount -= crop.Value; if (harvestedCropCount >= 0) { harvestedCrops[crop.Key] = harvestedCropCount; continue; } } else { print("contract: " + contract.Name); print("missing: " + crop.Key); valid = false; break; } } if (valid) { print("redeemed contract: " + contract.Value); cash += contract.Value; ledger.RedeemContract(contract); } else { cash -= (int)(contract.Value * 1.1f); ledger.CancelContract(contract); } } }