/// <summary>
    /// Transfers the resource to player.
    /// Reture how much resource will be transfered
    /// </summary>
    /// <returns>The resource to player.</returns>
    /// <param name="Type">Type.</param>
    /// <param name="amount">Amount.</param>
    public float TransferResourceToPlayer(ResourceType Type, float amount)
    {
        ResourceStorageMetaData rsMetaData = GetResourceMetaData(Type);

        float retVal = 0f;

        if (rsMetaData != null)
        {
            if ((rsMetaData.currentResource + amount) > rsMetaData.maxResource)
            {
                retVal = rsMetaData.maxResource - rsMetaData.currentResource;

                rsMetaData.currentResource = rsMetaData.maxResource;
            }
            else
            {
                rsMetaData.currentResource += amount;

                retVal = amount;
            }
        }
        else
        {
            retVal = 0f;
        }

        Save();

        return(retVal);
    }
示例#2
0
    void UpdateResourceStorage()
    {
        PlayerResourceStorageMetaData data = PlayerResourceStorageMetaData.Load();

        ResourceStorageMetaData rsData = data.GetResourceMetaData(resourceId);

        maxResource     = rsData.maxResource;
        currentResource = rsData.currentResource;

        EventManager.GetInstance().ExecuteEvent <EventResourceStorageUpdate> (new EventResourceStorageUpdate(resourceId, currentResource));
    }
    /// <summary>
    /// Adds resource for resource type.
    /// </summary>
    /// <param name="rType">R type.</param>
    /// <param name="amount">Amount.</param>
    public void AddResourceForType(ResourceType rType, float amount)
    {
        ResourceStorageMetaData rsMetaData = GetResourceMetaData(rType);

        float amountResourceToAdd = amount;

        if ((rsMetaData.currentResource + amountResourceToAdd) > rsMetaData.maxResource)
        {
            amountResourceToAdd = rsMetaData.maxResource - rsMetaData.currentResource;
        }

        rsMetaData.currentResource += amountResourceToAdd;

        Save();

        EventManager.GetInstance().ExecuteEvent <EventResourceStorageModelUpdate>(new EventResourceStorageModelUpdate(rsMetaData.resourceType, rsMetaData.currentResource));
    }
    /// <summary>
    /// Costs the resource.
    /// </summary>
    /// <param name="type">Type.</param>
    /// <param name="amountToCost">Amount to cost.</param>
    public void CostResource(ResourceType type, float amountToCost)
    {
        ResourceStorageMetaData rsMetaData = GetResourceMetaData(type);

        if ((rsMetaData.currentResource - amountToCost) >= 0f)
        {
            rsMetaData.currentResource = Mathf.Floor(rsMetaData.currentResource - amountToCost);

            Debug.Log("Cost resource " + type.ToString() + " resource left " + rsMetaData.currentResource);

            Save();

            EventManager.GetInstance().ExecuteEvent <EventResourceStorageModelUpdate>(new EventResourceStorageModelUpdate(rsMetaData.resourceType, rsMetaData.currentResource));
        }
        else
        {
            Debug.LogError("Resource " + rsMetaData.resourceType.ToString() + " is not enough");
        }
    }
    /// <summary>
    /// Adds the resource.
    /// </summary>
    /// <param name="type">Type.</param>
    /// <param name="amountToAdd">Amount to add.</param>
    public void AddResource(ResourceType type, float amountToAdd)
    {
        ResourceStorageMetaData rsMetaData = GetResourceMetaData(type);

        if ((rsMetaData.currentResource + amountToAdd) > rsMetaData.maxResource)
        {
            rsMetaData.currentResource = rsMetaData.maxResource;

            Save();

            EventManager.GetInstance().ExecuteEvent <EventResourceStorageModelUpdate>(new EventResourceStorageModelUpdate(rsMetaData.resourceType, rsMetaData.currentResource));

            return;
        }

        rsMetaData.currentResource += amountToAdd;

        Save();

        EventManager.GetInstance().ExecuteEvent <EventResourceStorageModelUpdate>(new EventResourceStorageModelUpdate(rsMetaData.resourceType, rsMetaData.currentResource));
    }