コード例 #1
0
    private IEnumerator DelayCharacterSpawn(int amt, int i, int j)
    {
        for (int k = 0; k < amt; k++)
        {
            int tempCardNum   = settings.area[areaNum].subStage[stageNum].stageSettings[i].unitSettings[j].unitCardNum;
            int tempCardLevel = settings.area[areaNum].subStage[stageNum].stageSettings[i].unitSettings[j].unitLevel;
            CharacterProperties.UnitType tempUnitType;
            team = settings.area[areaNum].subStage[stageNum].stageSettings[i].unitSettings[j].unitTeam;

            if (tempCardNum > 0)
            {
                tempUnitType = GetUnitTypeByCardNumber(tempCardNum);
            }
            else
            {
                CharacterProperties.UnitType tempUnitType2 = settings.area[areaNum].subStage[stageNum].stageSettings[i].unitSettings[j].unitType;
                int tempRarity           = settings.area[areaNum].subStage[stageNum].stageSettings[i].unitSettings[j].rarity;
                CharacterProperties prop = GetUnitByClassAndRarity(tempUnitType2, tempRarity);

                tempCardNum  = characterSettings.characterProperties.IndexOf(prop) + 1;
                tempUnitType = prop.unitType;
            }

            defObj.SpawnCharacter(damageApplyDeck, tempCardNum, tempCardLevel, tempUnitType, team);

            yield return(new WaitForSeconds(Random.Range(0.3f, 1f)));
        }
    }
コード例 #2
0
    public void ButtonHandler(GameObject go)
    {
        int currentButton = go.GetComponent <UnitButtonHandler>().buttonNumber;
        UnitButtonHandler buttonHandlerRef = go.GetComponent <UnitButtonHandler>();

        //int tempRequirement = skillButtonArray[currentButton].GetComponent<UnitButtonHandler>().cost;
        int tempRequirement = 5;
        int elementToCheck  = buttonHandlerRef.referenceNumber;
        int settingsValue   = buttonHandlerRef.settingsReferer;

        CharacterProperties.UnitType buttonUnitType = characterSettingsPrefab.GetComponent <CharacterSettings>().characterProperties[settingsValue].unitType;

        buttonHandlerRef.currentAmount -= 5;

        UpdateElementText();

        if (go.transform.FindChild("Dim").GetComponent <UISprite>().localSize.y != buttonHandlerRef.originalSize.y)
        {
            go.GetComponent <UnitButtonHandler>().ActivateButtonCoolDown();
        }

        if (GlobalManager.multiplyerGame)
        {
            this.gameObject.GetComponent <GameNetworkHandler>().NetworkMessage(GlobalManager.NetworkMessage.SpawnUnit, new object[4] {
                bonusDamageDeck, settingsValue + 1, 5, (int)buttonUnitType
            });
        }
        else
        {
            defObj.SpawnCharacter(bonusDamageDeck, settingsValue + 1, GlobalManager.UICard.localUserCardDeck[currentButton].level, buttonUnitType, CharacterProperties.Team.LEFT);
        }
    }
コード例 #3
0
    private CharacterProperties GetUnitByClassAndRarity(CharacterProperties.UnitType unittype, int rarity)
    {
        List <CharacterProperties> tempHolder = new List <CharacterProperties>();

        for (int i = 0; i < characterSettings.characterProperties.Count; i++)
        {
            if (characterSettings.characterProperties[i].unitType == unittype && characterSettings.characterProperties[i].rarity == rarity)
            {
                tempHolder.Add(characterSettings.characterProperties[i]);
            }
        }

        int chosenOne = (int)Random.Range(0, tempHolder.Count);

        return(tempHolder[chosenOne]);
    }
