Ejemplo n.º 1
0
 public void StopAllAttacks()
 {
     StopAttack(CharacterAttackType.Melee);
     StopAttack(CharacterAttackType.Dodge);
     StopAttack(CharacterAttackType.Distance);
     _currentAttackType = CharacterAttackType.None;
 }
 void OnAttackHit(CharController charController, CharacterAttackType characterAttackType, int damage)
 {
     if (characterAttackType == CharacterAttackType.Tackle)
     {
         _tackleSumDamage += damage;
     }
 }
 void OnAttack(CharController charController, CharacterAttackType characterAttackType)
 {
     if (characterAttackType == CharacterAttackType.Projectile)
     {
         _projectileThrowCount++;
     }
 }
Ejemplo n.º 4
0
        public static CharacterEditorAttackData CreateData(CharacterAttackType attackType)
        {
            switch (attackType)
            {
            case CharacterAttackType.BOMB:
                return(new CharacterEditorBombAttackData());

            case CharacterAttackType.NORMAL:
                return(new CharacterEditorNormalAttackData());
            }
            return(null);
        }
Ejemplo n.º 5
0
        public static AttackBaseData CreateInstance(CharacterAttackType eType)
        {
            switch (eType)
            {
            case CharacterAttackType.BOMB:
                return(AttackBaseData.CreateInstance <AttackBombData>());

            case CharacterAttackType.NORMAL:
                return(AttackBaseData.CreateInstance <AttackNormalData>());
            }
            return(null);
        }
Ejemplo n.º 6
0
        public void ChangeFrameData(int index, CharacterAttackType attType)
        {
            CharacterEditorAttackData dt = this.m_attackDatas[index];
            int iFrame = dt.m_iFrame;

            if (attType != dt.m_attackType)
            {
                dt                        = CharacterEditorAttackData.CreateData(attType);
                dt.m_iFrame               = iFrame;
                dt.m_attackType           = attType;
                this.m_attackDatas[index] = dt;
            }
        }
    public static AttackType ToAttackType(CharacterAttackType attackType)
    {
        switch (attackType)
        {
        case CharacterAttackType.Tackle:
            return(AttackType.Tackle);

        case CharacterAttackType.Projectile:
            return(AttackType.Projectile);
        }

        throw new System.NotImplementedException();
    }
Ejemplo n.º 8
0
    public void SetAttackTarget(CharacterAttackType type, Transform target)
    {
        switch (type)
        {
        case CharacterAttackType.Melee:
            _meleeAttack.FovSightLogic.Target = target;
            break;

        case CharacterAttackType.Dodge:
        case CharacterAttackType.Distance:
            break;

        case CharacterAttackType.None:
            break;
        }

        _currentAttackType = type;
    }
Ejemplo n.º 9
0
    public void StopAttack(CharacterAttackType type)
    {
        switch (type)
        {
        case CharacterAttackType.Melee:
            _meleeAttack.FovSightLogic.Target = null;
            _animationLogic.TogglePunchAnim(false);
            break;

        case CharacterAttackType.Dodge:
        case CharacterAttackType.Distance:
            break;

        case CharacterAttackType.None:
            break;
        }

        IsAttacking = false;
    }
    public void LoadStats(BaseCharacter stats)
    {
        baseDamage         = stats.BaseDamage;
        attackSpeed        = stats.AttackSpeed;
        maxHealth          = stats.Health;
        maxMana            = stats.Mana;
        armor              = stats.Armor;
        magicArmor         = stats.MagicArmor;
        attackRange        = stats.AttackRange;
        movementSpeed      = stats.MovementSpeed;
        healthRegeneration = stats.HealthRegeneration;
        manaRegeneration   = stats.ManaRegeneration;
        goldGivenUponDeath = stats.GoldGivenUponDeath;
        attackType         = stats.AttackType;
        attackRangeType    = stats.RangeType;

        currentHealth = maxHealth;
        currentMana   = maxMana;
    }
