Пример #1
0
 public void OnUpdate(SkillAttribute model)
 {
     Open();
     this.model       = model;
     iconImage.sprite = Manage.Instance.AB.GetGame <Sprite>(AssetbundleEnum.SkillIcon, model.icon);
     nameText.text    = model.name;
 }
Пример #2
0
    void UpdataSkillAttribute()
    {
        skillAttribute = new BaseAttribute();
        SkillAttribute _skill = null;

        if (dataModel.skillArray == null)
        {
            return;
        }
        for (int i = 0; i < dataModel.skillArray.Length; i++)
        {
            for (int j = 0; j < dataModel.skillArray[i].skillAry.Count; j++)
            {
                _skill = Manage.Instance.Data.GetObj <SkillAttribute>(dataModel.skillArray[i].skillAry[j]);
                if (_skill.triggerType == 1)
                {
                    continue;
                }
                if (_skill.effectType.Length == 0)
                {
                    continue;
                }
                if (_skill.effectType[0] != 6)
                {
                    continue;
                }
                if (_skill.IsNeedEquipment(dataModel) == false)
                {
                    continue;
                }
                _skill.additionalAttribute.Additional(finalAttribute, skillAttribute);
            }
        }
    }
Пример #3
0
 public virtual void Enter(Unit unit, SkillAttribute model, HexCell target, Action skillEnd)
 {
     this.unit     = unit;
     this.target   = target;
     this.skillEnd = skillEnd;
     attribute     = model;
     start();
     unit.animation.AddEvent(IntEvent, FolatEvent, StringEvent, ObjEvent);
 }
Пример #4
0
    public bool ActivateSkillCheck(SkillAttribute skillAttribute, int playerScore, int opposingScore)
    {
        if (_currentChaosBag == null)
        {
            Debug.LogError("SkillCheckManager.ActivateSkillCheck :: Chaos Bag is null");
            return(false);
        }

        // TODO check if player wants to discard playable card

        playerScore += DrawFromChaosBag();

        return(playerScore >= opposingScore);
    }
Пример #5
0
    private void SetSkillType(MemberInfo method)
    {
        SkillAttribute skillAttribute =
            System.Attribute.GetCustomAttribute(method, typeof(SkillAttribute)) as SkillAttribute;

        if (skillAttribute == null)
        {
            Debug.Log("Method's skill type is missing!");
            return;
        }

        SkillType = skillAttribute.SkillType;
        EarnedXp  = skillAttribute.EarnedXp;
    }
Пример #6
0
    public void UpdateSkill(SkillAttribute skill, Unit unit)
    {
        type        = 3;
        model       = skill;
        icon.sprite = Manage.Instance.AB.GetGame <Sprite>(AssetbundleEnum.SkillIcon, skill.icon);
        int needAp = skill.GetAP(unit.DataModel.finalAttribute);

        Interactable(unit.CurrentAP >= needAp);
        number.color = unit.CurrentAP >= needAp ? Color.white : Color.red;
        number.text  = needAp.ToString();

        if (skill.IsNeedEquipment(unit.DataModel.dataModel) == false)
        {
            mask.SetActive(true);
            return;
        }
        Open();
    }
Пример #7
0
 public override void Enter(object[] obj)
 {
     base.Enter(obj);
     MoveTargetCell = obj[0] as NavCell;
     if (obj.Length > 1)
     {
         AtkTarget = obj[1] as HexCell;
         seleSkill = obj[2] as SkillAttribute;
     }
     if (MoveTargetCell.cell == owner.CurrentUnit.cell)
     {
         MoveEnd();
     }
     else
     {
         BattleManager.ChangeState(GameState.moveing);
         StartCoroutine(Swquence());
     }
 }
Пример #8
0
        public int ValueOf(SkillAttribute attr)
        {
            switch (attr)
            {
            case SkillAttribute.Charisma:
                return(Charisma);

            case SkillAttribute.Intelligence:
                return(Intelligence);

            case SkillAttribute.Memory:
                return(Memory);

            case SkillAttribute.Perception:
                return(Perception);

            case SkillAttribute.Willpower:
                return(Willpower);
            }
            return(-1);
        }
