Exemple #1
0
        public void CheckItemAdd(CraftingResources resource, int amount)
        {
            var itemList = GetItemList();

            foreach (var item in itemList)
            {
                Debug.Log(item.Resource);
            }
            Debug.Log("Resource: " + resource + " - amount: " + amount);
            var foundRequest = itemList.FirstOrDefault(i => i.Resource == resource);

            // Check if we have current request for this resource
            if (foundRequest != null)
            {
                if (!_currentRequestData.ContainsKey(resource))
                {
                    var craftingRequest = new TakenCraftingResourceRequest {
                        Request = foundRequest, CurrentAmount = amount
                    };
                    _currentRequestData.Add(resource, craftingRequest);
                }
                else
                {
                    _currentRequestData[resource].AddAmount(amount);
                }
                if (_currentRequestData[resource].Complete)
                {
                    requestRecord.CompleteRequest(this, _currentRequestData[resource].Request);
                    _currentRequestData.Remove(resource);
                }
                requestSystem.Refresh();
            }
        }
Exemple #2
0
        public void MakeChoice(ShopAgent agent, CraftingResources craftingResources)
        {
            switch (GetInputMode(agent))
            {
            case RequestActions.SetInput:
                Debug.Log("Make Request");
                requestSystem.MakeRequest(craftingResources, agent.craftingInventory, agent.wallet);
                break;

            case RequestActions.RemoveRequest:
                Debug.Log("Remove Request");
                requestSystem.RemoveRequest(craftingResources, agent.craftingInventory);
                break;

            case RequestActions.IncreasePrice:
                Debug.Log("IncreasePrice");
                requestSystem.ChangePrice(craftingResources, agent.craftingInventory, agent.wallet, 1);
                break;

            case RequestActions.DecreasePrice:
                Debug.Log("DecreasePrice");
                requestSystem.ChangePrice(craftingResources, agent.craftingInventory, agent.wallet, -1);
                break;
            }
        }
Exemple #3
0
        public void Request_MakeResourceRequest()
        {
            CraftingResources randomCraftingResource = listCraftingResources[Random.Range(0, listCraftingResources.Count)];

            //Make a request
            requestShopSystem.MakeChoice(shopAgent, randomCraftingResource);

            //Count the requests
            Assert.AreEqual(1, requestSystem.GetAllCraftingRequests(shopAgent.craftingInventory).Count, "A request should be created");
            Assert.AreEqual(1, requestSystem.GetAllCraftingRequests().Count, "One request should be created");


            //Make another request with the same resource
            requestShopSystem.MakeChoice(shopAgent, randomCraftingResource);

            //Count the requests
            Assert.AreEqual(1, requestSystem.GetAllCraftingRequests().Count, "Only one request should be created");


            //randomCraftingResource1 != randomCraftingResource2
            CraftingResources randomCraftingResource2 = listCraftingResources[Random.Range(0, listCraftingResources.Count)];

            if (randomCraftingResource2 == randomCraftingResource && listCraftingResources.Count > 1)
            {
                randomCraftingResource2 = (CraftingResources)((int)(randomCraftingResource + 1) % listCraftingResources.Count);
            }
            //Make another request
            requestShopSystem.MakeChoice(shopAgent, randomCraftingResource2);

            //Count the requests
            Assert.AreEqual(2, requestSystem.GetAllCraftingRequests().Count, "2 requests should be created");
        }
    public CraftingResources GetResourceIndicatorContainerInstance(GameObject followObject)
    {
        CraftingResources instance = Instantiate(this, this.transform.parent);

        followingObject = followObject;
        //instance.transform.position = Camera.main.WorldToScreenPoint(followingObject.transform.position) + Vector3.up * 100;
        return(instance);
    }
 public int GetResourceCount(CraftingResources craftingResource)
 {
     if (_numResources.ContainsKey(craftingResource))
     {
         return(_numResources[craftingResource]);
     }
     return(0);
 }
Exemple #6
0
 private void Start()
 {
     ui_Resources = UIManager.Instance.CraftingRequirementsObject.GetResourceIndicatorContainerInstance(this.gameObject);
     UpdateRequirementLocation();
     for (int i = 0; i < mRequirements.Length; i++)
     {
         mRequirements[i].mIndicatorUI = ui_Resources.CreateResourceRequirement(mRequirements[i].mResourceRequired, mRequirements[i].mResourceCountRequired, ref mRequirements[i]);
     }
 }
Exemple #7
0
        public CraftingResourceRequest(CraftingResources resource, CraftingInventory inventory, int price, Sprite icon)
        {
            Number    = 1;
            Resource  = resource;
            Inventory = inventory;
            Price     = price;
            Icon      = icon;

            CreationTime = Time.time;
        }