コード例 #4
0
    public void SpawnCharacter(int cardNum, CharacterProperties.UnitType unit)
    {
        CharacterProperties.Team           tempOwner = CharacterProperties.Team.LEFT;
        CharacterProperties.CategoryColour colour    = GlobalManager.GameSettings.csObj.characterProperties[cardNum].category;
        int rankLevel = cardNum;

        if (unit != CharacterProperties.UnitType.DRAGON)
        {
            GameObject go = Instantiate(characterPrefab, Vector3.zero, Quaternion.identity) as GameObject;
            go.transform.parent     = this.transform.Find("Holder/Character Unit Holder").transform;
            go.transform.localScale = Vector3.one * 10;
            Vector3 pos = Vector3.zero;
            pos.y = 36f;
            go.transform.localPosition = pos;
            go.rigidbody2D.isKinematic = true;
            go.collider2D.enabled      = false;

            switch (unit)
            {
            case CharacterProperties.UnitType.ARCHER:
            case CharacterProperties.UnitType.CANNON:
                Archer rangeObj = go.AddComponent <Archer>();
                rangeObj.characterSettings = GlobalManager.GameSettings.csObj;
                rangeObj.rank        = rankLevel;
                rangeObj.Category    = colour;
                rangeObj.UnitType    = unit;
                rangeObj.Team        = tempOwner;
                rangeObj.DisplayUnit = true;
                break;

            case CharacterProperties.UnitType.ONE_HANDED_WARRIOR:
            case CharacterProperties.UnitType.TWO_HANDED_WARRIOR:
            case CharacterProperties.UnitType.SPEAR_WARRIOR:
                Warrior meleeObj = go.AddComponent <Warrior>();
                meleeObj.characterSettings = GlobalManager.GameSettings.csObj;
                meleeObj.rank        = rankLevel;
                meleeObj.Category    = colour;
                meleeObj.UnitType    = unit;
                meleeObj.Team        = tempOwner;
                meleeObj.DisplayUnit = true;
                break;

            case CharacterProperties.UnitType.HEALER:
                Healer healerObj = go.AddComponent <Healer>();
                healerObj.characterSettings = GlobalManager.GameSettings.csObj;
                healerObj.rank        = rankLevel;
                healerObj.Category    = colour;
                healerObj.UnitType    = unit;
                healerObj.Team        = tempOwner;
                healerObj.DisplayUnit = true;
                break;
            }
        }
        else if (unit == CharacterProperties.UnitType.DRAGON)
        {
            GameObject go = Instantiate(dragonPrefab, Vector3.zero, Quaternion.identity) as GameObject;
            go.transform.parent     = this.transform.Find("Holder/Character Unit Holder").transform;
            go.transform.localScale = Vector3.one * 6;
            Vector3 pos = Vector3.zero;
            pos.y = 20f;
            go.transform.localPosition = pos;
            go.rigidbody2D.isKinematic = true;
            go.collider2D.enabled      = false;

            go.GetComponent <DragonRider>().characterSettings = GlobalManager.GameSettings.csObj;
            go.GetComponent <DragonRider>().rank        = rankLevel;
            go.GetComponent <DragonRider>().Category    = colour;
            go.GetComponent <DragonRider>().Team        = tempOwner;
            go.GetComponent <DragonRider>().DisplayUnit = true;
        }
    }
コード例 #5
0
    public void SpawnCharacter(int[] damageDeck, int cardNum, int cardLevel, CharacterProperties.UnitType unit, CharacterProperties.Team tempOwner = CharacterProperties.Team.LEFT)
    {
        Vector3 spawnPosition = tempOwner == CharacterProperties.Team.LEFT ? spawnPointLeft.transform.position : spawnPointRight.transform.position;

        CharacterProperties.CategoryColour colour = characterSettingsObj.characterProperties[cardNum].category;
        CharacterProperties.SkillType      skill  = characterSettingsObj.characterProperties[cardNum].skillType;
        int rankLevel = cardNum;

        if (unit != CharacterProperties.UnitType.DRAGON)
        {
            GameObject go = Instantiate(characterPrefab, spawnPosition, Quaternion.identity) as GameObject;
            go.transform.parent     = defenseParent.transform;
            go.transform.localScale = Vector3.one * 1000;

            switch (unit)
            {
            case CharacterProperties.UnitType.ARCHER:
            case CharacterProperties.UnitType.CANNON:
                Archer rangeObj = go.AddComponent <Archer>();
                rangeObj.characterSettings  = characterSettingsObj;
                rangeObj.skillSettings      = skillSettingsObj;
                rangeObj.indicatorPrefab    = indicatorPrefab;
                rangeObj.damageEffectPrefab = damageEffectPrefab;
                rangeObj.bonusDamageDeck    = damageDeck;
                rangeObj.unitLevel          = cardLevel;
                rangeObj.rank           = rankLevel;
                rangeObj.Category       = colour;
                rangeObj.SkillType      = skill;
                rangeObj.UnitType       = unit;
                rangeObj.Team           = tempOwner;
                rangeObj.effectSettings = skillEffects;
                break;

            case CharacterProperties.UnitType.ONE_HANDED_WARRIOR:
            case CharacterProperties.UnitType.TWO_HANDED_WARRIOR:
            case CharacterProperties.UnitType.SPEAR_WARRIOR:
                Warrior meleeObj = go.AddComponent <Warrior>();
                meleeObj.characterSettings  = characterSettingsObj;
                meleeObj.skillSettings      = skillSettingsObj;
                meleeObj.indicatorPrefab    = indicatorPrefab;
                meleeObj.damageEffectPrefab = damageEffectPrefab;
                meleeObj.bonusDamageDeck    = damageDeck;
                meleeObj.unitLevel          = cardLevel;
                meleeObj.rank           = rankLevel;
                meleeObj.Category       = colour;
                meleeObj.SkillType      = skill;
                meleeObj.UnitType       = unit;
                meleeObj.Team           = tempOwner;
                meleeObj.effectSettings = skillEffects;
                break;

            case CharacterProperties.UnitType.HEALER:
                Healer healerObj = go.AddComponent <Healer>();
                healerObj.characterSettings  = characterSettingsObj;
                healerObj.skillSettings      = skillSettingsObj;
                healerObj.indicatorPrefab    = indicatorPrefab;
                healerObj.damageEffectPrefab = damageEffectPrefab;
                healerObj.bonusDamageDeck    = damageDeck;
                healerObj.unitLevel          = cardLevel;
                healerObj.rank           = rankLevel;
                healerObj.Category       = colour;
                healerObj.SkillType      = skill;
                healerObj.UnitType       = unit;
                healerObj.Team           = tempOwner;
                healerObj.effectSettings = skillEffects;
                break;
            }
        }
        else if (unit == CharacterProperties.UnitType.DRAGON)
        {
            GameObject go = Instantiate(riderPrefab, spawnPosition, Quaternion.identity) as GameObject;
            go.transform.parent = defenseParent.transform;
            go.GetComponent <DragonRider>().characterSettings  = characterSettingsObj;
            go.GetComponent <DragonRider>().skillSettings      = skillSettingsObj;
            go.GetComponent <DragonRider>().indicatorPrefab    = indicatorPrefab;
            go.GetComponent <DragonRider>().damageEffectPrefab = damageEffectPrefab;
            go.GetComponent <DragonRider>().bonusDamageDeck    = damageDeck;
            go.GetComponent <DragonRider>().unitLevel          = cardLevel;
            go.GetComponent <DragonRider>().rank           = rankLevel;
            go.GetComponent <DragonRider>().Category       = colour;
            go.GetComponent <DragonRider>().SkillType      = skill;
            go.GetComponent <DragonRider>().Team           = tempOwner;
            go.GetComponent <DragonRider>().effectSettings = skillEffects;
        }
    }