Ejemplo n.º 11
0
        public override void FromXml(XmlElement xml)
        {
            XmlRead.Attr(xml, "animation_name", ref animation_name);
            XmlRead.Attr(xml, "total_frame", ref total_frame);

            XmlNodeList xmlList = xml.GetElementsByTagName("attack");
            int         frame   = -1;

            foreach (XmlNode node in xmlList)
            {
                XmlElement          ele   = node as XmlElement;
                CharacterAttackType eType = CharacterAttackType.NONE;

                XmlRead.AttrEnum <CharacterAttackType>(ele, "attack_type", ref eType);
                XmlRead.Attr(ele, "frame_index", ref frame);

                AttackBaseData pData = AttackBaseData.CreateInstance(eType);
                pData.FromXml(ele);
                AttackData[frame]      = pData;
                Network.attackbasedata = pData;
            }
        }
Ejemplo n.º 12
0
 public void OnDamageTaken(HeroCharacterStatManagement recievingCharacter, BaseCharacterStatManagement attackingCharacter, CharacterAttackType type, float dmg)
 {
     base.OnDamageTaken(recievingCharacter, attackingCharacter, type, dmg);
 }
    public void OnDamageTaken(BaseCharacterStatManagement recievingCharacter, BaseCharacterStatManagement attackingCharacter, CharacterAttackType type, float dmg)
    {
        // Damage after armor damage reduction.
        float reducedDmg;

        if (type == CharacterAttackType.PHYSICAL || type == CharacterAttackType.SIEGE)
        {
            reducedDmg = dmg * (1 - armor / 50);
        }
        else if (type == CharacterAttackType.MAGICAL)
        {
            reducedDmg = dmg * (1 - magicArmor / 50);
        }
        else if (type == CharacterAttackType.MIXED)
        {
            reducedDmg = (dmg / 2) * (1 - armor / 50) + (dmg / 2) * (1 - magicArmor / 50);
        }
        else
        {
            reducedDmg = dmg;
        }

        Debug.Log("Damage after armor damage reduction = " + reducedDmg);

        if (recievingCharacter.currentHealth - reducedDmg <= 0)
        {
            recievingCharacter.currentHealth = 0;
            if (attackingCharacter is HeroCharacterStatManagement)
            {
                HeroCharacterStatManagement heroCharacterStatManager = (HeroCharacterStatManagement)attackingCharacter;
                heroCharacterStatManager.currentGold += recievingCharacter.goldGivenUponDeath;
                Debug.Log(recievingCharacter.characterStats.CharacterName + " died. " + recievingCharacter.goldGivenUponDeath + " gold added to " + attackingCharacter.characterStats.CharacterName);
            }
        }
        else
        {
            recievingCharacter.currentHealth -= reducedDmg;
        }
    }
