Beispiel #1
0
        public void SubtractTop2ValuesOnStack(CommandParams param)
        {
            int a = ExprStack.PopNumber();
            int b = ExprStack.PopNumber();

            ExprStack.Push(b - a);
        }
Beispiel #2
0
 public ProgramLine(int sourceLineNumber, int actualLineNumber, string command, CommandParams param)
 {
     SourceLineNumber = sourceLineNumber;
     ActualLineNumber = actualLineNumber;
     Command          = command;
     Params           = param;
 }
Beispiel #3
0
        public void AddTop2ValuesOnStack(CommandParams param)
        {
            int a = ExprStack.PopNumber();
            int b = ExprStack.PopNumber();

            ExprStack.Push(a + b);
        }
Beispiel #4
0
 public void PushToStack(CommandParams param)
 {
     foreach (string value in param.ToList())
     {
         ExprStack.Push(value.Trim());
     }
 }
Beispiel #5
0
        public void MultiplyTop2ValuesOnStack(CommandParams param)
        {
            int a = ExprStack.PopNumber();
            int b = ExprStack.PopNumber();

            ExprStack.Push(a * b);
        }
Beispiel #6
0
        public void SetTargetPosition(CommandParams param)
        {
            int layer = param.GetNumber();
            int x     = param.GetNumber();
            int y     = param.GetNumber();

            TargetObject = new ObjectPosition(layer, x, y);
        }
Beispiel #7
0
        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));
        }
Beispiel #8
0
        public void IfKeyPressedGoto(CommandParams param)
        {
            string key   = param.GetString();
            string label = param.GetString();

            if (IsKeyPressed(key))
            {
                GoToLabel(label);
            }
        }
Beispiel #9
0
        public void IfKeyPressedCall(CommandParams param)
        {
            string key   = param.GetString();
            string label = param.GetString();

            if (IsKeyPressed(key))
            {
                CallSubroutineAtLabel(label);
            }
        }
Beispiel #10
0
        public void PutObject(CommandParams param)
        {
            AssertTargetPosition();

            GameObject o = new GameObject(new Tile());

            o.Id = param.GetString();
            o.Animation.Clear();
            Map.PutObject(o, TargetObject);
        }
Beispiel #11
0
        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;
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        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);
        }
Beispiel #14
0
        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));
        }
Beispiel #15
0
        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);
        }
Beispiel #16
0
        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);
        }
Beispiel #17
0
        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);
        }
Beispiel #18
0
 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 ---");
     }
 }
Beispiel #19
0
        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 ---");
            }
        }
Beispiel #20
0
        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);
            }
        }
Beispiel #21
0
        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)");
            }
        }
Beispiel #22
0
 public void GoToLabel(CommandParams param)
 {
     ProgramPtr = TryGetLabelLineNumber(param.GetString());
 }
Beispiel #23
0
 public void ReturnFromSubroutine(CommandParams param)
 {
     ProgramPtr = CallStack.PopNumber();
 }
Beispiel #24
0
 public void CallLabel(CommandParams param)
 {
     CallStack.Push(ProgramPtr);
     ProgramPtr = TryGetLabelLineNumber(param.GetString());
 }
Beispiel #25
0
 public void DumpCurrentCycle(CommandParams param)
 {
     Debugger.Println(Cycle);
 }
Beispiel #26
0
 public void StoreStackToVariable(CommandParams param)
 {
     Vars.Set(param.GetString(), ExprStack.PopString());
 }
Beispiel #27
0
 public void LoadVariableToStack(CommandParams param)
 {
     ExprStack.Push(Vars.GetAsString(param.GetString()));
 }
Beispiel #28
0
 public void DecrementStackTop(CommandParams param)
 {
     ExprStack.Push(ExprStack.PopNumber() - 1);
 }
Beispiel #29
0
 public void Exit(CommandParams param)
 {
     Exit();
 }
Beispiel #30
0
 public void PushDuplicateToStack(CommandParams param)
 {
     ExprStack.DuplicateTop();
 }