コード例 #6
0
    public Character GetNextEnemy(CharacterProperties.Team tempPlayer, float currentPosition, CharacterProperties.AttackType tempAttackType, float tempAttackRange, CharacterProperties.UnitType tempUnitType)
    {
        if (!GlobalManager.gameover)
        {
            if (tempUnitType == CharacterProperties.UnitType.HEALER)
            {
                enemies = tempPlayer == CharacterProperties.Team.LEFT ? Character.characterLeft : Character.characterRight;
            }
            else
            {
                enemies = tempPlayer == CharacterProperties.Team.LEFT ? Character.characterRight : Character.characterLeft;
            }

            for (int i = enemies.Count - 1; i >= 0; i--)
            {
                if (enemies[i].MovementState != CharacterProperties.CharacterState.DEAD)
                {
                    float distance = tempPlayer == CharacterProperties.Team.LEFT ? enemies[i].transform.localPosition.x - currentPosition : currentPosition - enemies[i].transform.localPosition.x;
                    //Debug.Log(distance);
                    if (distance <= tempAttackRange && distance > 0)
                    {
                        //enemyTarget = enemies[i];
                        //status = "attacking";

                        bool willAttack = false;

                        Character charObj = enemies[i].gameObject.GetComponent <Character>();
                        if (charObj)
                        {
                            if (tempAttackType == CharacterProperties.AttackType.AIR && charObj.PositionType == CharacterProperties.PositionType.AIR)
                            {
                                willAttack = true;
                            }
                            else if (tempAttackType == CharacterProperties.AttackType.GROUND && charObj.PositionType == CharacterProperties.PositionType.GROUND)
                            {
                                willAttack = true;
                            }
                            else if (tempAttackType == CharacterProperties.AttackType.GROUND_AND_AIR && (charObj.PositionType == CharacterProperties.PositionType.GROUND || charObj.PositionType == CharacterProperties.PositionType.AIR))
                            {
                                willAttack = true;
                            }
                        }
                        else
                        {
                            willAttack = true;
                        }

                        if (willAttack)
                        {
                            return(enemies[i]);

                            break;
                        }
                    }
                }
            }
        }

        return(null);
    }
