示例#1
0
    private void setupWorld()
    {
        GDKnyttWorldImpl world = GDKnyttDataStore.KWorld;

        GDWorld.setWorld(this, world);
        GDWorld.loadWorld();
        createJuni();

        this.changeArea(GDWorld.KWorld.CurrentSave.getArea(), true);
        Juni.moveToPosition(CurrentArea, GDWorld.KWorld.CurrentSave.getAreaPosition());
        saveGame(Juni, false);

        UI.initialize(this);
        UI.updatePowers();

        mapPanel = GetNode <MapPanel>("UICanvasLayer/MapBackgroundPanel/MapPanel");
        if (hasMap())
        {
            mapPanel.init(GDWorld.KWorld, Juni);
            GetNode <TouchPanel>("UICanvasLayer/TouchPanel").InstallMap();
        }
        else
        {
            mapPanel.init(null, null);
        }
    }
示例#2
0
    private void setupWorld()
    {
        GDKnyttWorldImpl world;

        if (GDKnyttDataStore.KWorld != null)
        {
            world = GDKnyttDataStore.KWorld;
        }
        else
        {
            world = new GDKnyttWorldImpl();
            world.setDirectory(this.demoWorld, "");
            var save_data = GDKnyttAssetManager.loadTextFile(this.demoWorld + "/DefaultSavegame.ini");
            world.CurrentSave = new KnyttSave(world, save_data, 1);
        }

        GDWorld.setWorld(this, world);
        createJuni();
        GDWorld.loadWorld();

        this.changeArea(GDWorld.KWorld.CurrentSave.getArea(), true);
        Juni.moveToPosition(CurrentArea, GDWorld.KWorld.CurrentSave.getAreaPosition());

        UI.initialize(this);
        UI.updatePowers();
    }
示例#3
0
    // Changes the current area
    public void changeArea(KnyttPoint new_area, bool force_jump = false, bool regenerate_same = true)
    {
        // Regenerate current area if no change, else deactivate old area
        if (this.CurrentArea != null)
        {
            if (CurrentArea.Area.Position.Equals(new_area))
            {
                if (regenerate_same)
                {
                    CurrentArea.regenerateArea(regenerate_same: regenerate_same);
                }
                return;
            }

            CurrentArea.scheduleDeactivation();
        }

        // Update the paging
        GDWorld.Areas.setLocation(new_area);
        var area = GDWorld.getArea(new_area);

        if (area == null)
        {
            return;
        }

        this.CurrentArea = area;
        this.CurrentArea.activateArea();
        this.beginTransitionEffects(force_jump);

        Juni.stopHologram(cleanup: true);
    }
示例#4
0
    // Changes the current area
    public void changeArea(KnyttPoint new_area, bool force_jump = false, bool regenerate_same = true)
    {
        // Regenerate current area if no change, else deactivate old area
        if (this.CurrentArea != null)
        {
            if (CurrentArea.Area.Position.Equals(new_area))
            {
                if (regenerate_same)
                {
                    CurrentArea.regenerateArea(regenerate_same: regenerate_same);
                }
                return;
            }

            CurrentArea.scheduleDeactivation();
            Juni.juniInput.altInput.ClearInput();
        }

        // Update the paging
        GDWorld.Areas.setLocation(new_area);
        var area = GDWorld.getArea(new_area);

        if (area == null)
        {
            return;
        }

        int change_distance = CurrentArea == null ? 0 : CurrentArea.Area.Position.manhattanDistance(new_area);

        this.CurrentArea = area;
        this.CurrentArea.activateArea();
        this.beginTransitionEffects(force_jump || change_distance > 1); // never scroll if jump distance is over 1

        Juni.stopHologram(cleanup: true);
        if (area.Area.ExtraData?.ContainsKey("Attach") ?? false)
        {
            Juni.enableAttachment(area.Area.getExtraData("Attach"));
        }
        if (hasMap())
        {
            Juni.Powers.setVisited(CurrentArea.Area);
        }
    }