EvaluateComplexOperation(IToken x, IToken y, Tokens o) { Variable vx = ConvertTokenToVariable(x); Variable vy = ConvertTokenToVariable(y); Variable vr; string vname; Constraint c; switch (o) { case Tokens.EQ: return(new ConstraintToken(new Equals(_network, vx, vy))); case Tokens.NEQ: return(new ConstraintToken(new NotEquals(_network, vx, vy))); case Tokens.GT: c = new IntComparison(_network, IntComparison.Gt, vx, vy); return(new ConstraintToken(c)); case Tokens.GEQ: c = new IntComparison(_network, IntComparison.Ge, vx, vy); return(new ConstraintToken(c)); case Tokens.LT: c = new IntComparison(_network, IntComparison.Lt, vx, vy); return(new ConstraintToken(c)); case Tokens.LEQ: c = new IntComparison(_network, IntComparison.Le, vx, vy); return(new ConstraintToken(c)); case Tokens.PLUS: vname = "(" + vx.ToString() + " + " + vy.ToString() + ")"; vr = new IntVariable(_network, vname); new IntArith(_network, IntArith.Add, vr, vx, vy); return(new VariableToken(vr)); case Tokens.MINUS: vname = "(" + vx.ToString() + " - " + vy.ToString() + ")"; vr = new IntVariable(_network, vname); new IntArith(_network, IntArith.Subtract, vr, vx, vy); return(new VariableToken(vr)); case Tokens.MULT: vname = "(" + vx.ToString() + " * " + vy.ToString() + ")"; vr = new IntVariable(_network, vname); new IntArith(_network, IntArith.MULTIPLY, vr, vx, vy); return(new VariableToken(vr)); default: throw new ArgumentException(); } }
// Takes all loadables and displays loadable panels public void DrawLoadablePanels() { LoadablePanels.Children.Clear(); LoadParser level = GameState.GetLevel(); if (level is null) { return; } IntComparison.QSort(level.Loadables); foreach (Loadable loadable in level.Loadables) { LoadablePanels.Children.Add((UIElement)loadable.GetLoadablePanel()); } }