示例#1
0
 public BombermanWalkState(IMapData mapData, TilePosition targetPosition, NewAI aiBehavior, GameObject target)
     : base(mapData, targetPosition, aiBehavior)
 {
     this.m_Target     = target;
     this.m_HPBehavior = this.m_AIBehavior.gameObject.GetComponent <KodoHPBehavior>();
     this.m_StateName  = "BombermanWalk";
 }
示例#2
0
	//private BuildingBasePropertyBehavior m_TargetProperty;
	
	public KodoWalkState(IMapData mapData, TilePosition targetPosition, NewAI aiBehavior, GameObject target) 
		: base(mapData, targetPosition, aiBehavior)
	{
		this.m_Target = target;
		this.WalkVelocity = this.CharacterAI.PropertyBehavior.MoveVelocity;
		this.m_HPBehavior = this.m_AIBehavior.gameObject.GetComponent<KodoHPBehavior>();
		//this.m_TargetProperty = this.m_Target.GetComponent<BuildingBasePropertyBehavior>();
		this.m_StateName = "KodoWalk";
	}
示例#3
0
    private void Bomb(GameObject target)
    {
        BuildingHPBehavior targetHP = target.GetComponent <BuildingHPBehavior>();

        if (targetHP != null)
        {
            targetHP.DecreaseHP(this.CharacterAI.AttackBehavior.AttackValue, this.CharacterAI.AttackBehavior.AttackCategory);
        }
        KodoHPBehavior hp = this.m_AIBehavior.GetComponent <KodoHPBehavior>();

        hp.Bomb();
    }
示例#4
0
    private void ConstructCharacter(GameObject characterPrefab, Vector3 position, BuildingCategory favoriteCategory,
                                    int hp, int armorCategory, float moveVelocity, TargetType type, float attackCD, int attackValue, float attackScope,
                                    int damageScope, float middleSpeed, int attackCategory, TargetType targetType, float pushFactor, float pushAttenuateFactor)
    {
        GameObject army = GameObject.Instantiate(characterPrefab) as GameObject;

        army.transform.position = position;
        army.transform.parent   = this.m_ParentNode;

        CharacterAI ai = army.GetComponent <CharacterAI>();

        ai.BattleMapData       = BattleMapData.Instance;
        ai.BattleSceneHelper   = this.m_SceneHelper;
        ai.FavoriteCategory    = favoriteCategory;
        ai.PushFactor          = pushFactor;
        ai.PushAttenuateFactor = pushAttenuateFactor;

        ai.SetIdle(true);

        CharacterHPBehavior hpBehavior = army.GetComponent <CharacterHPBehavior>();

        hpBehavior.TotalHP       = hp;
        hpBehavior.ArmorCategory = armorCategory;
        if (hpBehavior is KodoHPBehavior)
        {
            KodoHPBehavior kodoHP = hpBehavior as KodoHPBehavior;
            kodoHP.Factory = this;
        }

        CharacterPropertyBehavior property = army.GetComponent <CharacterPropertyBehavior>();

        property.CharacterType = CharacterType.Invader;
        property.MoveVelocity  = moveVelocity;
        property.Type          = type;

        AttackBehavior attackBehavior = army.GetComponent <AttackBehavior>();

        attackBehavior.BulletParent   = this.m_BulletParent;
        attackBehavior.AttackCD       = Mathf.FloorToInt(attackCD * ClientConfigConstants.Instance.TicksPerSecond);
        attackBehavior.AttackValue    = attackValue;
        attackBehavior.AttackScope    = attackScope;
        attackBehavior.DamageScope    = damageScope;
        attackBehavior.BulletFlySpeed = middleSpeed;
        attackBehavior.AttackCategory = attackCategory;
        attackBehavior.TargetType     = targetType;
        BattleSceneHelper.Instance.ConstructActor
            (army, PositionConvertor.GetActorTileIndexFromWorldPosition(army.transform.position));
    }
示例#5
0
    public override void AICalculate()
    {
        if (this.m_IsFindInstantly || this.m_AIBehavior.CanTakeResponse)
        {
            CharacterAI ai = (CharacterAI)this.m_AIBehavior;

            TilePosition currentPosition = PositionConvertor.GetActorTileIndexFromWorldPosition(this.m_AIBehavior.transform.position);
            if (!BattleMapData.Instance.ActorCanPass(currentPosition.Row, currentPosition.Column))
            {
                GameObject         go       = BattleMapData.Instance.GetBulidingObjectFromActorObstacleMap(currentPosition.Row, currentPosition.Column);
                BuildingHPBehavior targetHP = go.GetComponent <BuildingHPBehavior>();
                if (targetHP != null)
                {
                    CharacterAttack attack = ai.AttackBehavior;
                    targetHP.DecreaseHP(attack.AttackValue, attack.AttackCategory);
                }

                KodoHPBehavior hp = this.m_AIBehavior.GetComponent <KodoHPBehavior>();
                hp.Bomb();
            }
            else
            {
                List <GameObject> targets = BattleSceneHelper.Instance.GetBuildingsOfCategory(ai.FavoriteCategory);
                if (targets.Count > 0)
                {
                    int        i        = BattleRandomer.Instance.GetRandomNumber(0, targets.Count);
                    GameObject targetGo = targets[i];
                    BuildingBasePropertyBehavior targetProperty = targetGo.GetComponent <BuildingBasePropertyBehavior>();
                    i = BattleRandomer.Instance.GetRandomNumber(0, targetProperty.ActorObstacleList.Count);
                    TilePosition targetTile     = targetProperty.ActorPosition + targetProperty.ActorObstacleList[i];
                    Vector2      targetPosition = PositionConvertor.GetWorldPositionFromActorTileIndex(targetTile);

                    CrazyKodoWalkState walkState = new CrazyKodoWalkState(this.m_AIBehavior, targetGo, targetPosition);
                    this.m_AIBehavior.ChangeState(walkState);
                }
            }
        }
    }
    private void PreloadMercenary(MercenaryType mercenaryType)
    {
        if (!this.m_PreloadMercenaryPrefab.ContainsKey(mercenaryType))
        {
            MercenaryConfigData configData = ConfigInterface.Instance.MercenaryConfigHelper.GetMercenaryData(mercenaryType);
            string prefabPath = string.Format("{0}{1}{2}", ClientStringConstants.BATTLE_SCENE_RESOURCE_PREFAB_PREFIX_NAME,
                                              ClientStringConstants.MERCENARY_OBJECT_PREFAB_PREFIX_NAME, configData.PrefabName);
            GameObject mercenaryPrefab = Resources.Load(prefabPath) as GameObject;
            this.m_PreloadMercenaryPrefab.Add(mercenaryType, mercenaryPrefab);

            KodoHPBehavior hp = mercenaryPrefab.GetComponent <KodoHPBehavior>();
            if (hp != null)
            {
                foreach (DropArmySerializableInformation army in hp.DropArmies)
                {
                    this.PreloadArmy(army.ArmyType, army.ArmyLevel);
                }
                foreach (MercenaryType mercenary in hp.DropMercenaries)
                {
                    this.PreloadMercenary(mercenary);
                }
            }
        }
    }