コード例 #7
0
    private void InitSkillButton()
    {
        string buttonName          = "";
        string spriteName          = "";
        int    limit               = 8;
        int    val                 = 0;
        int    tempReferenceNumber = 0;
        int    buttonNumber        = -1;

        CharacterProperties.CategoryColour category = CharacterProperties.CategoryColour.RED;
        CharacterProperties.UnitType       unitType = CharacterProperties.UnitType.ARCHER;
        int unitLevel = 0;

        CharacterProperties.SkillType skillType = CharacterProperties.SkillType.NONE;
        int skillLevel  = 0;
        int settingsAmt = 0;
        //int offset = 0;
        float buttonXPos = 0;

        for (int i = 0; i < skillButtonArray.Length; i++)
        {
            val = i;
            if (GlobalManager.UICard.localUserCardDeck[i] != null)
            {
                int deckValue = settingsAmt = GlobalManager.UICard.localUserCardDeck[i].cardNumber - 1;

                UIEventListener.Get(skillButtonArray[i]).onClick += ButtonHandler;

                // character deck
                if (GlobalManager.UICard.localUserCardDeck[i].cardNumber > 0)
                {
                    buttonName          = spriteName = characterSettingsPrefab.GetComponent <CharacterSettings>().characterProperties[deckValue].iconSpriteName;
                    tempReferenceNumber = i + 1;
                    category            = characterSettingsPrefab.GetComponent <CharacterSettings>().characterProperties[deckValue].category;
                    unitType            = characterSettingsPrefab.GetComponent <CharacterSettings>().characterProperties[deckValue].unitType;
                    unitLevel           = 1;
                    skillType           = characterSettingsPrefab.GetComponent <CharacterSettings>().characterProperties[deckValue].skillType;
                    skillLevel          = (int)characterSettingsPrefab.GetComponent <CharacterSettings>().characterProperties[deckValue].skillLevel;
                    settingsAmt         = deckValue;
                    buttonNumber        = i;

                    if (skillType == CharacterProperties.SkillType.FIRE_BOOST)
                    {
                        int skillIndex = (int)CharacterProperties.SkillType.FIRE_BOOST - 1;
                        bonusDamageDeck[0] += (int)skillSettings.skillProperties[skillIndex].damageBoost[skillLevel];
                        Debug.Log(bonusDamageDeck[0]);
                    }
                    else if (skillType == CharacterProperties.SkillType.WATER_BOOST)
                    {
                        int skillIndex = (int)CharacterProperties.SkillType.WATER_BOOST - 1;
                        bonusDamageDeck[1] += (int)skillSettings.skillProperties[skillIndex].damageBoost[skillLevel];
                    }
                    else if (skillType == CharacterProperties.SkillType.NATURE_BOOST)
                    {
                        int skillIndex = (int)CharacterProperties.SkillType.NATURE_BOOST - 1;
                        bonusDamageDeck[2] += (int)skillSettings.skillProperties[skillIndex].damageBoost[skillLevel];
                    }
                    else if (skillType == CharacterProperties.SkillType.GROUND_BOOST)
                    {
                        int skillIndex = (int)CharacterProperties.SkillType.GROUND_BOOST - 1;
                        bonusDamageDeck[3] += (int)skillSettings.skillProperties[skillIndex].damageBoost[skillLevel];
                    }
                    else if (skillType == CharacterProperties.SkillType.DARK_BOOST)
                    {
                        int skillIndex = (int)CharacterProperties.SkillType.DARK_BOOST - 1;
                        bonusDamageDeck[4] += (int)skillSettings.skillProperties[skillIndex].damageBoost[skillLevel];
                    }
                    else if (skillType == CharacterProperties.SkillType.LIGHT_BOOST)
                    {
                        int skillIndex = (int)CharacterProperties.SkillType.LIGHT_BOOST - 1;
                        bonusDamageDeck[5] += (int)skillSettings.skillProperties[skillIndex].damageBoost[skillLevel];
                    }

                    skillButtonArray[i].transform.Find("Background").GetComponent <UISprite>().spriteName = spriteName;
                    skillButtonArray[i].GetComponent <UIButton>().normalSprite   = spriteName;
                    skillButtonArray[i].GetComponent <UIButton>().hoverSprite    = spriteName;
                    skillButtonArray[i].GetComponent <UIButton>().pressedSprite  = spriteName;
                    skillButtonArray[i].GetComponent <UIButton>().disabledSprite = spriteName;

                    UnitButtonHandler obj = skillButtonArray[i].GetComponent <UnitButtonHandler>();
                    obj.referenceNumber = tempReferenceNumber;
                    obj.element         = category;
                    obj.unitType        = unitType;
                    obj.unitLevel       = unitLevel;
                    obj.skillType       = skillType;
                    obj.skillLevel      = skillLevel;
                    obj.buttonNumber    = buttonNumber;
                    obj.settingsReferer = settingsAmt;
                }
                else
                {
                    //skillButtonArray[i].collider.enabled = false;
                    skillButtonArray[i].GetComponent <UIButton>().isEnabled = false;
                    skillButtonArray[i].GetComponent <UnitButtonHandler>().DisableSelf();
                }
            }
        }
    }