Exemple #8
0
        public int GetCurrentStock(CraftingResources resource)
        {
            var amount = 0;

            if (_currentRequestData.ContainsKey(resource))
            {
                amount = _currentRequestData[resource].CurrentAmount;
            }
            return(amount);
        }
 public int GetResourceNumber(CraftingResources key)
 {
     if (_numResources != null)
     {
         if (_numResources.ContainsKey(key))
         {
             return(_numResources[key]);
         }
     }
     return(0);
 }
        public void AddResource(CraftingResources resource, int count)
        {
            var hasResource = _numResources.ContainsKey(resource);

            if (!hasResource)
            {
                _numResources[resource] = 0;
            }

            _numResources[resource] += count;
        }
Exemple #11
0
        private int GetRequestNumber(CraftingInventory inventory, CraftingResources resources)
        {
            if (_craftingRequests.ContainsKey(inventory))
            {
                if (_craftingRequests[inventory].ContainsKey(resources))
                {
                    return(_craftingRequests[inventory][resources].Number);
                }
            }

            return(0);
        }
Exemple #12
0
        public void RemoveRequest(CraftingResources resource, CraftingInventory inventory)
        {
            if (_craftingRequests.ContainsKey(inventory))
            {
                if (_craftingRequests[inventory].ContainsKey(resource))
                {
                    var request = _craftingRequests[inventory][resource];
                    _requestWallets[request].EarnMoney(request.Reward);
                    _craftingRequests[inventory].Remove(resource);
                    _requestWallets.Remove(request);

                    Refresh();
                }
            }
        }
Exemple #13
0
        public void Request_TakeResourceRequest()
        {
            CraftingResources randomCraftingRessource = listCraftingResources[UnityEngine.Random.Range(0, listCraftingResources.Count)];

            //Make a request
            requestShopSystem.MakeChoice(shopAgent, randomCraftingRessource);

            CraftingResourceRequest requestMade = requestShopSystem.requestSystem.GetAllCraftingRequests()[0];

            Assert.NotNull(requestMade, "CraftingResourceRequest empty");

            //Take a request
            adventurerAgent.requestTaker.TakeRequest(requestMade);

            //Check the taken quest
            List <CraftingResourceRequest> takenQuests = adventurerAgent.requestTaker.GetItemList();

            Assert.AreEqual(1, takenQuests.Count, "The adventurer should have one request");
        }
Exemple #14
0
        public void MakeRequest(CraftingResources resources, CraftingInventory inventory, EconomyWallet wallet)
        {
            void CheckExchange(CraftingResourceRequest request)
            {
                if (request.Price <= wallet.Money)
                {
                    if (_craftingRequests[inventory].ContainsKey(resources))
                    {
                        _craftingRequests[inventory][resources].Number++;
                    }
                    else
                    {
                        _craftingRequests[inventory].Add(resources, request);
                    }
                    wallet.SpendMoney(request.Price);
                }
            }

            CheckInventory(inventory);

            var requestNumber = GetRequestNumber(inventory, resources);
            var canRequest    = requestNumber < 10;

            if (canRequest)
            {
                var containsKey = _craftingRequests[inventory].ContainsKey(resources);

                if (!containsKey)
                {
                    Sprite icon        = GetIconByResource(resources);
                    var    newResource = new CraftingResourceRequest(resources, inventory, defaultResourcePrices[resources], icon);
                    _requestWallets.Add(newResource, wallet);
                    CheckExchange(newResource);
                }
                else
                {
                    CheckExchange(_craftingRequests[inventory][resources]);
                }
            }

            Refresh();
        }
Exemple #15
0
        public Sprite GetIconByResource(CraftingResources resource)
        {
            switch (resource)
            {
            case CraftingResources.Wood:
                return(iconResources[0]);

            case CraftingResources.Metal:
                return(iconResources[1]);

            case CraftingResources.Gem:
                return(iconResources[2]);

            case CraftingResources.DragonScale:
                return(iconResources[3]);

            default:
                Debug.Log("Wrong Crafting resource : " + resource);
                return(iconResources[0]);
            }
        }
