public static void ComeToMe(HardFlowClass back, Kthura m, KthuraLayer l, int x, int y)
 {
     Map        = m;
     MapLayer   = l;
     ScrollX    = x;
     ScrollY    = y;
     ReturnFlow = back;
     FlowManager.GoHardFlow(Flow);
     time = 2500;
 }
Ejemplo n.º 2
0
        static public void DrawMap(KthuraLayer layer, int scrollx = 0, int scrolly = 0, int x = 0, int y = 0)
        {
            bool AutoRemapOnHold = Kthura.automap;
            bool actorsmoved     = false;

            Kthura.automap = false;
            if (layer.ObjectDrawOrder == null)
            {
                layer.RemapDominance();
            }
            foreach (KthuraObject obj in layer.ObjectDrawOrder)
            {
                if (obj.Visible || IgnoreVisibility)
                {
                    if (true)   // This looks useless now, but this routine will be used later in optimalisation to see if an object is actually on screen, and if not, ignore it.
                    {
                        switch (obj.kind)
                        {
                        case "TiledArea":
                            obj.Animate(DrawDriver.AnimReset);
                            if (DrawDriver != null)
                            {
                                DrawDriver.DrawTiledArea(obj, x, y, scrollx, scrolly);
                            }
                            break;

                        case "StretchedArea":
                            obj.Animate(DrawDriver.AnimReset);
                            if (DrawDriver != null)
                            {
                                DrawDriver.DrawStretchedArea(obj, x, y, scrollx, scrolly);
                            }
                            break;

                        case "Obstacle":
                            obj.Animate(DrawDriver.AnimReset);
                            //KthuraEdit.Stages.DBG.Log($"Animation frame for Obstacle {obj.Tag}: {obj.AnimFrame}"); // Must be on comment if not debugging the standard editor or no compile-o!
                            if (DrawDriver != null)
                            {
                                DrawDriver.DrawObstacle(obj, x, y, scrollx, scrolly);
                            }
                            break;

                        case "Pic":
                            obj.Animate(DrawDriver.AnimReset);
                            if (DrawDriver != null)
                            {
                                DrawDriver.DrawPic(obj, x, y, scrollx, scrolly);
                            }
                            break;

                        case "Actor": {
                            int oldx = x;
                            int oldy = y;
                            if (DrawDriver != null)
                            {
                                DrawDriver.DrawActor((KthuraActor)obj, x, y, scrollx, scrolly);
                            }
                            actorsmoved = actorsmoved || oldx != x || oldy != y;
                            break;
                        }

                        case "Zone": DrawZone(obj, x, y, scrollx, scrolly); break;

                        case "Pivot":
                            DrawPivot?.Invoke(obj, x, y, scrollx, scrolly); break;

                        case "Exit":
                            DrawExit?.Invoke(obj, x, y, scrollx, scrolly); break;

                        case "Custom":
                            DrawCustom?.Invoke(obj, x, y, scrollx, scrolly); break;

                        default:
                            if (qstr.Prefixed(obj.kind, "$"))
                            {
                                DrawCSpot?.Invoke(obj, x, y, scrollx, scrolly); break;
                            }
                            else
                            {
                                throw new Exception($"Unknown drawing object kind: {obj.kind}");
                            }
                            //break;
                        }
                    }
                }
            }
            // Restore Automap
            Kthura.automap = AutoRemapOnHold;
            if (Kthura.automap && actorsmoved)
            {
                layer.TotalRemap();                                // If actors have moved, make sure remapping is done
            }
        }