Пример #9
0
        void OnClick(bool ison, string name)
        {
            if (ison == false)
            {
                return;
            }
            int type = int.Parse(name);

            if (TabToggle[type].isOn == false)
            {
                TabToggle[type].isOn = true;
            }
            List <SkillAttribute> skill = new List <SkillAttribute>();

            for (int i = 0; i < character.dataModel.skillArray[type].skillAry.Count; i++)
            {
                int            skillid = character.dataModel.skillArray[type].skillAry[i];
                SkillAttribute _skill  = Manage.Instance.Data.GetObj <SkillAttribute>(skillid);
                skill.Add(_skill);
            }

            int count = skill.Count - statsGame.Count;

            for (int i = 0; i < count; i++)
            {
                GameObject obj = Instantiate(SkillStatsGamePrefab);
                obj.SetParent(skillGrid);
                SkillStatsGame game = obj.AddComponent <SkillStatsGame>();
                game.mAwake(OnClickSkillStats);
                statsGame.Add(game);
            }
            for (count = 0; count < skill.Count; count++)
            {
                statsGame[count].OnUpdate(skill[count]);
            }
            for (; count < statsGame.Count; count++)
            {
                statsGame[count].Close();
            }
        }
Пример #10
0
    void UpdateSkill(Unit unit)
    {
        int count = 0;

        for (int i = 0; i < unit.DataModel.dataModel.skillArray.Length; i++)
        {
            for (int j = 0; j < unit.DataModel.dataModel.skillArray[i].Count; j++)
            {
                SkillAttribute skill = Manage.Instance.Data.GetObj <SkillAttribute>(unit.DataModel.dataModel.skillArray[i].skillAry[j]);
                if (skill.triggerType != 1)
                {
                    continue;
                }
                GetSkillItem(count).UpdateSkill(skill, unit);
                count++;
            }
        }
        for (count--; count < SkillItem.Count; count++)
        {
            SkillItem[count].Close();
        }
    }
Пример #11
0
    public float GetAttribute(SkillAttribute at)
    {
        switch (at)
        {
        case SkillAttribute.effectAmount:
            return(effectAmount);

        case SkillAttribute.duration:
            return(duration);

        case SkillAttribute.cooldown:
            return(cooldown);

        case SkillAttribute.cost:
            return(cost);

        case SkillAttribute.maxEnemiesHit:
            return((float)maxEnemiesHit);

        default:
            return(-1f);
        }
    }
Пример #12
0
    private string SkillAttributeToString(SkillAttribute sa)
    {
        switch (sa)
        {
        case SkillAttribute.cooldown:
        case SkillAttribute.cost:
        case SkillAttribute.duration:
            return(sa.ToString());

            break;

        case SkillAttribute.effectAmount:
            return("effect amount");

            break;

        case SkillAttribute.maxEnemiesHit:
            return("max enemies hit");

            break;
        }
        return("");
    }
Пример #13
0
        public static float GetSkillBonusForDuration(Responsible responsible, float duration)
        {
            SkillAttribute skillAttribute = System.Attribute.GetCustomAttribute(responsible.GetCurrentJob().Method, typeof(SkillAttribute)) as SkillAttribute;

            if (skillAttribute == null)
            {
                return(duration);
            }

            var reducedDuration = duration;

            if (responsible.Skills.ContainsKey(skillAttribute.SkillType))
            {
                reducedDuration *= (float)
                                   (responsible.Skills[skillAttribute.SkillType].MaxLevel -
                                    responsible.Skills[skillAttribute.SkillType].Level + 1) /
                                   responsible.Skills[skillAttribute.SkillType].MaxLevel;
            }

            Debug.Log("Reduced duration: " + reducedDuration);

            return(reducedDuration);
        }
Пример #14
0
 public override void OnUpdate()
 {
     if (!gameObject.activeSelf)
     {
         return;
     }
     NameText.text            = attribute.dataModel.name;
     attributePanel.Character = attribute;
     //TODO
     {
         attributePanel.Character.dataModel.skillArray = new global::SkillSaveModel[(int)skillEnum.length];
         for (int i = 0; i < attributePanel.Character.dataModel.skillArray.Length; i++)
         {
             attributePanel.Character.dataModel.skillArray[i] = new SkillSaveModel(i);
         }
         var _array = Manage.Instance.Data.GetObjAry <SkillAttribute>();
         for (int i = 0; i < _array.Count; i++)
         {
             SkillAttribute _skill = _array[i];
             attributePanel.Character.dataModel.skillArray[(int)_skill.skillType].skillAry.Add(_skill.id);
         }
     }
     skillPanel.Character = attribute;
 }
