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