private void RefreshCargoPanel()
    {
        float lineHeight = cargoItemLinePrefab.GetComponent <RectTransform>().rect.height;
        int   lineAmount = 0;

        if (currentCargo != null)
        {
            lineAmount = currentCargo.GetStoredResourceTypes().Length;
        }

        var delta = panel.GetComponent <RectTransform>().sizeDelta;

        delta.y = lineHeight * lineAmount;
        panel.GetComponent <RectTransform>().sizeDelta = delta;

        if (lineAmount > existingLines.Count)
        {
            int lineAmountToInstantiate = lineAmount - existingLines.Count;
            for (int i = 0; i < lineAmountToInstantiate; i++)
            {
                GameObject newLine = CreateTradeLine(panel, existingLines, lineHeight);
                existingLines.Add(newLine.GetComponent <TradePanelLine>());
            }
        }
        else if (lineAmount < existingLines.Count)
        {
            for (int i = lineAmount; i < existingLines.Count; i++)
            {
                var line = existingLines[i];
                existingLines.RemoveAt(i);
                Destroy(line.gameObject);
            }
        }

        if (lineAmount > 0)
        {
            int lineID = 0;
            for (int i = 0; i < currentCargo.StoredResources.Length; i++)
            {
                if (currentCargo.StoredResources[i] > 0)
                {
                    RESOURCE_TYPE t = (RESOURCE_TYPE)i;
                    existingLines[lineID].SetLineInfo(t, currentCargo.StoredResources[i], t.GetBasePrice());
                    lineID++;
                }
            }
        }
    }
Beispiel #2
0
    public override void Start()
    {
        if (dockableComponent == null || dockableComponent.Docked == false)
        {
            Fail("SHIP NOT DOCKED");
            return;
        }

        var tradingComponent = dockableComponent.DockedAt.GetComponent <Trading>();

        if (tradingComponent != null)
        {
            var storedResourcesID = shipCargoComponent.GetStoredResourceTypes();
            for (int i = 0; i < storedResourcesID.Length; i++)
            {
                uint          resourceTypeID = storedResourcesID[i];
                RESOURCE_TYPE t = (RESOURCE_TYPE)resourceTypeID;
                tradingComponent.BuyFrom(shipCargoComponent, t, shipCargoComponent.StoredResources[resourceTypeID], t.GetBasePrice()); // TODO Dynamic prices
            }
            Succeed();
        }
        else
        {
            Fail("STATION HAS NO TRADING COMPONENT");
            return;
        }
    }