/// <summary> /// 指定の金の保有量になったら、指定の資源を指定の保有量になるまで売ります /// </summary> /// <param name="commodity">売る資源</param> /// <param name="needGoldAmount">必要な金の保有量</param> /// <param name="LimitationAmount">買いをやめる資源の保有量</param> public BuyShortageCommodity(commodity commodity, short needGoldAmount, short LimitationAmount) { AIFactRelOp buyCommodityAmount = commodity switch { commodity.food => new food_amount(relop.le, LimitationAmount), commodity.stone => new stone_amount(relop.le, LimitationAmount), commodity.wood => new wood_amount(relop.le, LimitationAmount), _ => throw new Exception(), }; Facts.Add( new can_buy_commodity(commodity), new gold_amount(relop.ge, needGoldAmount), buyCommodityAmount ); Actions.Add(new buy_commodity(commodity)); }
/// <summary> /// 指定の保有量になった資源を、指定の金の保有量になるか指定の保有量以下になるまで売ります /// </summary> /// <param name="commodity">売る資源</param> /// <param name="needAmount">必要な資源の保有量</param> /// <param name="LimitationGoldAmount">売りをやめる金の保有量</param> public SellSurplusCommodity(commodity commodity, short needAmount, short LimitationGoldAmount) { AIFactRelOp sellCommodityAmount = commodity switch { commodity.food => new food_amount(relop.ge, needAmount), commodity.stone => new stone_amount(relop.ge, needAmount), commodity.wood => new wood_amount(relop.ge, needAmount), _ => throw new Exception(), }; Facts.Add( new can_sell_commodity(commodity), new gold_amount(relop.le, LimitationGoldAmount), sellCommodityAmount ); Actions.Add(new sell_commodity(commodity)); }