void EnsureGameProgressIsSet()
 {
     if (gameProgress == null)
     {
         gameProgress = new GameProgress(new FileGameProgressStorageService());
     }
 }
 void Start()
 {
     board        = GameObject.Find("Board").GetComponent <Board>();
     playerHand   = GameObject.Find("Hand").GetComponent <PlayerHand>();
     enemyHand    = GameObject.Find("EnemyDeck");
     computerHand = GameObject.Find("EnemyDeck").GetComponent <EnemyHand>();
     turnState    = GameObject.Find("TurnBasedMachine").GetComponent <TurnBasedStateMachine>();
     discardPile  = GameObject.Find("EnemyDiscardPile").GetComponent <DiscardPile>();
     gameProgress = startGame;
 }
Beispiel #3
0
    private void SaveItemSlotData(IGameProgress gameProgress)
    {
        var itemSlot = GetComponent <ItemSlot>();

        if (itemSlot == null)
        {
            Debug.LogError($"{name} does not have {nameof(ItemSlot)} component, check {nameof(Savable)}.{nameof(gameObjectType)}");
        }
        gameProgress.Current.SaveItemSlot(uid, itemSlot.ItemUid);
    }
Beispiel #4
0
    private void SaveItemData(IGameProgress gameProgress)
    {
        var item = GetComponent <DraggableItem>();

        if (item == null)
        {
            Debug.LogError($"{name} does not have {nameof(DraggableItem)} component, check {nameof(Savable)}.{nameof(gameObjectType)}");
        }
        gameProgress.Current.SaveItem(uid, item.SlotUid, item.DropTargetId);
    }
Beispiel #5
0
    void LoadItemData(IGameProgress gameProgress)
    {
        if (gameProgress.Current.Items == null)
        {
            Debug.LogError($"Save data corrupted (no items)");
        }

        var found = gameProgress.Current.Items.FirstOrDefault(its => its.uid == uid);

        if (found.uid == uid)
        {
            var item = GetComponent <DraggableItem>();
            if (item == null)
            {
                Debug.LogError($"{name} does not have {nameof(DraggableItem)} component, check {nameof(Savable)}.{nameof(gameObjectType)}");
            }

            switch (found.state)
            {
            case ItemState.InInventory:
                var foundSlots = FindObjectsOfType <ItemSlot>();
                var slot       = foundSlots.FirstOrDefault(s => s.Uid == found.slotUid);
                if (slot != null)
                {
                    item.AttachToItemSlot(slot);
                }
                else
                {
                    Debug.LogError($"Slot {found.slotUid} not found for item {found.uid}");
                }
                break;

            case ItemState.PlacedOnDropTarget:
                var dropTargets = FindObjectsOfType <ItemDropTarget>();
                var dropTarget  = dropTargets.FirstOrDefault(dt => dt.Uid == found.dropTargetUid);
                if (dropTarget != null)
                {
                    item.PlaceOnDropTarget(dropTarget);
                }
                else
                {
                    Debug.LogError($"DropTarget {found.dropTargetUid} not found for item {found.uid}");
                }
                break;

            default:
                //place inside world
                break;
            }
        }
        else
        {
            Debug.LogWarning($"No data found for item {uid}");
        }
    }
Beispiel #6
0
    void LoadPlayerData(IGameProgress gameProgress)
    {
        var characterMove = GetComponent <Character>();

        if (characterMove == null)
        {
            Debug.LogError($"{name} does not have {nameof(Character)} component, check {nameof(Savable)}.{nameof(gameObjectType)}");
        }

        transform.position = gameProgress.Current.playerPosition.ToVector3();
        characterMove.SetDirection(gameProgress.Current.playerScaleX);
        Debug.Log($"PlayerScaleX loaded: {gameProgress.Current.playerScaleX}");
    }
Beispiel #7
0
    public void LoadProgress(IGameProgress gameProgress)
    {
        if (gameProgress.Current != null)
        {
            switch (gameObjectType)
            {
            case ObjectType.PlayerCharacter:
                LoadPlayerData(gameProgress);
                break;

            case ObjectType.ItemSlot:
                LoadItemSlotData(gameProgress);
                break;

            case ObjectType.Key:
                LoadItemData(gameProgress);
                break;

            default:
                break;
            }
        }
    }
Beispiel #8
0
    void LoadItemSlotData(IGameProgress gameProgress)
    {
        if (gameProgress.Current.ItemSlots == null)
        {
            Debug.LogError($"Save data corrupted (no item slots)");
        }

        var found = gameProgress.Current.ItemSlots.FirstOrDefault(its => its.uid == uid);

        if (found.uid == uid)
        {
            var itemSlot = GetComponent <ItemSlot>();
            if (itemSlot == null)
            {
                Debug.LogError($"{name} does not have {nameof(ItemSlot)} component, check {nameof(Savable)}.{nameof(gameObjectType)}");
            }

            itemSlot.SetSlotState(found.itemUid);
        }
        else
        {
            Debug.LogWarning($"No data found for slot {uid}");
        }
    }
Beispiel #9
0
 void SavePlayerData(IGameProgress gameProgress)
 {
     gameProgress.Current.playerPosition = new SerializableVector3(transform.position);
     gameProgress.Current.playerScaleX   = transform.localScale.x;
 }