public void SaveWorldState()
    {
        WorldGenerator.WorldDefinition world = WorldGenerator.GetWorld(loadedWorld);

        world.ResetSaveMarkers();
        for (int i = 0; i < Objects.Count; i++)
        {
            if (Objects[i].LoadedObjectDefinition == null || Objects[i] == RocketToSpace.Current)
            {
                continue;
            }

            if (world.Objects.ContainsKey(Objects[i].LoadedObjectDefinition))
            {
                Objects[i].OverwriteObjectDefinition(world.Objects[Objects[i].LoadedObjectDefinition], mapper);
                world.Objects[Objects[i].LoadedObjectDefinition].MarkedAsSaved = true;
            }
            else
            {
                WorldGenerator.WorldObjectDefinition newObj = new WorldGenerator.WorldObjectDefinition();
                Objects[i].OverwriteObjectDefinition(newObj, mapper);
                world.ObjectList.Add(newObj);
                world.Objects[newObj.ID] = newObj;
                newObj.MarkedAsSaved     = true;
            }
        }
        world.DeleteUnsaved();
    }
Exemple #2
0
 public void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.name == PLAYER_SHIP)
     {
         if (world == null)
         {
             world = WorldGenerator.Current.BuildWorld();
             GameState.SwitchToWorld(world);
         }
         else
         {
             GameState.SwitchToWorld(world);
         }
     }
 }
Exemple #3
0
    public static void SwitchToWorld(WorldGenerator.WorldDefinition world)
    {
        PlayerCharacter.Current.gameObject.SetActive(true);

        for (int i = 0; i < WorldCameras.Count; i++)
        {
            WorldCameras[i].SetActive(true);
        }

        for (int i = 0; i < SpaceCameras.Count; i++)
        {
            SpaceCameras[i].SetActive(false);
        }

        CurrentState = GameMode.PlanetPlaying;
        WrappingWorld.ResetWorld();
        PlayerCharacter.Current.ResetWorld();
        WrappingWorld.Current.LoadWorld(world);
    }
    public void LoadWorld(WorldGenerator.WorldDefinition world)
    {
        isLoading = true;
        ResetWorld();
        RocketToSpace.Current.gameObject.SetActive(true);
        PlayerCharacter.Current.gameObject.SetActive(true);
        PlayerCharacter.Current.ResetWorld();
        RocketToSpace.Current.ResetWorld();

        loadedWorld = world.ID;

        int width  = world.Tiles.GetLength(0);
        int height = world.Tiles.GetLength(1);

        for (int x = 0; x < width; x++)
        {
            for (int y = 0; y < height; y++)
            {
                SpawnTile(x, y, world.Tiles[x, y], world.Tiles);
            }
        }

        for (int i = 0; i < world.ObjectList.Count; i++)
        {
            switch (world.ObjectList[i].Type)
            {
            case ObjectType.FuelPickup:
                FuelPickup.Spawn(world.ObjectList[i].ID, world.ObjectList[i].Position);
                break;

            case ObjectType.FuelTree:
                FuelTree.Spawn(world.ObjectList[i].ID, world.ObjectList[i].Position, world.ObjectList[i].RemainingIntValue);
                break;
            }
        }

        Register(RocketToSpace.Current);
        isLoading = false;
    }