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); } }
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(); }
// 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); }
// 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); } }