Beispiel #1
0
    private bool PutPart()
    {
        /*
         * Tries to put a part taken from inventory into the building. Returns true on success and false on failure.
         */

        Inventory inventory = Inventory.instance;

        foreach (var matN in matsNeeded)
        {
            BuildMaterial matL = BuildMaterial.GetByKey(matsLeft, matN.item);

            if (matL.count <= 0) // Check if this material has already been exhausted
            {
                continue;
            }

            if (inventory.Pull(matN.item))   // Takes the item from the inventory
            {
                matL.count--;
                return(true);
            }
        }

        return(false);
    }
Beispiel #2
0
 public DefenceUnit(int _MAX_defense, WorldDirection worldDirect, BuildMaterial buildMaterial)
 {
     MAX_defense    = _MAX_defense;
     defense        = _MAX_defense;
     position       = worldDirect;
     material       = buildMaterial;
     guard_count    = 0;
     warriors       = null;
     dmgPerGuardian = default_dmg_per_guardian;
 }
Beispiel #3
0
 public BuildC(BuildType __buildType, BuildSize __buildSize, BuildMaterial __buildMaterial, float __health, float __burningRate, int __livingPlaces, int __toolsStorage, int __foodStorage, int __clothStorage)
 {
     _buildType     = __buildType;
     _buildMaterial = __buildMaterial;
     _buildSize     = __buildSize;
     _health        = __health;
     _burningRate   = __burningRate;
     _livingPlaces  = __livingPlaces;
     _toolStorage   = new ITool[__toolsStorage];
     _foodStorage   = new IFood[__foodStorage];
     _clothStorage  = new ICloth[__clothStorage];
 }
Beispiel #4
0
    ///<returns> Return burning rate for build depending on material.</returns>
    public float GetBurningRate()
    {
        float _burningRate = 0;

        switch (_buildMaterial)
        {
        case BuildMaterial.Stone:
            _buildMaterial += 20;
            break;

        case BuildMaterial.Wood:
            _buildMaterial += 50;
            break;
        }
        return(_burningRate);
    }
Beispiel #5
0
    private bool IsFinished()
    {
        /*
         * Check if player has put every part into the building
         */

        foreach (var matN in matsNeeded)
        {
            BuildMaterial matL = BuildMaterial.GetByKey(matsLeft, matN.item);
            if (matL.count > 0)
            {
                return(false);
            }
        }

        return(true);
    }
Beispiel #6
0
    public void UpdateTooltip()
    {
        /*
         * Updates the tooltip displaying the amount of materials needed and already put
         */

        StringBuilder sb = new StringBuilder();

        foreach (var matN in matsNeeded)
        {
            sb.Append(matN.item.name + ": ");
            BuildMaterial matL   = BuildMaterial.GetByKey(matsLeft, matN.item);
            int           matPut = matN.count - matL.count;

            sb.Append(matPut + "/" + matN.count + "\n");
        }

        interactable._tooltipText = sb.ToString();
    }
Beispiel #7
0
    public void PickUpMaterial(BuildMaterial.Type type)
    {
        BuildMaterial closestMaterial = null;
        float         distance        = 1000;

        List <BuildMaterial> materialsOnLevel = new List <BuildMaterial>();

        if (type == BuildMaterial.Type.Rock)
        {
            materialsOnLevel = new List <BuildMaterial>(gm.rock);
        }
        else if (type == BuildMaterial.Type.Wood)
        {
            materialsOnLevel = new List <BuildMaterial>(gm.wood);
        }

        foreach (BuildMaterial bm in materialsOnLevel)
        {
            if (!bm.usedInBuilding)
            {
                float newDistance = Vector3.Distance(transform.position, bm.transform.position);
                if (newDistance <= distance)
                {
                    distance        = newDistance;
                    closestMaterial = bm;
                }
            }
        }

        if (closestMaterial != null)
        {
            closestMaterial.hc.characterWhoTargeted = hc;
            targetObject = closestMaterial.hc;
            hc.movement.Move(closestMaterial.gameObject);
            StartCoroutine(GetDistanceToTarget());
        }
        else
        {
            Invoke("ChooseTask", 1);
        }
    }
Beispiel #8
0
 public void AddMaterial(BuildMaterial bm)
 {
     materials.Add(bm);
 }
Beispiel #9
0
 public void SetBuildMaterial(int __buildMaterial)
 {
     _buildMaterial = (BuildMaterial)__buildMaterial;
 }
Beispiel #10
0
 public Tower(WorldDirection worldDirect, BuildMaterial buildMaterial, int attackdmg) : base(worldDirect, buildMaterial)
 {
     attackDmg = attackdmg;
 }
Beispiel #11
0
 public Tower(int _MAX_defense, WorldDirection worldDirect, BuildMaterial buildMaterial, int attackdmg) : base(_MAX_defense, worldDirect, buildMaterial)
 {
     attackDmg = attackdmg;
 }
 public Gate(WorldDirection worldDirect, BuildMaterial buildMaterial, bool isOpen) : base(worldDirect, buildMaterial)
 {
     isGateOpen = isOpen;
 }
 public Gate(int _MAX_defense, WorldDirection worldDirect, BuildMaterial buildMaterial, bool isOpen) : base(_MAX_defense, worldDirect, buildMaterial)
 {
     isGateOpen = isOpen;
 }