示例#1
0
 public void ClearSlot()
 {
     _status         = SlotState.Empty;
     unitDescription = null;
     Destroy(child);
     Destroy(classDisplay);
     unitDescriptionDisplay.UnselectActualSlot();
 }
示例#2
0
 private UnitDescriptionForSerialization(UnitDescription unit)
 {
     name        = unit.GetUnitName();
     unitRace    = unit.GetRace().race.ToString();
     unitClass   = unit.GetClass().clas.ToString();
     abilityName = unit.GetAbilityName();
     id          = unit.GetId();
     experience  = unit.GetExperience();
     level       = unit.GetLevel();
     gems        = unit.GetGems();
 }
示例#3
0
 public void PutInEmptySlot(UnitDescription unit)
 {
     foreach (InventorySlot slot in slots)
     {
         if (slot.Status == InventorySlot.SlotState.Empty)
         {
             slot.PutInSlot(unit);
             return;
         }
     }
 }
示例#4
0
    private UnitDescription GetEquivalentUnit(UnitDescription unitToFind)
    {
        foreach (UnitDescription unit in unitsInInventory.Values)
        {
            if (unit.IsOfSameTypeThan(unitToFind))
            {
                return(unit);
            }
        }

        return(null);
    }
示例#5
0
    private void AddRandomUnit()
    {
        UnitDescription newUnit     = null;
        bool            createdUnit = false;

        while (!createdUnit) //Unsafe, must have at most as many slots than possible combinations
        {
            newUnit = UnitGenerator.GenerateUnit(Unit.allyTag);
            if (GetEquivalentUnit(newUnit) == null)
            {
                createdUnit = true;
            }
        }
        AddUnitInInventory(newUnit);
    }
示例#6
0
    public void PutInSlot(UnitDescription unitDescription)
    {
        if (_status != SlotState.Empty)
        {
            return;
        }

        _status = SlotState.Used;

        child = new GameObject(unitDescription.GetUnitName());
        child.transform.SetParent(transform, false);

        float width = GetComponent <RectTransform>().rect.width;

        {
            Image  i      = child.AddComponent <Image>();
            Sprite sprite = unitDescription.GetSprite();
            i.sprite = sprite;

            Rect          spriteRect  = unitDescription.GetSprite().rect;
            float         aspectRatio = spriteRect.width / spriteRect.height;
            RectTransform rt          = child.GetComponent <RectTransform>();
            rt.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, width);
            rt.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, width * aspectRatio);
        }

        this.unitDescription = unitDescription;

        {
            classDisplay = new GameObject("Class display");
            classDisplay.transform.SetParent(transform, false);
            RectTransform rt = classDisplay.AddComponent <RectTransform>();
            rt.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Top, 0, width * 0.25f);
            rt.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Right, 0, width * 0.25f);
            classDisplay.AddComponent <Image>().sprite = unitDescription.GetClass().classIconSprite;
        }
    }
示例#7
0
    public void AddUnitInInventory(UnitDescription unit, bool addToGUINow = false)
    {
        UnitDescription equivalentUnit = GetEquivalentUnit(unit);

        if (equivalentUnit == null)
        {
            if (unitsInInventory.Count >= maxElements)
            {
                Player.instance.Wallet.Earn(ShopSystem.GetUnitSellPrice(unit));
                return;
            }

            unitsInInventory.Add(unit.GetId(), unit);

            if (addToGUINow)
            {
                inventoryUI.PutInEmptySlot(unit);
            }

            return;
        }

        equivalentUnit.EarnExperience(3);
    }
示例#8
0
 public void RemoveFromInventory(UnitDescription unit)
 {
     unitsInInventory.Remove(unit.GetId());
     inventoryUI.UpdateGUI();
 }
示例#9
0
 public static UnitDescriptionForSerialization GetSerializableVersionOf(UnitDescription unit)
 {
     return(new UnitDescriptionForSerialization(unit));
 }
示例#10
0
 public bool IsOfSameTypeThan(UnitDescription otherUnit)
 {
     return(unitRace == otherUnit.unitRace && unitClass == otherUnit.unitClass && abilityName == otherUnit.abilityName);
 }