Пример #15
0
    void OnGUI()
    {
        nameSkill   = EditorGUILayout.TextField("Name", nameSkill);
        folderName  = EditorGUILayout.TextField("Save folder", folderName);
        description = EditorGUILayout.TextField("Description", description);
        skillLevel  = EditorGUILayout.IntField("Start skill level", skillLevel);
        skillShot   = EditorGUILayout.Toggle("Is a skillshot", skillShot);

        string assetPath = "Assets/Prefabs/Skills/SkillGUI/";

        string[] search_results = null;
        search_results     = System.IO.Directory.GetFiles(assetPath, "*.prefab", System.IO.SearchOption.AllDirectories);
        indexAreaSkillshot = EditorGUILayout.Popup("Area skillshot", indexAreaSkillshot, search_results);

        targetted = EditorGUILayout.Toggle("Is a targetted skill", targetted);
        passive   = EditorGUILayout.Toggle("Is a passive skill", passive);

        targetSelf    = EditorGUILayout.Toggle("Can hit sender", targetSelf);
        targetEnemies = EditorGUILayout.Toggle("Can hit enemies", targetEnemies);
        if (targetEnemies)
        {
            int cpt = 0;
            foreach (UnitType type in Enum.GetValues(typeof(UnitType)))
            {
                targettableEnemies[cpt] = EditorGUILayout.Toggle(type.ToString(), targettableEnemies[cpt]);
                cpt++;
            }
            EditorGUILayout.Space();
        }

        targetFriendlies = EditorGUILayout.Toggle("Can hit friendlies", targetFriendlies);
        if (targetFriendlies)
        {
            int cpt = 0;
            foreach (UnitType type in Enum.GetValues(typeof(UnitType)))
            {
                targettableFriendlies[cpt] = EditorGUILayout.Toggle(type.ToString(), targettableFriendlies[cpt]);
                cpt++;
            }
            EditorGUILayout.Space();
        }

        initialPosition = (InitialPositionState)EditorGUILayout.EnumPopup("Initial position", initialPosition);
        levelRequired   = EditorGUILayout.IntField("Level required", levelRequired);

        levelAttributesModifiersSize = EditorGUILayout.IntField("Skill levels", levelAttributesModifiersSize);
        if (levelAttributesModifiersSize > attributesModifiers.Count)
        {
            while (levelAttributesModifiersSize > attributesModifiers.Count)
            {
                attributesModifiers.Add(new ListSkillAttributes());
                attributesModifiersSizes.Add(new int());
            }
        }
        else if (levelAttributesModifiersSize < attributesModifiers.Count)
        {
            while (levelAttributesModifiersSize < attributesModifiers.Count)
            {
                attributesModifiers.RemoveAt(attributesModifiers.Count - 1);
                attributesModifiersSizes.RemoveAt(attributesModifiersSizes.Count - 1);
            }
        }

        for (int i = 0; i < attributesModifiers.Count; i++)
        {
            GUIStyle gstyleTextLevel = new GUIStyle(GUI.skin.textArea);
            gstyleTextLevel.margin.left += 10;
            GUIStyle gstyleTextAttributes = new GUIStyle(GUI.skin.textArea);
            gstyleTextAttributes.margin.left += 20;
            GUIStyle gstyleEnum = new GUIStyle(GUI.skin.GetStyle("MiniToolbarPopup"));
            gstyleEnum.margin.left += 24;

            attributesModifiersSizes[i] = EditorGUILayout.IntField("Level " + (i + 1) + " modifiers", attributesModifiersSizes[i], gstyleTextLevel);
            if (attributesModifiers[i].skillAttributes == null)
            {
                ListSkillAttributes lsa = new ListSkillAttributes();
                lsa.skillAttributes    = new List <SkillAttribute>();
                attributesModifiers[i] = lsa;
            }

            if (attributesModifiersSizes[i] > attributesModifiers[i].skillAttributes.Count)
            {
                while (attributesModifiersSizes[i] > attributesModifiers[i].skillAttributes.Count)
                {
                    attributesModifiers[i].skillAttributes.Add(new SkillAttribute());
                }
            }
            else if (attributesModifiersSizes[i] < attributesModifiers[i].skillAttributes.Count)
            {
                while (attributesModifiersSizes[i] < attributesModifiers[i].skillAttributes.Count)
                {
                    attributesModifiers[i].skillAttributes.RemoveAt(attributesModifiers[i].skillAttributes.Count - 1);
                }
            }

            for (int j = 0; j < attributesModifiers[i].skillAttributes.Count; j++)
            {
                SkillAttribute sa = new SkillAttribute();
                sa.nameSkillAttribute = (NameSkillAttribute)EditorGUILayout.EnumPopup("Attribute name", attributesModifiers[i].skillAttributes[j].nameSkillAttribute, gstyleEnum);
                sa.value = EditorGUILayout.FloatField("Value", attributesModifiers[i].skillAttributes[j].value, gstyleTextAttributes);
                attributesModifiers[i].skillAttributes[j] = sa;
            }

            EditorGUILayout.Space();
        }

        ps_skill = (GameObject)EditorGUILayout.ObjectField("Particle System", ps_skill, typeof(GameObject), true);

        if (GUILayout.Button("Add new skill"))
        {
            AddNewSkill(search_results);
        }
    }
