/* ********************************** * SetQualities.java * SetQualities * **********************************/ package admin.utils; import edu.neu.ccs.demeterf.*; import edu.neu.ccs.demeterf.demfgen.lib.Option; import edu.neu.ccs.demeterf.demfgen.lib.Some; import gen.*; import admin.hidden.*; /** * @author Alex Dubreuil */ public class SetQualities extends Bc{ /** TODO: Fix kludge-y singleton stuff. */ static Traversal setQT = new Traversal(new SetQuality(), Control.builtins(RawMaterialInstance.class)); public Transaction combine(Transaction trans, TransactionType ttype, Derivative deriv){ if(ttype.getClass().equals(Finish.class)) return new Transaction(ttype, setQT.traverse(deriv)); return trans; } public static PlayerTransaction setQs(PlayerTransaction pTrans, Control c){ return new Traversal(new SetQualities(), c).traverse(pTrans); } } class SetQuality extends Bc{ public Derivative combine(Derivative d) { return d; } public Derivative combine(Derivative d, String name, PlayerID seller, Option buyer, Price price, Type type, Some rm, Some fp) { return new Derivative(name, seller, buyer, price, type, rm, Option.some(new FinishedProduct(fp.inner().ip, ComputeQuality.quality(rm.inner(), fp.inner().ip.assignment)))); } }