public void SubtractTop2ValuesOnStack(CommandParams param) { int a = ExprStack.PopNumber(); int b = ExprStack.PopNumber(); ExprStack.Push(b - a); }
public ProgramLine(int sourceLineNumber, int actualLineNumber, string command, CommandParams param) { SourceLineNumber = sourceLineNumber; ActualLineNumber = actualLineNumber; Command = command; Params = param; }
public void AddTop2ValuesOnStack(CommandParams param) { int a = ExprStack.PopNumber(); int b = ExprStack.PopNumber(); ExprStack.Push(a + b); }
public void PushToStack(CommandParams param) { foreach (string value in param.ToList()) { ExprStack.Push(value.Trim()); } }
public void MultiplyTop2ValuesOnStack(CommandParams param) { int a = ExprStack.PopNumber(); int b = ExprStack.PopNumber(); ExprStack.Push(a * b); }
public void SetTargetPosition(CommandParams param) { int layer = param.GetNumber(); int x = param.GetNumber(); int y = param.GetNumber(); TargetObject = new ObjectPosition(layer, x, y); }
public void InitMapRenderer(CommandParams param) { int x = param.GetNumber(); int y = param.GetNumber(); int cols = param.GetNumber(); int rows = param.GetNumber(); MapRenderer = new MapRenderer(Map, Window.Display, new Rectangle(x, y, cols, rows)); }
public void IfKeyPressedGoto(CommandParams param) { string key = param.GetString(); string label = param.GetString(); if (IsKeyPressed(key)) { GoToLabel(label); } }
public void IfKeyPressedCall(CommandParams param) { string key = param.GetString(); string label = param.GetString(); if (IsKeyPressed(key)) { CallSubroutineAtLabel(label); } }
public void PutObject(CommandParams param) { AssertTargetPosition(); GameObject o = new GameObject(new Tile()); o.Id = param.GetString(); o.Animation.Clear(); Map.PutObject(o, TargetObject); }
public void FindObjectById(CommandParams param) { PositionedObject po = Map.FindObjectById(param.GetString()); if (po == null) { throw new PTMException("Object not found with id: " + param); } TargetObject = po.Position; }
public void MoveObjectTo(CommandParams param) { AssertTargetPosition(); int layer = param.GetNumber(); int x = param.GetNumber(); int y = param.GetNumber(); ObjectPosition newPosition = new ObjectPosition(layer, x, y); Map.MoveObject(TargetObject, newPosition); }
public void SetVariable(CommandParams param) { string name = param.GetStringDirect().Trim(); string value = param.GetString().Trim(); if (!name.StartsWith("$")) { throw new PTMException("Invalid variable name"); } Vars.Set(name, value); }
public void AddObjectAnimation(CommandParams param) { AssertTargetPosition(); int tileIx = param.GetNumber(); int tileFgc = param.GetNumber(); int tileBgc = param.GetNumber(); GameObject o = Map.GetObject(TargetObject); o.Animation.AddFrame(new Tile(tileIx, tileFgc, tileBgc)); }
public void DivideTop2ValuesOnStack(CommandParams param) { int divisor = ExprStack.PopNumber(); if (divisor == 0) { throw new PTMException("Division by zero"); } int dividend = ExprStack.PopNumber(); ExprStack.Push(dividend / divisor); }
public void MoveObjectByDistance(CommandParams param) { AssertTargetPosition(); int distLayer = param.GetNumber(); int distX = param.GetNumber(); int distY = param.GetNumber(); ObjectPosition newPosition = new ObjectPosition(TargetObject); newPosition.MoveDistance(distX, distY); newPosition.AtLayer(newPosition.Layer + distLayer); Map.MoveObject(TargetObject, newPosition); }
public void DivideTop2ValuesOnStackPushRemainder(CommandParams param) { int divisor = ExprStack.PopNumber(); if (divisor == 0) { throw new PTMException("Division by zero"); } int dividend = ExprStack.PopNumber(); Math.DivRem(dividend, divisor, out int remainder); ExprStack.Push(remainder); }
public void DumpExprStack(CommandParams param) { if (ExprStack.Count > 0) { Debugger.Println("--- Stack ---"); foreach (string value in ExprStack) { Debugger.Println(" " + value); } } else { Debugger.Println("--- Stack empty ---"); } }
public void DumpVariables(CommandParams param) { if (Vars.Count > 0) { Debugger.Println("--- Variables ---"); foreach (Variable var in Vars) { string name = var.Name; string value = var.Value != null?var.Value.ToString() : "<null>"; Debugger.Println($" {name} = {value}"); } } else { Debugger.Println("--- Variables empty ---"); } }
public void LoadMap(CommandParams param) { try { Map = MapFile.LoadFromRawBytes(param.GetString()); Window.Graphics.Tileset = Map.Tileset; Window.Graphics.Palette = Map.Palette; if (MapRenderer != null) { MapRenderer.Map = Map; } } catch (DirectoryNotFoundException dnfex) { throw new PTMException("Map file not found: " + dnfex.Message); } catch (FileNotFoundException fnfex) { throw new PTMException("Map file not found: " + fnfex.FileName); } }
public void InitWindow(CommandParams param) { if (param.Count != 5) { throw new PTMException("Invalid parameter count"); } try { string title = param.GetString(); int width = param.GetNumber(); int height = param.GetNumber(); int cols = param.GetNumber(); int rows = param.GetNumber(); Window = new GameWindow(this, "", cols, rows); Window.Size = new Size(width, height); Window.Text = title; } catch (Exception ex) { throw new PTMException("Invalid parameter(s)"); } }
public void GoToLabel(CommandParams param) { ProgramPtr = TryGetLabelLineNumber(param.GetString()); }
public void ReturnFromSubroutine(CommandParams param) { ProgramPtr = CallStack.PopNumber(); }
public void CallLabel(CommandParams param) { CallStack.Push(ProgramPtr); ProgramPtr = TryGetLabelLineNumber(param.GetString()); }
public void DumpCurrentCycle(CommandParams param) { Debugger.Println(Cycle); }
public void StoreStackToVariable(CommandParams param) { Vars.Set(param.GetString(), ExprStack.PopString()); }
public void LoadVariableToStack(CommandParams param) { ExprStack.Push(Vars.GetAsString(param.GetString())); }
public void DecrementStackTop(CommandParams param) { ExprStack.Push(ExprStack.PopNumber() - 1); }
public void Exit(CommandParams param) { Exit(); }
public void PushDuplicateToStack(CommandParams param) { ExprStack.DuplicateTop(); }