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