示例#11
0
        protected List <DataFormatParameter> createTestParameters(string moleculeColumnName, UnitDescription timeUnitDescription, UnitDescription concentrationUnitDescription, IDimension _timeConcentrationDimension)
        {
            var parameterList = new List <DataFormatParameter>
            {
                new MappingDataFormatParameter("time  [h]",
                                               new Column()
                {
                    Name = "Time", Dimension = _dimensionFactory.Dimension("Time"), Unit = timeUnitDescription
                }),
                new MappingDataFormatParameter("conc  [mg/l]",
                                               new Column()
                {
                    Name = "Concentration", Dimension = _timeConcentrationDimension, Unit = concentrationUnitDescription
                }),
                new MappingDataFormatParameter("SD [mg/l]",
                                               new Column()
                {
                    Name = "Error", ErrorStdDev = "Arithmetic Standard Deviation", Dimension = _massConcentrationDimension,
                    Unit = new UnitDescription("mg/l")
                }),
                new MetaDataFormatParameter("VenousBlood", "Organ", false),
                new MetaDataFormatParameter(moleculeColumnName, "Molecule", false)
            };

            return(parameterList);
        }
    public void UpdateDescription()
    {
        if (actualSlot == null)
        {
            UnitName.text       = "";
            UnitStats.text      = "";
            UnitExperience.text = "";
            return;
        }

        currentDescription = actualSlot.GetCurrentUnitDescription();

        SetUnitName(currentDescription.GetUnitName());
        SetUnitExperience(currentDescription.GetExperience());
        SetUnitLevel(currentDescription.GetLevel());
        ClassStat classe = currentDescription.GetClass();
        RaceStat  race   = currentDescription.GetRace();


        //destroy previously displayed slots
        foreach (GameObject slot in gemSlots)
        {
            Destroy(slot);
        }

        string[] gems = currentDescription.GetGems();
        gemSlots    = new List <GameObject>();
        currentGems = new List <Gem>();

        if (ResetGemsButton)
        {
            if (GameManager.instance.gamestate == GameManager.GameState.Placement ||
                (GameManager.instance.gamestate == GameManager.GameState.Shopping ||
                 GameManager.instance.gamestate == GameManager.GameState.Resolution) &&
                actualSlot.GetSlotType() == InventorySlot.SlotType.Inventory)
            {
                GenerateSlots(gems);
                ResetGemsButton.gameObject.SetActive(true);
            }

            else
            {
                ResetGemsButton.gameObject.SetActive(false);
            }
        }

        uint  level            = currentDescription.GetLevel();
        float damage           = classe.damage + race.damage + 1 * (level - 1);
        float maxLife          = classe.maxLife + race.maxLife + 10 * (int)(level - 1);
        float attackSpeed      = classe.attackSpeed + race.attackSpeed + 0.05f * (level - 1);
        float moveSpeed        = classe.moveSpeed + race.moveSpeed;
        float armor            = classe.armor + race.armor + 0.05f * (level - 1);
        float power            = 1 + 0.05f * (level - 1);
        int   range            = classe.range;
        float incrementStamina = classe.incrementStamina;

        if (currentGems.Count > 0)
        {
            foreach (Gem gem in currentGems)
            {
                if (gem.GetStatModified() == Gem.StatModified.None)
                {
                    gem.InitializeStatModified();
                }

                switch (gem.GetStatModified())
                {
                case Gem.StatModified.Damage:
                    damage = gem.InitGemEffect(damage);
                    break;

                case Gem.StatModified.Health:
                    maxLife = gem.InitGemEffect(maxLife);
                    break;

                case Gem.StatModified.AttackSpeed:
                    attackSpeed = gem.InitGemEffect(attackSpeed);
                    break;

                case Gem.StatModified.Armor:
                    armor = gem.InitGemEffect(armor);
                    break;

                case Gem.StatModified.MovementSpeed:
                    moveSpeed = gem.InitGemEffect(moveSpeed);
                    break;

                case Gem.StatModified.Power:
                    power = gem.InitGemEffect(power);
                    break;
                }
            }
        }

        //get ability name and add space before every capital letter
        string        abilityName           = currentDescription.GetAbilityName();
        StringBuilder abilityNameWithSpaces = new StringBuilder(abilityName.Length * 2);

        abilityNameWithSpaces.Append(abilityName[0]);
        for (int i = 1; i < abilityName.Length; i++)
        {
            if (char.IsUpper(abilityName[i]) && abilityName[i - 1] != ' ')
            {
                abilityNameWithSpaces.Append(' ');
            }
            abilityNameWithSpaces.Append(abilityName[i]);
        }


        string stats =
            "Classe : " + classe.name + "\n" +
            "Race : " + race.name + "\n" +
            "Capacité : " + abilityNameWithSpaces + "\n" +
            "Stamina générée : " + incrementStamina + "\n" +
            "PV Max : " + maxLife + "\n" +
            "Dégâts : " + Mathf.Round(damage * 100f) / 100f + "\n" +
            "Vitesse d'attaque : " + Mathf.Round(attackSpeed * 100f) / 100f + "\n" +
            "Vitesse de déplacement : " + Mathf.Round(moveSpeed * 100f) / 100f + "\n" +
            "Armor : " + Mathf.Round(armor * 100f) / 100f + "\n" +
            "Puissance : " + Mathf.Round(power * 100f) / 100f + "\n" +
            "Portée : " + range + "\n";

        SetUnitStats(stats);
    }