Пример #16
0
 public void Open(SkillAttribute attribute)
 {
     Attribute = attribute;
     base.Open();
 }
Пример #17
0
 void OnClickSkillStats(SkillAttribute model)
 {
     PanelManager.Instantiate.SkillStatsPanel.Open(model, character);
 }
Пример #18
0
 public bool HaveSkill(SkillAttribute model)
 {
     return(skillArray[(int)model.skillType].skillAry.Contains(model.id));
 }
Пример #19
0
        public static uint GetPlayerSkill(Skills skill, SkillAttribute attr)
        {
            if(skill < Skills.Last && attr < SkillAttribute.Last)
            {
                return playerSkills[(int)skill, (int)attr];
            }

            return 0;
        }
Пример #20
0
 public static void SetPlayerSkill(Skills skill, SkillAttribute attr, uint value)
 {
     if(skill < Skills.Last && attr < SkillAttribute.Last)
     {
         playerSkills[(int)skill, (int)attr] = value;
     }
 }
Пример #21
0
 public void Open(SkillAttribute attribute, UnitModel character)
 {
     Character = character;
     Open(attribute);
 }
Пример #22
0
 public override void Enter(object[] obj)
 {
     model = obj[0] as SkillAttribute;
     FindAtkRange(model.releaseRange, 0);
 }
Пример #23
0
 public Upgrade(float amt, SkillAttribute name, int lvl)
 {
     upgradeAmt         = amt;
     attributeToUpgrade = name;
     lvlRequirement     = lvl;
 }
Пример #24
0
        public void Enter(Unit unit)
        {
            this.unit = unit;
            SkillAttribute _skill = SeleAction();

            if (move_maxRange <= 0)
            {
                owner.Unitmanager.NoActive();
                owner.ChangeState <SelectUnitBattleState>();
                return;
            }
            var         nav   = HexGrid.Instantiate.GetRange(unit.cell, move_maxRange, move_minRange, this.unit.IsAtk);
            List <Unit> units = new List <Unit>();

            for (int i = 0; i < nav.Count; ++i)
            {
                if (nav[i].unit != null)
                {
                    if (nav[i].unit.IsDie)
                    {
                        continue;
                    }
                    if (nav[i].unit.ranks == unit.ranks)
                    {
                        continue;
                    }
                    units.Add(nav[i].unit);
                }
            }
            HexCell        Atk_Target = null;
            NavCell        target     = null;
            List <NavCell> path       = new List <NavCell>();

            if (units.Count() == 0)
            {
                path = GetPath();
            }
            else
            {
                Atk_Target = Manage.Instance.Battle.Unitmanager.GetMaxValue(unit.ranks, units).cell;
                List <NavCell> atkCell  = HexGrid.Instantiate.GetAtkCell(Atk_Target, atk_maxRange, atk_minRange, unit.AtkRange);
                List <NavCell> moveCell = HexGrid.Instantiate.GetMoveRangePath(this.unit.cell,
                                                                               //this.unit.DataModel[DataEnum.move],
                                                                               move_maxRange,
                                                                               this.unit.IsMove);
                var _range = moveCell.Intersect(atkCell, new NavCell.StudentComparer()).ToList();
                //var _cell = atkCell.Find(a => a.cell == owner.CurrentUnit.cell);
                //if (_cell != null)
                //{
                //    _range.Add(_cell);
                //}
                if (_range.Count == 0)
                {
                    path       = GetPath();
                    Atk_Target = null;
                }
                else
                {
                    _range.Sort((a, b) => b.GetValue(unit).CompareTo(a.GetValue(unit)));
                    target = _range[0];
                    if (target.cell != unit.cell)
                    {
                        path = HexGrid.Instantiate.GetPath(this.unit.cell, target.cell,
                                                           this.unit.DataModel[DataEnum.move],
                                                           this.unit.IsMove);
                    }
                }
            }
            if (path.Count > 0)
            {
                if (path[0].cell.unit != null)
                {
                    path.RemoveAt(0);
                }
            }
            if (path.Count > 0)
            {
                target = path[0];
            }
            if (target == null)
            {
                owner.Unitmanager.NoActive();
                owner.ChangeState <SelectUnitBattleState>();
                return;
            }
            owner.ChangeState <MoveBattleState>(target, Atk_Target, _skill);
        }