Exemple #16
0
        public void Config_SetResourceRequirements()
        {
            List <CraftingMap> defaultListRequirements = shopCraftingSystemBehaviour.system.craftingSubSubSystem.craftingRequirement;
            List <CraftingMap> newListRequirements     = new List <CraftingMap>();

            foreach (CraftingMap craftingMap in defaultListRequirements)
            {
                CraftingChoice newCraftingChoice = craftingMap.choice;

                UsableItem newResultingItem  = craftingMap.resource.resultingItem;
                float      newTimeToCreation = craftingMap.resource.timeToCreation;
                List <ResourceRequirement> newResourcesRequirements = new List <ResourceRequirement>();
                foreach (ResourceRequirement resourceRequirement in craftingMap.resource.resourcesRequirements)
                {
                    CraftingResources newType = resourceRequirement.type;
                    int newNumber             = UnityEngine.Random.Range(1, 10);
                    newResourcesRequirements.Add(new ResourceRequirement(newType, newNumber));
                }

                CraftingRequirements newCraftingRequirements = new CraftingRequirements
                {
                    resultingItem         = newResultingItem,
                    timeToCreation        = newTimeToCreation,
                    resourcesRequirements = newResourcesRequirements
                };

                CraftingMap newCraftingMap = new CraftingMap
                {
                    choice   = newCraftingChoice,
                    resource = newCraftingRequirements
                };

                newListRequirements.Add(newCraftingMap);
            }

            configSystem.SetResourceRequirements(newListRequirements);

            Assert.AreEqual(shopCraftingSystemBehaviour.system.craftingSubSubSystem.craftingRequirement, newListRequirements);
            Assert.AreNotEqual(defaultListRequirements, newListRequirements);
        }
Exemple #17
0
        public void Request_CompleteResourceRequest()
        {
            CraftingResources randomCraftingRessource = listCraftingResources[UnityEngine.Random.Range(0, listCraftingResources.Count)];

            //Make a request
            requestShopSystem.MakeChoice(shopAgent, randomCraftingRessource);
            CraftingResourceRequest requestMade = requestShopSystem.requestSystem.GetAllCraftingRequests()[0];
            int reward = requestMade.Reward;

            //Take a request
            adventurerAgent.requestTaker.TakeRequest(requestMade);

            //Give the ressource = Complete request
            adventurerAgent.requestTaker.CheckItemAdd(randomCraftingRessource, 1);

            //No more requests?
            Assert.AreEqual(0, requestSystem.GetAllCraftingRequests().Count, "No more requests after giving the resource");
            //Reward obtained?
            Assert.AreEqual(adventurerAgent.wallet.startMoney + reward, adventurerAgent.wallet.Money);
            //Resource given?
            Assert.AreEqual(0, adventurerAgent.requestTaker.GetCurrentStock(randomCraftingRessource));
        }
Exemple #18
0
        public void ChangePrice(CraftingResources resources, CraftingInventory inventory, EconomyWallet wallet, int change)
        {
            CheckInventory(inventory);
            var craftingInventory = _craftingRequests[inventory];
            var containsKey       = craftingInventory.ContainsKey(resources);

            if (containsKey)
            {
                if (craftingInventory.ContainsKey(resources))
                {
                    var newPrice  = craftingInventory[resources].Price + change;
                    var newReward = craftingInventory[resources].GetReward(newPrice);

                    var rewardDifference = newReward - craftingInventory[resources].Reward;
                    var validTransaction = false;
                    if (rewardDifference > 0)
                    {
                        if (rewardDifference <= wallet.Money)
                        {
                            wallet.SpendMoney(rewardDifference);
                            validTransaction = true;
                        }
                    }
                    else
                    {
                        wallet.EarnMoney(Mathf.Abs(rewardDifference));
                        validTransaction = true;
                    }

                    if (validTransaction)
                    {
                        craftingInventory[resources].Price = newPrice;
                    }
                }
            }
            Refresh();
        }
 public CraftingResourceUi(CraftingResources resourceType, int inventoryNumber, Sprite icon)
 {
     ResourceType    = resourceType;
     InventoryNumber = inventoryNumber;
     Icon            = icon;
 }
 public BattleDrop(BattleDrop original)
 {
     resource = original.resource;
     minDrop  = original.minDrop;
     maxDrop  = original.maxDrop;
 }
Exemple #21
0
        public static float[] GetSenses(Dictionary <CraftingResources, TakenCraftingResourceRequest> dictionary, CraftingResources key)
        {
            var output = new float [SensorCount];

            if (dictionary.ContainsKey(key))
            {
                output[0] = (float)dictionary[key].Request.Resource;
                output[1] = dictionary[key].Request.Price;
                output[2] = dictionary[key].Request.Number;
                output[3] = dictionary[key].CurrentAmount;
            }
            return(output);
        }
 public ResourceRequirement(CraftingResources newType, int newNumber)
 {
     type   = newType;
     number = newNumber;
 }