Exemple #1
0
 public void LoadSaveData(AreaSaveData data)
 {
     IsUnlocked = data.IsUnlocked;
     if (TrapSlot != null)
     {
         TrapSlot.Size        = data.TrapSize;
         TrapSlot.State       = data.TrapState;
         TrapSlot.HarvestTime = data.TrapHarvestTime;
     }
     if (HuntingTripInfo != null)
     {
         try
         {
             HuntingTripInfo.LoadSaveData(data.TripIsActive, data.TripReturnTime, data.TripStartTime, data.HuntingBoost, "");
         }
         catch (Exception e)
         {
             Console.WriteLine(e.Message);
             Console.WriteLine(e.StackTrace);
         }
     }
     else if (data.TripIsActive)
     {
         if (HuntingTripInfo != null)
         {
             HuntingTripInfo.LoadSaveData(data.TripIsActive, data.TripReturnTime, data.TripStartTime, data.HuntingBoost, data.dtLocation);
         }
         else
         {
             HuntingTripInfo = new HuntingTripInfo();
             HuntingTripInfo.LoadSaveData(data.TripIsActive, data.TripReturnTime, data.TripStartTime, data.HuntingBoost, data.dtLocation);
         }
     }
 }
Exemple #2
0
    // ================================================================================================== //
    public void SaveCurrentArea()
    {
        AreaSaveData areaSaveData = new AreaSaveData();

        areaSaveData.Position = _currentShownAreaPosition;

        areaSaveData.TileRevealationMap = new bool[Width, Height];

        // add objects to area data
        foreach (DungeonTile tile in _grid.Elements)
        {
            // update tile revealation map
            areaSaveData.TileRevealationMap[tile.Position.X, tile.Position.Y] = tile.IsRevealed;

            foreach (DungeonObject dungeonObj in tile.transform.GetComponentsInChildren <DungeonObject>())
            {
                if (dungeonObj is Creature)
                {
                    if ((dungeonObj as Creature).IsPartyMember)
                    {
                        continue;
                    }
                }

                areaSaveData.Objects.Add(dungeonObj.GetSaveData());
            }
        }

        // update current area in _dungeonSaveData
        _dungeonSaveData.Areas[_currentShownAreaPosition] = areaSaveData;
        // save to file
        SaveAndLoad.Instance.Save();
    }
    // ================================================================================================== //
    public void ShowAreaInDirection(string directionStr)
    {
        AreaSaveData currentArea = getArea(_currentShownAreaPosition);

        Direction direction = Utils.GetDirectionByName(directionStr);

        Position areaInDirectionPosition = currentArea.Position.GetPositionInDirection(direction);

        showArea(areaInDirectionPosition);
    }
Exemple #4
0
    // ================================================================================================== //
    private void ShowArea(Position position)
    {
        // check valid area
        if (!_dungeonSaveData.Areas.ContainsKey(position))
        {
            Debug.LogError("area doesn't exist in that position: " + position.ToString());
            return;
        }

        // clear current grid
        clear();

        // get the area
        AreaSaveData areaToShow = _dungeonSaveData.Areas[position];

        // put area objects in grid.
        foreach (SaveData objSaveData in areaToShow.Objects)
        {
            DungeonTile tile       = _grid.GetElement(objSaveData.Position) as DungeonTile;
            GameObject  createdObj = createObjectInTile(objSaveData.Name, tile);

            // add crried items on creature
            if (objSaveData is CreatureSaveData)
            {
                CreatureSaveData creatureSaveData = objSaveData as CreatureSaveData;
                Creature         creature         = createdObj.GetComponent <Creature>();
                foreach (ItemSaveData itemSaveData in creatureSaveData.CarriedItems)
                {
                    createObjectInCreature(itemSaveData.Name, creature);
                }
            }
        }

        // fog of war
        foreach (DungeonTile tile in _grid.Elements)
        {
            tile.IsRevealed = areaToShow.TileRevealationMap[tile.Position.X, tile.Position.Y];
        }

        // update current area index
        _currentShownAreaPosition = position;

        // update the dungeon tile sprite - grass or floor
        foreach (DungeonTile tile in _grid.Elements)
        {
            if (IsInOriginArea)
            {
                tile.GetComponent <SpriteRenderer>().sprite = ResourcesManager.Instance.OutdoorDungeonTileSprite;
            }
            else
            {
                tile.GetComponent <SpriteRenderer>().sprite = ResourcesManager.Instance.FloorDungeonTileSprite;
            }
        }
    }
    // ================================================================================================== //
    private AreaSaveData getArea(Position position)
    {
        if (!_dungeonSaveData.Areas.ContainsKey(position))
        {
            AreaSaveData newArea = new AreaSaveData();
            newArea.Position = position;
            _dungeonSaveData.Areas[position] = newArea;
        }

        return(_dungeonSaveData.Areas[position]);
    }
Exemple #6
0
 public void LoadSaveData(AreaSaveData data)
 {
     IsUnlocked = data.IsUnlocked;
     if (TrapSlot != null)
     {
         TrapSlot.State       = data.TrapState;
         TrapSlot.HarvestTime = data.TrapHarvestTime;
     }
     if (HuntingTripInfo != null)
     {
         HuntingTripInfo.LoadSaveData(data.TripIsActive, data.TripReturnTime, data.TripStartTime);
     }
 }
    // ================================================================================================== //
    private void updateCurrentAreaSaveData()
    {
        AreaSaveData currentArea = getArea(_currentShownAreaPosition);

        // clear all before save
        currentArea.Objects.Clear();

        foreach (DungeonTile tile in _grid.Elements)
        {
            foreach (Transform obj in tile.transform)
            {
                SaveData objData = obj.GetComponent <DungeonObject>().GetSaveData();
                objData.Position = tile.Position;
                currentArea.Objects.Add(objData);
            }
        }
    }
    // ================================================================================================== //
    private void showArea(Position position) // return the area index
    {
        // clear current grid
        clear();

        // get the area
        AreaSaveData areaToShow = getArea(position);

        // putObjectInTile area objects in grid
        foreach (SaveData obj in areaToShow.Objects)
        {
            DungeonTile tile = _grid.GetElement(obj.Position) as DungeonTile;
            putObjectInTile(obj.Name, tile);
        }

        // update current area index
        _currentShownAreaPosition = position;
    }