Ejemplo n.º 14
0
    public override void OnInspectorGUI()
    {
        if (m_chaEditData == null)
        {
            PrintLog("the chaEditorData is null");
            return;
        }
        m_chaEditData.m_id              = EditorGUILayout.IntField("PlayerID: ", m_chaEditData.m_id);
        m_chaEditData.m_resID           = EditorGUILayout.IntField("PlayerResourceID:", m_chaEditData.m_resID);
        m_chaEditData.m_defaultName     = EditorGUILayout.TextField("PlayerDefaultName: ", m_chaEditData.m_defaultName);
        m_chaEditData.m_scale           = EditorGUILayout.FloatField("PlayerScale:", m_chaEditData.m_scale);
        m_chaEditData.m_walkSpeedX      = EditorGUILayout.IntField("PlayerXSpeed: ", m_chaEditData.m_walkSpeedX);
        m_chaEditData.m_walkSpeedY      = EditorGUILayout.IntField("PlayerYSpeed:", m_chaEditData.m_walkSpeedY);
        m_chaEditData.m_hatred          = EditorGUILayout.FloatField("PlayerHatred:", m_chaEditData.m_hatred);
        m_chaEditData.m_lowFireAngle    = EditorGUILayout.FloatField("PlayerLowFireAngle:", m_chaEditData.m_lowFireAngle);
        m_chaEditData.m_higFireAngle    = EditorGUILayout.FloatField("PlayerHigFireAngle:", m_chaEditData.m_higFireAngle);
        m_chaEditData.m_fireRange       = EditorGUILayout.IntField("PlayerFireRange:", m_chaEditData.m_fireRange);
        m_chaEditData.m_weaponPosition  = EditorGUILayout.Vector2Field("PlayerWeaponPos", m_chaEditData.m_weaponPosition);
        m_chaEditData.m_beAttackBoxMinX = EditorGUILayout.IntField("PlayerBAtkBoxMinX:", m_chaEditData.m_beAttackBoxMinX);
        m_chaEditData.m_beAttackBoxMinY = EditorGUILayout.IntField("PlayerBAtkBoxMinY:", m_chaEditData.m_beAttackBoxMinY);
        m_chaEditData.m_beAttackBoxMaxX = EditorGUILayout.IntField("PlayerBAtkBoxMaxX:", m_chaEditData.m_beAttackBoxMaxX);
        m_chaEditData.m_beAttackBoxMaxY = EditorGUILayout.IntField("PlayerBAtkBoxMaxY:", m_chaEditData.m_beAttackBoxMaxY);
        if (GUILayout.Button("Add New State"))
        {
            if (m_chaEditData.IsAllStateExist())
            {
                m_addState = AddState.FULLSTATE;
            }
            else
            {
                m_addState = AddState.NEWSTATE;
            }
        }
        EditorGUILayout.Space();
        if (m_addState == AddState.FULLSTATE)
        {
            EditorGUILayout.LabelField("all states is used");
        }
        else if (m_addState == AddState.NEWSTATE)
        {
            CharacterStateType newestState = m_chaEditData.GetNewestState();
            m_chaEditData.AddNewState(newestState);
            m_addState = AddState.NONE;
        }

        EditorGUILayout.Space();
        ///Debug.Log("yes");
        for (int index = 0; index < m_chaEditData.m_lsStates.Count; index++)
        {
            CharacterEditorData.CharacterEditorStateData chaState = m_chaEditData.m_lsStates[index];
            //Debug.Log(EditorGUILayout.EnumPopup("state:", chaState.m_newState));
            CharacterStateType state = (CharacterStateType)EditorGUILayout.EnumPopup("state:", chaState.m_stateType);
            m_chaEditData.ChangeByState(chaState, state);
            chaState.m_animationName = EditorGUILayout.TextField("AnimationName:", chaState.m_animationName);
            int totFrame = EditorGUILayout.IntField("TotalFrame:", chaState.m_totFrame);
            if (totFrame != chaState.m_totFrame)
            {
                chaState.m_totFrame = totFrame;
                chaState.UpdateFramesSz();
            }
            if (chaState.m_stateType == CharacterStateType.ATTACK)
            {
                if (GUILayout.Button("Add Frame Data", GUILayout.MaxWidth(130), GUILayout.MaxHeight(20)))
                {
                    int newFrame = chaState.GetNewFrame();
                    //Debug.Log(newFrame);
                    if (newFrame != -1)
                    {
                        chaState.AddFrameData(newFrame);
                    }
                }
                EditorGUILayout.Space();
                for (int i = 0; i < chaState.m_attackDatas.Count; i++)
                {
                    CharacterEditorData.CharacterEditorAttackData frameData = chaState.m_attackDatas[i];
                    int frame = EditorGUILayout.IntField("Frame:", frameData.m_iFrame);
                    if (chaState.IsLegalFrame(frame))
                    {
                        //Debug.Log(frame);
                        frameData.m_iFrame = frame;
                    }
                    CharacterAttackType attackType = (CharacterAttackType)EditorGUILayout.EnumPopup("AttackType:", frameData.m_attackType);
                    chaState.ChangeFrameData(i, attackType);
                    EditorGUILayout.Space();
                    if (frameData.m_attackType == CharacterAttackType.BOMB)
                    {
                        CharacterEditorData.CharacterEditorBombAttackData bomb = (CharacterEditorData.CharacterEditorBombAttackData)frameData;
                        bomb.m_bombCofigID  = EditorGUILayout.IntField("BombConfigID:", bomb.m_bombCofigID);
                        bomb.m_damage       = EditorGUILayout.IntField("Damge:", bomb.m_damage);
                        bomb.m_centerDamage = EditorGUILayout.IntField("CenterDamage:", bomb.m_centerDamage);
                    }
                    if (GUILayout.Button("Remove this Frame"))
                    {
                        chaState.RemoveFrameData(frameData.m_iFrame);
                    }
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                }
            }
            if (GUILayout.Button("remove this state"))
            {
                m_chaEditData.RemoveOldState(index);
            }
            EditorGUILayout.Space();
            EditorGUILayout.Space();
        }
        EditorUtility.SetDirty(m_chaEditData);
    }
Ejemplo n.º 15
0
 public AttackBaseData(CharacterAttackType eType)
 {
     Type = eType;
 }