상속: ScriptableObject
예제 #1
0
 void Awake()
 {
     enemyLogic = this.gameObject.GetComponent<EnemyLogic>();
     enemyData = this.gameObject.GetComponent<EnemyData>();
     playerData = GameObject.Find("Player").GetComponent<PlayerData>();
     gameStateData = GameObject.Find("GameState").GetComponent<GameStateData>();
 }
예제 #2
0
    /*
     * initialize enemy actor with enemy param
     */
    public void Initialize(EnemyData.Param p, EnemyDatabase db, ItemDatabase itemdb)
    {
        //tk2dSpriteAnimation
        m_sprite.Library = db.GetAnimationFromName(p.graphic);

        id = p.id;
        charName = p.name;
        hp = p.hpMax;
        hpMax = p.hpMax;
        hunger = 0;
        hungerMax = 0;
        agility = (float)p.agility;
        doesGetHungry = false;
        for(int i =0; i < (int)ElementType.ET_MAX; ++i) {
            ap[i] 		= (float)p.ApMax[i];
            apMax[i] 	= (float)p.ApMax[i];
            def[i] 		= (float)p.DpMax[i];
            defMax[i] 	= (float)p.DpMax[i];
        }
        canDie = true;
        race = Race.Creature;

        level = p.level;
        exp = p.exp;
        earnExp = p.earnExp;

        attackEffect = p.attackEffect;

        // TODO: item
    }
예제 #3
0
    void readEnemy()
    {
        EnemyInfo = new Dictionary<string, EnemyData>();

        TextAsset textAsset = (TextAsset)Resources.Load(GameConfig.DatabasePathEnemyInfo);
        string[] temp = textAsset.text.Split('\n');

        int lenght = temp.Length;
        for (int i = 1; i < lenght - 1; i++)
        {
            if (temp[i].Equals(""))
                break;

            EnemyData data = new EnemyData();
            string[] s = temp[i].Split(';');
            data.Name = s[1].Replace('\"', ' ').ToString().Trim();
            data.Region = s[3].Replace('\"', ' ').ToString().Trim();
            data.Branch = s[4].Replace('\"', ' ').ToString().Trim();

            data.HP = (int)float.Parse(s[5]);
            data.Speed = float.Parse(s[7]);
            data.DEF = int.Parse(s[9]);
            data.Coin = (float.Parse(s[10].ToString()) - (int)(float.Parse(s[10].ToString())) >= 0.5)
                ? (int)(float.Parse(s[10].ToString())) + 1 : (int)(float.Parse(s[10].ToString()));
            data.Level = int.Parse(s[11]);
            data.Scale = int.Parse(s[16]);
            data.EXP = int.Parse(s[17]);

            string[] tempState = s[13].Split('-');
            string[] tempTimeFrame = s[14].Split('-');
            string[] tempEvent = s[15].Split(',');

            for (int k1 = 0; k1 < tempState.Length; k1++)
            {
                AnimationEventState animationState = new AnimationEventState();
                animationState.TimeFrame = float.Parse(tempTimeFrame[k1]);

                for (int k2 = 0; k2 < tempEvent.Length; k2++)
                {
                    if (tempEvent[k2] != "")
                    {
                        string[] ss = tempEvent[k2].Split('-');
                        if (tempState[k1].Equals(ss[0]))
                        {
                            for (int k3 = 1; k3 < ss.Length; k3++)
                                animationState.listKeyEventFrame.Add(ss[k3]);

                            break;
                        }
                    }
                }
                data.States.Add(tempState[k1].ToUpper(), animationState);
            }

            EnemyInfo.Add(data.Name.ToString().Trim(), data);
        }
    }
예제 #4
0
파일: Boss.cs 프로젝트: 1001ye-qiang/RTP
 public void SetStart(EnemyData ed, BossState bs)
 {
     switch (bs)
     {
         case BossState.StartBattle:
             StartBattle(ed);
             break;
         case BossState.Lost:
             break;
         case BossState.Win:
             break;
     }
 }
예제 #5
0
 public void Init(EnemyData data, BattleController battleController, int battleID)
 {
     Name                  = data.name;
     BattleID              = battleID;
     Allegiance            = CombatantAllegiance.ENEMY;
     HP                    = data.maxHp;
     MaxHP                 = data.maxHp;
     Strength              = data.strength;
     Agility               = data.agility;
     behaviour             = EnemyBehaviours.GetBehaviour(data.behaviourIndex);
     CalmAbilities         = data.calmAbilities;
     StrifeAbilities       = data.strifeAbilities;
     this.battleController = battleController;
     ActiveAuraCasterPairs = new List <KeyValuePair <CombatantController, AuraData> >();
 }
예제 #6
0
    private void HandleMoveEditWindow(GameObject hit)
    {
        _selectedObject = hit.GetComponent <EnemyData>();

        _enemyInfoUI.SetActive(false);

        _enemyInfoUI.SetActive(true);

        var pos = new Vector3(hit.transform.position.x + _xOffset, hit.transform.position.y + _yOffset, 0f);

        pos = Canvas.transform.InverseTransformPoint(pos);
        pos = new Vector3(pos.x, pos.y, 0f);

        _enemyInfoUI.GetComponent <RectTransform>().anchoredPosition = pos;
    }
예제 #7
0
        private void SpawnEnemy(EnemyAsset asset)
        {
            EnemyView view = Object.Instantiate(asset.ViewPrefab);

            view.transform.position = new Vector3(
                m_Grid.GetStartNode().Position.x,
                view.transform.position.y,
                m_Grid.GetStartNode().Position.z);
            EnemyData data = new EnemyData(asset);

            data.AttachView(view);
            view.CreateMovementAgent(m_Grid);

            Game.Player.EnemySpawned(data);
        }
예제 #8
0
    public EnemyData UpgradeEnemy(EnemyData enemyData, int times, float percentIncrease = 100)
    {
        //EnemyData enemyData = GetEnemyDataByID(enemyID);
        EnemyData enemyDataWithUpgrade = new EnemyData();

        enemyDataWithUpgrade.EnemyID     = enemyData.EnemyID;
        enemyDataWithUpgrade.EnemyName   = enemyData.EnemyName;
        enemyDataWithUpgrade.Health      = Master.IncreaseValues(enemyData.Health, times, IncreaseStatsPerLevel.health * (percentIncrease / 100));
        enemyDataWithUpgrade.Damage      = Master.IncreaseValues(enemyData.Damage, times, IncreaseStatsPerLevel.damage * (percentIncrease / 100));
        enemyDataWithUpgrade.MoveSpeed   = Master.IncreaseValues(enemyData.MoveSpeed, times, IncreaseStatsPerLevel.moveSpeed * (percentIncrease / 100));
        enemyDataWithUpgrade.AttackSpeed = Master.IncreaseValues(enemyData.AttackSpeed, times, IncreaseStatsPerLevel.attackSpeed * (percentIncrease / 100));
        enemyDataWithUpgrade.Range       = enemyData.Range;
        enemyDataWithUpgrade.CoinDrop    = enemyData.CoinDrop;
        return(enemyDataWithUpgrade);
    }
예제 #9
0
    public EnemyView SpawnEnemy(EnemyData data, Vector3 origin, Quaternion rotation)
    {
        var es = Instantiate(enemySheet, origin, rotation, transform);

        es.SetData(data);
        es.mover.Mobilize(es.mover.transform.position, goal.position, es.enemyData.speed);

        arrangeSortingLayer.CheckandReorder();

        onSpawned.Invoke(es);

        enemies.Add(es);
        es.onDestroy.AddListener(OnEnemyDestroyed);
        return(es);
    }
예제 #10
0
    IEnumerator ScheduleEnemyDeploy(EnemyData enemyData, Vector3 posMin, Vector3 posMax, float offset)
    {
        float minTime = enemyData.MinSpawnWaitTime;
        float maxTime = enemyData.MaxSpawnWaitTime;

        if (enemyData.AffectedByDifficultyLevel)
        {
            minTime /= _difficultyLevel;
            maxTime /= _difficultyLevel;
        }

        yield return(Wait(Random.Range(minTime, maxTime)));

        DeployEnemy(enemyData.Pool.GetObject(), posMin, posMax, offset);
    }
예제 #11
0
    // Start is called before the first frame update
    private void Start()
    {
        eData      = GetComponent <EnemyData>();
        playerMask = LayerMask.GetMask("Player");
        groundMask = LayerMask.GetMask("Ground");
        animator   = GetComponent <Animator>();

        //cho phép player và entity đi xuyên qua nhau
        Physics2D.IgnoreLayerCollision(LayerMask.NameToLayer("Player"), LayerMask.NameToLayer("Entity"));
        //cho phép entity đi xuyên qua nhau
        Physics2D.IgnoreLayerCollision(LayerMask.NameToLayer("Entity"), LayerMask.NameToLayer("Entity"));

        healthCanvas         = transform.GetComponentInChildren <Canvas>();
        healthCanvas.enabled = false;
    }
예제 #12
0
파일: Enemy.cs 프로젝트: SeaPHY/phy_game01
 // EnemyData 설정, 인덱스값을 받아옴
 public void GeneratorSetUp(EnemyData enemyData, Coordinates coordinates)
 {
     power                = enemyData.dameg;
     maxHealth            = enemyData.healt;
     health               = enemyData.healt;
     attackRange          = enemyData.attackRange;
     startTurnCounter     = enemyData.turnCounter;
     firstAttack          = enemyData.firstAttack;
     escape               = enemyData.escape;
     escapeHp             = enemyData.escapeHp;
     seeRange             = enemyData.seeRange;
     this.coordinates     = coordinates;
     healthBar.fillAmount = health / maxHealth;
     shieldBar.fillAmount = 0;
 }
예제 #13
0
    private GameObject SpawnEnemy(EnemyData data)
    {
        GameObject enemyObj = Instantiate(robotPrefab);
        Vector3    position = spawnPositions[data.row].position;

        position.x = cameraBounds.activeCamera.transform.position.x + (data.offset * (cameraBounds.cameraHalfWidth + 1));
        enemyObj.transform.position = position;

        if (data.type == EnemyType.Robot)
        {
            enemyObj.GetComponent <Robot>().SetColor(data.color);
        }
        enemyObj.GetComponent <Enemy>().RegisterEnemy();
        return(enemyObj);
    }
예제 #14
0
    public IEnumerator Execute(EnemyData enemyData)
    {
        healthComponent.Init(enemyData.health);
        while (IsDead == false)
        {
            yield return(null);
        }

        animator.SetTrigger("die");
        audioSource.clip = deadClip;
        audioSource.Play();
        yield return(new WaitForSeconds(animator.GetCurrentAnimatorClipInfo(0).Length));

        yield return(StartCoroutine(meshFader.FadeOut()));
    }
        /// <summary>
        ///     This method is called as soon as the match is loaded
        /// </summary>
        public override void Run()
        {
            Console.WriteLine("Run");
            Enemy               = new EnemyData();
            _stateManagerTop    = new StateManagerScript(new SeekState(this));
            _stateManagerBottom = new StateManagerScript(new WanderState(this));

            while (true)
            {
                _stateManagerTop.FrameCheck();
                _stateManagerBottom.FrameCheck();
                Execute();
                OldEnemy = Enemy;
            }
        }
    // Start is called before the first frame update
    void Awake()
    {
        rb              = GetComponent <Rigidbody>();
        enemy           = GetComponent <Enemy>().data;
        enemyDeath      = GetComponent <EnemyDeath>();
        enemyController = GetComponent <EnemyController>();
        playerEnemy     = enemy.playerEnemy;

        player       = GameObject.FindObjectOfType <Player>();
        playerHealth = FindObjectOfType <PlayerHealth>();

        camRig = GameObject.Find("CameraRig").GetComponent <CameraRig>();

        SetNewLocation(0);
    }
예제 #17
0
    void OnTriggerStay(Collider coll)//いるとき
    {
        if (coll.tag == "NomalEnemy" || coll.tag == "AirEnemy" || coll.tag == "HideEnemy")
        {
            /*死亡処理*/
            e_data = coll.gameObject.GetComponent <EnemyData>();
            if (GameObject.Find(coll.gameObject.name) == null || e_data.Now_HP <= 0)//HPが0なら
            {
                //Debug.Log(coll.gameObject.name);
                if (coll.tag == "NomalEnemy" && colList_nomal.Contains(coll.gameObject))
                {
                    colList_nomal.Remove(coll.gameObject);
                }

                if (coll.tag == "AirEnemy" && colList_Air.Contains(coll.gameObject))
                {
                    colList_Air.Remove(coll.gameObject);
                }

                if (coll.tag == "HideEnemy" && colList_Hide.Contains(coll.gameObject))
                {
                    colList_Hide.Remove(coll.gameObject);
                }
                //OnColl = false;
            }

            else if (e_data.Now_HP > 0)//リスト追加処理
            {
                if (coll.tag == "NomalEnemy" && !colList_nomal.Contains(coll.gameObject))
                {
                    Nomal = true;
                    colList_nomal.Add(coll.gameObject);
                }

                if (coll.tag == "AirEnemy" && !colList_Air.Contains(coll.gameObject))
                {
                    Air = true;
                    colList_Air.Add(coll.gameObject);
                }

                if (coll.tag == "HideEnemy" && !colList_Hide.Contains(coll.gameObject))
                {
                    Hide = true;
                    colList_Hide.Add(coll.gameObject);
                }
            }
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (random)
        {
            RandSpawn();
        }
        else if (i < fases.Count)
        {
            infoFase = fases[i];
            if (Time.time >= nextFire)
            {
                if (j < infoFase.Count)
                {
                    actualEnemy = infoFase[j++];
                    var navenemy = (GameObject)Instantiate(
                        enemies[actualEnemy.GetEnemy()],
                        spawns[actualEnemy.GetSpawn()].position,
                        this.transform.rotation);

                    float vida    = navenemy.GetComponent <LifeEnemy>().life;
                    float minimun = vida - (vida * actualEnemy.GetLive());
                    float maximun = vida + (vida * actualEnemy.GetLive());

                    navenemy.GetComponent <LifeEnemy>().life       = (float)Random.Range(minimun, maximun);
                    navenemy.GetComponent <EnemyShoot>().fireRatio = actualEnemy.GetFireRatio();

                    nextFire = Time.time + actualEnemy.GetTime();
                }
                else if (!GameObject.Find("enemy_simple(Clone)"))
                {
                    //Aquí cambio de fase
                    Debug.Log("Cambio de fase");
                    changeStage.SetActive(true);
                    StartCoroutine(FinFase());
                    nextFire = Time.time + 7.0f;
                    i++;
                    j = 0;
                }
            }
        }
        else
        {
            Debug.Log("hemos entrado donde no debíamos");
            //Fin del nivel
            finisLevel.SetActive(true);
            StartCoroutine(FinLevel());
        }
    }
예제 #19
0
        public override void InitAppearanceData(Monster m, EnemyData data)
        {
            if (OldTemplate != null)
            {
                OldTemplate.InitAppearanceData(m, data);
            }

            bool changed = false;

            if (Animation != null)
            {
                data.SetAnimation(Animation, "prefabs/animation/" + Animation + "/", SpriteSize);
                changed = true;
            }
            else if (Sprite != null)
            {
                if (GameSession.loadExternalGraphics)
                {
                    Sprite spr = CustomGraphics.LoadSprite("monsters/" + Sprite, 500, 500);
                    if (spr != null)
                    {
                        data.SetSprite(spr, SpriteSize);
                        changed = true;
                    }
                    else
                    {
                        data.SetSprite("prefabs/entity/CustomCell/" + Sprite, SpriteSize);
                        changed = true;
                    }
                }
                else
                {
                    data.SetSprite("prefabs/entity/CustomCell/" + Sprite, SpriteSize);
                    changed = true;
                }
            }

            if (Mass > 0)
            {
                data.SetMass(Mass);
                changed = true;
            }

            if (changed)
            {
                data.UpdateCollider(name_turret);
            }
        }
예제 #20
0
    public override bool Use(Player player)
    {
        foreach (Ability effect in player.abilities)
        {
            effect.OnConsumeItem(player, this);
        }

        Vector2i  tilePos = MapManager.instance.GetMapTileAtPoint(player.Position);
        EnemyData data    = new EnemyData(tilePos.x, tilePos.y, enemyType);
        Enemy     spawn   = MapManager.instance.AddEnemyEntity(data);

        spawn.SetHostility(Hostility.Friendly);

        return(true);
        //player.Inventory.RemoveItem(index);
    }
예제 #21
0
        /// <summary>
        /// Returns all enemy data where the enemy has the given enemyID. Throws an ArgumentException if the enemy could not be found. Throws an Exception otherwise.
        /// </summary>
        /// <param name="enemyID">The ID of the enemy to find.</param>
        /// <returns></returns>
        public EnemyData GetEnemyDataByID(int enemyID)
        {
            DataTable table = ReadQuery("GetEnemyByID @enemyID", new DALParameters(enemyID, "@enemyID"));

            if (table.Rows.Count > 0)
            {
                int       creatorID    = (int)table.Rows[0]["UserID"];
                int       difficulty   = (int)table.Rows[0]["Difficulty"];
                string    name         = (string)table.Rows[0]["Name"];
                EnemyData returnStruct = new EnemyData(creatorID, difficulty, enemyID, name);

                return(returnStruct);
            }

            throw new ArgumentException("An enemy with the given ID (" + enemyID + ") does not exist.");
        }
예제 #22
0
    public void SummonEnemy()
    {
        if (enemyName != "" && roadName != "")
        {
            EnemyData ed = EnemyDataManage.getInstance().GetEnemyData(enemyName);
            if (gc.playerMoney >= ed.cost)
            {
                GameObject enemy = ObjectPool.getInstance().GetObj("Enemy", enemyName);
                enemy.GetComponent <NavMeshAgent>().Warp(EnemyStartPoint.transform.localPosition);
                enemy.transform.parent = EnemyStartPoint.transform;
                enemy.GetComponent <Enemy>().InitData(ed, roadName);

                gc.ReduceMoney(ed.cost);
            }
        }
    }
예제 #23
0
    public EnemyData UpgradeEnemy(string enemyID, int times)
    {
        EnemyData enemyData            = GetEnemyDataByID(enemyID);
        EnemyData enemyDataWithUpgrade = new EnemyData();

        enemyDataWithUpgrade.EnemyID   = enemyData.EnemyID;
        enemyDataWithUpgrade.EnemyName = enemyData.EnemyName;
        enemyDataWithUpgrade.Health    = Master.IncreaseValues(enemyData.Health, times, IncreaseStatsPerLevel.health);
        enemyDataWithUpgrade.Damage    = Master.IncreaseValues(enemyData.Damage, times, IncreaseStatsPerLevel.damage);
        enemyDataWithUpgrade.MoveSpeed = Master.IncreaseValues(enemyData.MoveSpeed, times, IncreaseStatsPerLevel.moveSpeed);
        //enemyDataWithUpgrade.MoveSpeed = enemyData.MoveSpeed;
        enemyDataWithUpgrade.AttackSpeed = Master.IncreaseValues(enemyData.AttackSpeed, times, IncreaseStatsPerLevel.attackSpeed);
        enemyDataWithUpgrade.Range       = enemyData.Range;
        enemyDataWithUpgrade.CoinDrop    = enemyData.CoinDrop;
        return(enemyDataWithUpgrade);
    }
        private void EnemyCollision(ref EnemyData _enemyData, Translation _targetPos, ref Translation _bulletPos, ref RenderBounds _bounds, ref BulletData _bullet)
        {
            float3 bound = _bounds.Value.Extents;

            if (_bulletPos.Value.x - bound.x <= _targetPos.Value.x && _targetPos.Value.x <= _bulletPos.Value.x + bound.x &&
                _bulletPos.Value.y - bound.y <= _targetPos.Value.y && _targetPos.Value.y <= _bulletPos.Value.y + bound.y &&
                _bulletPos.Value.z - bound.z <= _targetPos.Value.z && _targetPos.Value.z <= _bulletPos.Value.z + bound.z)
            {
                // バレットを消すように見せかける
                Debug.Log($"EnemyHit\nRange ({_bulletPos.Value.x -bound.x}, {_bulletPos.Value.x +bound.x})\n({_bulletPos.Value.y -bound.y}, {_bulletPos.Value.y +bound.y})\n({_bulletPos.Value.z -bound.z}, {_bulletPos.Value.z +bound.z})\n");
                _bulletPos.Value.x = GameConst.SCREEN_WIDTH;
                _bulletPos.Value.z = GameConst.SCREEN_HEIGHT;
                _enemyData.HP     -= _bullet.Damage;
                _bullet.IsCollide  = true;
            }
        }
예제 #25
0
    public EnemyData GetEnemyData(uint id)
    {
        if (id == 0 || enemyTable == null)
        {
            return(null);
        }
        EnemyData enemyData = enemyTable.Get(id);

        if (enemyData == null)
        {
            Log.TableError(this, id);
            enemyData      = new EnemyData();
            enemyData.name = Log.NON_DATA_NAME;
        }
        return(enemyData);
    }
예제 #26
0
    void OnGUI()
    {
        GUI.Label(new Rect(20, 20, 300, 50), "Enemies");
        for (int i = 0; i < m_gameData.m_enemies.Count; i++)
        {
            EnemyData enemy = m_gameData.m_enemies[i];
            GUI.Label(new Rect(40, 60 + i * 60, 300, 50), enemy.ToString());
        }

        GUI.Label(new Rect(420, 20, 300, 50), "Items");
        for (int i = 0; i < m_gameData.m_items.Count; i++)
        {
            ItemData item = m_gameData.m_items[i];
            GUI.Label(new Rect(440, 60 + i * 60, 300, 50), item.ToString());
        }
    }
예제 #27
0
        public void Activate()
        {
            // 一定間隔ごとに生成していくだけ
            var createTime = TimeSpan.FromSeconds(this._enemySettings.GenerateInterval);

            this._createDisposable = Observable.Interval(createTime).Subscribe(_ =>
            {
                var pointIndex = UnityRandom.Range(0, this._spawnPoints.Length);
                Vector2 point  = this._spawnPoints[pointIndex];
                var enemyID    = UnityRandom.Range(0, this._maxEnemyID);
                var enemyData  = new EnemyData {
                    EnemyID = (EnemyID)enemyID, SpawnPoint = (SpawnPoint)pointIndex
                };
                this._ecsBoostrap.CreateEnemy(point, enemyData);
            });
        }
예제 #28
0
 void Start()
 {
     healthData = GetComponent <Health>();
     enemyData  = GetComponent <EnemyData>();
     moverData  = GetComponent <MoverData>();
     Vector3[] randomPath = GetRandomPath();
     if (randomPath == null)
     {
         return;
     }
     transform.position = randomPath[0];
     iTween.MoveTo(gameObject, iTween.Hash("path", randomPath, "speed", moverData.speed,
                                           "easetype", iTween.EaseType.linear, "oncomplete", "OnComplete"));
     enemyData.tweenInfo.tween     = GetComponent <iTween>();
     enemyData.tweenInfo.startTime = Time.time;
 }
        public void Create(LevelConfig levelConfig)
        {
            Reset();
            foreach (var configEnemyInfo in levelConfig.enemyInfos)
            {
                var enemyData        = new EnemyData(configEnemyInfo.enemyConfig);
                var spawnCoordinates = new Vector3(configEnemyInfo.startPosition.x, 0, configEnemyInfo.startPosition.y);

                signalBus.Fire(new SpawnEnemiesSignal(enemyData, spawnCoordinates));

                enemyData.IsDead.Where(isDead => isDead == true)
                .Subscribe(_ => { OnDestroyEnemy(enemyData); });

                enemies.Add(enemyData);
            }
        }
예제 #30
0
    //初期化
    public void Init()
    {
        if (enemyManager != null)
        {
            EnemyData data = enemyManager.FindData(enemy);
            bodyRenderer.material.color = data.imageColor;
            crown.SetActive(data.IsCrown);

            if (data.IsDead)
            {
                this.GetComponent <Animator>().Play("Down");
                this.GetComponent <Collider>().enabled = false;
            }
            this.gameObject.SetActive(data.IsOpen);
        }
    }
예제 #31
0
    public void Init_Server(EnemyData data)
    {
        if (entity.IsOwner())
        {
            _data        = data;
            state.Health = data.health;
            _health      = new SKU.ResourceAttribute(_data.health, _data.health, 1, 0.5f);
            _health.AddOnValueChangedListener(UpdateHealth_Server);

            AttributeManager attributeManager = gameObject.AddComponent <AttributeManager>();
            attributeManager.Add(AttributeType.Health, _health);

            var movement = gameObject.AddComponent <EnemyMovement>();
            movement.Init_Server(_data.speed);
        }
    }
	public void initAttackObjects ( EnemyComponent.HandleAttackExecuted callBackWhenAttackExecuted, EnemyData enemyAttacked, CharacterData attackingCharacter = null )
	{
		_callBackWhenAttackExecuted = callBackWhenAttackExecuted;
		_enemyAttacked = enemyAttacked;
		_characterAttacking = attackingCharacter;
		_startProgressBar = true;
		
		if ((( GameGlobalVariables.CURRENT_GAME_PART == GameGlobalVariables.RESCUE && GlobalVariables.TUTORIAL_MENU ) ||  GameGlobalVariables.CURRENT_GAME_PART == GameGlobalVariables.MINING && MNGlobalVariables.TUTORIAL_MENU ) /*====Daves Edit=====*/&& (LevelControl.LEVEL_ID == 2)/*====Daves Edit=====*/ &&( TutorialsManager.getInstance ().getCurrentTutorialStep ().type != TutorialsManager.TUTORIAL_OBJECT_TYPE_DESTROY_OBJECTS ))
		{
			if ( LevelControl.LEVEL_ID != 16 )
			{
				_tutorialHandInstant = ( GameObject ) Instantiate ( _tutorialHandPrefab, transform.position + Vector3.right * 1f + Vector3.up * 1f + Vector3.back * 2f, transform.rotation );
				_tutorialHandInstant.transform.parent = transform;
			}
		}
	}
예제 #33
0
    public void SetEnemySpawnProbability(EnemyData _enemy, float _newProbability)
    {
        if (currentEnemies.Count <= 1)
        {
            return;
        }
        float i_difference = 0f;
        float i_otherTotal = 0;

        foreach (WaveEnemy wep in currentEnemies)
        {
            if (_enemy.name == wep.enemyType.name)
            {
                i_difference    = _newProbability - wep.probability;
                wep.probability = _newProbability;
            }
            else
            {
                i_otherTotal += wep.probability;
            }
        }

        //Reduce or improve all the other probabilities (So it keep a maximum of 1)
        foreach (WaveEnemy wep in currentEnemies)
        {
            if (_enemy.name != wep.enemyType.name)
            {
                if (i_difference > 0)
                {
                    if (i_otherTotal != 0)
                    {
                        float force = wep.probability / i_otherTotal;
                        wep.probability -= force * i_difference;
                    }
                }
                else
                {
                    if ((float)(currentEnemies.Count - 1) - i_otherTotal != 0)
                    {
                        float force = (1f - wep.probability) / ((float)(currentEnemies.Count - 1) - i_otherTotal);
                        wep.probability -= force * i_difference;
                    }
                }
            }
            wep.probability = Mathf.Clamp(wep.probability, 0f, 1f);
        }
    }
예제 #34
0
    void RefreshWithGlobalControls()
    {
        _player.transform.position = GlobalControl.Instance.playerData.currentPlayerPosition;

        for (int index = 0; index < GlobalControl.Instance.enemyData.Length; index++)
        {
            EnemyData  enemyData     = GlobalControl.Instance.enemyData [index];
            GameObject enemy         = enemies [index];
            Enemy      enemyBehavior = enemy.GetComponent <Enemy> ();

            // is a moving Enemy
            if (!enemyBehavior)
            {
                Transform childEnemy = enemy.transform.GetChild(0);
                enemyBehavior            = childEnemy.gameObject.GetComponent <Enemy> ();
                childEnemy.position      = enemyData.childPosition;
                enemy.transform.position = enemyData.currentPosition;
            }
            else
            {
                enemy.transform.position = enemyData.currentPosition;
            }

            if (enemyData.isStunned)
            {
                enemyBehavior.Stunned();
            }

            /*	if (enemyData.movingPlatformIndex >= 0) {
             *      SetObjectToChildOfPlatform (enemy, platforms [enemyData.movingPlatformIndex]);
             * } */
        }

        for (int index = 0; index < GlobalControl.Instance.coinData.Length; index++)
        {
            CoinData   coinData = GlobalControl.Instance.coinData [index];
            GameObject coin     = coins [index];
            coin.SetActive(coinData.doesExist);
        }

        for (int index = 0; index < GlobalControl.Instance.platformsData.Length; index++)
        {
            MovingPlatformData platformData = GlobalControl.Instance.platformsData [index];
            GameObject         platform     = platforms [index];
            platform.transform.position = platformData.currentPosition;
        }
    }
예제 #35
0
    public void UpdateGlobalControls()
    {
        GlobalControl.Instance.playerData.movingPlatformIndex   = IndexOfMovingPlatform(_player);
        GlobalControl.Instance.playerData.currentPlayerPosition = _player.transform.position;

        for (int index = 0; index < enemies.Length; index++)
        {
            EnemyData  enemyData     = GlobalControl.Instance.enemyData [index];
            GameObject enemy         = enemies [index];
            Enemy      enemyBehavior = enemy.GetComponent <Enemy> ();

            // is a moving Enemy
            if (!enemyBehavior)
            {
                Transform childEnemy = enemy.transform.GetChild(0);
                enemyBehavior = childEnemy.gameObject.GetComponent <Enemy> ();

                enemyData.isStunned       = enemyBehavior.isStunned;
                enemyData.childPosition   = childEnemy.position;
                enemyData.currentPosition = enemy.transform.position;
                enemyData.isMovingEnemy   = true;
            }
            else
            {
                enemyData.isStunned       = enemyBehavior.isStunned;
                enemyData.currentPosition = enemy.transform.position;
                enemyData.isMovingEnemy   = false;
            }
        }

        for (int index = 0; index < coins.Length; index++)
        {
            CoinData   coinData = GlobalControl.Instance.coinData [index];
            GameObject coin     = coins [index];
            coinData.doesExist = coin.activeSelf;
        }

        for (int index = 0; index < platforms.Length; index++)
        {
            GameObject         platform     = platforms [index];
            MovingPlatformData platformData = GlobalControl.Instance.platformsData [index];
            platformData.currentPosition = platform.transform.position;

            PlatformMover platformMover = platform.GetComponent <PlatformMover> ();
            platformMover.myWaypointIndex = platformData.waypointIndex;
        }
    }
예제 #36
0
파일: Boss.cs 프로젝트: 1001ye-qiang/RTP
    IEnumerator BulletsPump(EnemyData ed)
    {
        if (ed.iBulCount <= 0) yield break;
        List<GameObject> lstBu = new List<GameObject>();
        Transform buTrans = transform.Find("bullet1");
        lstBu.Add(buTrans.gameObject);
        buTrans = transform.Find("bullet2");
        lstBu.Add(buTrans.gameObject);

        float maxBiTime = 0;
        while(true) // 必须一方死
        //foreach(BulletItem item in ed.bullets)
        {
            BulletItem item = ed.bullets[Random.Range(0, ed.bullets.Count)];
            GameObject obj = null;
            if (item.bCanRebound)
                obj = lstBu[0];
            else
                obj = lstBu[1];

            GameObject tmp = GameObject.Instantiate(obj) as GameObject;
            tmp.transform.parent = transform.parent.Find("Bullets");
            tmp.transform.localScale = Vector3.one;
            tmp.transform.localRotation = Quaternion.identity;
            tmp.transform.position = obj.transform.position;
            tmp.SetActive(true);
            tmp.name = "bullet";

            GUIItem gi = tmp.AddComponent<GUIItem>();
            gi.GameProperty = item;
            
            float dst = tmp.transform.localPosition.y - 640f;
            float time = 640f / item.speed;

            EndDestory end = tmp.AddComponent<EndDestory>();
            TweenPosition tp = TweenPosition.Begin(tmp, time, new Vector3(tmp.transform.localPosition.x, dst, 0));
            tp.SetOnFinished(end.OnFinish);

            if (time > maxBiTime)
            {
                maxBiTime = time;
            }
            yield return new WaitForSeconds(ed.interval);
        }
        //yield return new WaitForSeconds(maxBiTime - ed.interval);
        //BattleManager.Inst.IsOver(true);
    }
예제 #37
0
	public List<EnemyData> QueryEnemyDataList(){
		SQLiteDB sqliteDB = OpenDatabase ();
		string sql = "select * from " + ENEMY_DATA_LIST_TABLE +  ";";
		Debug.Log("sql = "+ sql);
		SQLiteQuery sqliteQuery = new SQLiteQuery (sqliteDB, sql);
		List<EnemyData> enemyDataList = new List<EnemyData>();
		while(sqliteQuery.Step()){
			EnemyData enemyData = new EnemyData ();
			enemyData.Id = sqliteQuery.GetInteger (EnemyDataField.ID);
			enemyData.Name = sqliteQuery.GetString (EnemyDataField.NAME);
			enemyData.Description = sqliteQuery.GetString (EnemyDataField.DESCRIPTION);
			enemyData.Atack = sqliteQuery.GetInteger (EnemyDataField.ATACK);
			enemyDataList.Add(enemyData);
		}
		CloseDatabase(sqliteDB,sqliteQuery);
		return enemyDataList;
	}
예제 #38
0
    // 敵人設置
    void SetEnemyData(string stageName, int hard) {
        // 該關卡擁有敵人取得
        List < string > haveEnemy = db.DataReturn("StageData", "StageName", stageName);
        haveEnemy.RemoveAt(0);

        // 敵人資料
        List<string>[] enemy = db.DataReturn("EnemyData", "Name", haveEnemy.ToArray());

        EnemyData[] enemyData = new EnemyData[enemy.Length];

        for (int i = 0; i < enemy.Length; i++) {
            enemy[i][0] = "" + hard;
            enemyData[i] = new EnemyData(enemy[i]);

            enemyData[i].SetSkillData 
                = db.DataReturn("SkillData", "Name", enemyData[i].skillName);
        }
            
        // 資料傳送
        BattleUI._Initialze().SetEnemyData = enemyData;
    }
예제 #39
0
    public void Init(int enemyID)
    {
        data = DataManager.Instance.GetEnemyDataSet ().GetEnemyData (enemyID).Clone();
        enemyData = data as EnemyData;
        isEnemy = true;

        UIEvent = this.GetComponent<BattleObjectUIEvent>();
        UIEvent.Init(enemyData.imageID);
        UIEvent.InitEnemyHPBar(maxHP, data.battleType);
        currentHP = maxHP;

        AI = this.GetComponent<EnemyAI>();
        AI.InitAI(enemyData.aiID);

        for(int i = 0; i < data.bornBuffs.Count; i++)
        {
            AddBuff(data.bornBuffs[i], -1);//添加固有BUFF
        }
        SkillHelper.CheckWeaponBuff(this);

        MessageEventArgs args = new MessageEventArgs();
        args.AddMessage("Object", this);
        EventManager.Instance.PostEvent(BattleEvent.OnEnemySpawn, args);
    }
예제 #40
0
	public void Add(EnemyData enemy){
		database.Add(enemy);
	}
예제 #41
0
	void SetEnemyData (EnemyData enemyData) {
		mEnemyData = enemyData;
	}
예제 #42
0
 void Start()
 {
     tf = GetComponent<Transform>();
     data = GetComponent<EnemyData>();
     movingLeft = true;
 }
예제 #43
0
    void Awake()
    {
        var text = File.ReadAllText(Application.dataPath + RESOURCE_PATH + JSON_PATH);

        JsonNode json = JsonNode.Parse(text);
        var enemies = json["Enemies"];

        Dictionary<int, Attribute> enemy_attribute_table = new Dictionary<int, Attribute>();
        enemy_attribute_table.Add(0, Attribute.ANIME);
        enemy_attribute_table.Add(1, Attribute.IDOL);
        enemy_attribute_table.Add(2, Attribute.GAME);
        enemy_attribute_table.Add(3, Attribute.VOCALOID);
        enemy_attribute_table.Add(4, Attribute.ROBOT);

        for (var i = 0; i < enemies.Count; ++i)
        {
            EnemyData enemy_data = new EnemyData();
            var enemy = enemies[i];
            enemy_data._name = enemy["Name"].Get<string>();
            enemy_data._id = (int)enemy["ID"].Get<long>();
            enemy_data._hp = (int)enemy["HP"].Get<long>();
            enemy_data._attacK_power = (float)enemy["AttackPower"].Get<double>();
            enemy_data._attack_speed = (float)enemy["AttackSpeed"].Get<double>();
            enemy_data._interval_pop_time = (float)enemy["IntervalPopTime"].Get<double>();

            var enemy_attribute_num = (int)enemy["Attribute"].Get<long>();
            enemy_data._attribute = enemy_attribute_table[enemy_attribute_num];

            _enemy_table.Add(enemy_data._name.GetHashCode(), enemy_data);
            _enemy_name_table.Add(enemy_data._id, enemy_data._name);
        }
    }
예제 #44
0
    void itemInit()
    {
        _hero.iBood = 5;
        _hero.iMoveSpeed = 210f;

        _data.jqName = "level1JQ";

        FruitData fd = new FruitData();
        fd.name = "order1";
        fd.interval = 0.4f;
        fd.minGet = 7;
        FruitItem fi = new FruitItem();
        fi.name = "fruit1";
        fi.weight = 1;
        fi.speed = 100;
        for(int i = 0; i < 11; ++i)
            fd.fruits.Add(fi);

        _data.fruit = fd;

        EnemyData ed = new EnemyData();
        ed.iBoold = 8;
        ed.moveSpeed = 160;
        ed.interval = 1f;
        ed.iBulCount = 12;
        for (int i = 0; i < ed.iBulCount; ++i)
        {
            BulletItem bd = new BulletItem();
            int range = Random.Range(0, 2);
            bd.bCanRebound = range == 0 ? false : true;
            bd.weight = 1;
            bd.speed = 100;
            ed.bullets.Add(bd);
        }

        _data.enemy = ed;

    }
예제 #45
0
	private void InsertHistoryData(EnemyData enemyData){

	}
예제 #46
0
파일: Boss.cs 프로젝트: 1001ye-qiang/RTP
 void StartBattle(EnemyData ed)
 {
     StartCoroutine(AdjustMove(ed.moveSpeed));
     StartCoroutine(BulletsPump(ed));
 }
예제 #47
0
            public Controler01(EnemyData edt, bool _left = false)
            {
                showleft = _left;
                enemydata = edt;
                enemydata.Speed = 100;
                direction = enemydata.Direction;
                position = enemydata.Position;
                direction.X = 0;
                direction.Y = -1;

                TCset speeddown = new TCset(0, 120);              //0-120帧行走直线切弧线行走(速度逐渐衰减)
                speeddown.Name = "speeddown";
                commands.Add(speeddown);
                TCset rotate01 = new TCset(60, 120);              //弧线所需的角度变换
                rotate01.Name = "rotate01";
                commands.Add(rotate01);
                TCset speedup01 = new TCset(150, 210, "speedup01");            //停顿30帧后进入加速阶段
                commands.Add(speedup01);
                TCset rotate02 = new TCset(180, 280, "rotate02");             //反向弧度旋转,最终呈正向运动
                rotate02.Name = "rotate02";
                commands.Add(rotate02);
            }
예제 #48
0
	public void Remove(EnemyData enemy){
		database.Remove (enemy);
		
	}
예제 #49
0
            Particle.BreakPointsParticles breakParticle; //击破后的溅射粒子

            public Enemy02_2(TextureManager _texturemanager, float x, float y, bool _turnleft = false)
            {
                name = "Stage1Enemy02_2";
                texturemanager = _texturemanager;
                Position.X = x; Position.Y = y;
                enemybody = new DarkBlueLittleSprite(texturemanager);   //皮肤选择为DarkBlueLittleSprite
                enemybody.multiSprite.State = 0;                        //一开始先重置为一般状态
                hp = 1500;
                enemydata = new EnemyData(Position, Direction, Scale, 100);    //建立一个敌人数据,用于传递给行为控制器使用
                turnleft = _turnleft;

                /////添加控制器处//////
                controler = new Stage1.Controler02_02(enemydata,_turnleft);       //建立一个专属的行为控制器
                renderlevel = 0;                                 //在敌人列表中置于最底层
                /////添加动画爆炸处////
                Break_ani = new BreakOut_Blue(_texturemanager, Position, 20, 16, 64);       //爆炸动画
                breakParticle = new Particle.BreakPointsParticles(_texturemanager, 0);   //溅射粒子
                breakParticle.EnableVisibleLenth(true, 5);

                TCset fire01 = new TCset(1, 51);              //200-500帧第一阶段释放子弹
                fire01.Name = "fire01";
                commands.Add(fire01);
            }
예제 #50
0
    void Start()
    {
        mCharacter = 		(CharacterController)GetComponent<CharacterController>();
        mSprite = 			(exSprite)GetComponent<exSprite>();
        mSelectedSkills = 	new List<Skill>();
        mEnemy = 			new EnemyData(1, mSelectedSkills);
        mCombatantType = 	CombatantType.ENEMY;
        mMoveVelocity = 	new Vector3(0,0,0);
        mHealth = 			mEnemy.MaxHealth;
        mEnergy = 			mEnemy.MaxEnergy;
        mXViewRange = 		700.0f;
        mYViewRange = 		300.0f;
        mCurrentSkill = 	0;
        mIsDead = 			false;
        mIsHostile = 		false;
        mIsWandering = 		false;
        mIsIdle = 			true;
        mIsAirborne = 		true;

        if (mPath.Count > 1) {
            mNextNode = 1;
        } else {
            mNextNode = 0;
        }

        Skill icepick = new Skill(1, "Icepick", "Description", 20.0f, this, 1.5f, 0.5f, 0.3f, 3.0f, 1.0f, "Icepick");
        mSelectedSkills.Add(icepick);
        gameObject.AddComponent("EnemyAI");
    }
예제 #51
0
            private void Load(XmlElement xElement)
            {
                if (xElement == null) return;
                if (xElement.Name != StateData.c_root) return;
                if (!xElement.HasChildNodes) return;
                if (this.m_enemys == null) this.m_enemys = new List<EnemyData>();

                XmlElement canvas = null;
                XmlElement enemys = null;

                foreach (XmlNode child in xElement.ChildNodes)
                {
                    if (child.Name == "canvas")
                    {
                        if (canvas == null) canvas = (XmlElement)child;
                    }
                    else if (child.Name == "enemy")
                    {
                        if (enemys == null) enemys = (XmlElement)child;
                    }
                }

                if (canvas != null) this.m_canvas = new CanvasData(canvas);

                if (enemys != null)
                {
                    string sTank = "";
                    string sBonus = "";
                    string sType = "";

                    foreach (XmlNode enemyChild in enemys.ChildNodes)
                    {
                        if (enemyChild.Name == "tank")
                        {
                            sTank = enemyChild.InnerText;
                        }
                        else if (enemyChild.Name == "bonus")
                        {
                            sBonus = enemyChild.InnerText;
                        }
                        else if (enemyChild.Name == "type")
                        {
                            sType = enemyChild.InnerText;
                        }
                    }

                    short[] iTank = this.GetValueList(sTank);
                    short[] iBonus = this.GetValueList(sBonus);
                    short[] iType = this.GetValueList(sType);

                    if (iTank != null)
                    {
                        for (int i = 0; i < iTank.Length; i++)
                        {
                            short num1 = 0;
                            short num2 = 0;
                            if ((iBonus != null) && (iBonus.Length > i))
                            {
                                num1 = iBonus[i];
                            }

                            if ((iType != null) && (iType.Length > i))
                            {
                                num2 = iType[i];
                            }

                            EnemyData data = new EnemyData(iTank[i], num1, num2);
                            this.m_enemys.Add(data);
                        }
                    }
                }
            }
예제 #52
0
    private void generateEnemyData()
    {
        //use basic data to generate the enemy datas
        System.Array.Resize<int>(ref enemyNumbers, enemyWave);
        for (int i = 0; i < enemyWave; i++)
        {
            //factor from the animation curve
            float factor = wave_number.Evaluate((float)i / enemyWave);
            float enemyNumber = factor * maxNumberPerWave;
            // random ajust use 20 persent
            enemyNumbers[i] = (int)(enemyNumber*(1+(Random.value-0.50f)*0.20f));
        }
        //create a jaggedArray for enemydatas and initialize
        EnemyData[][] enemyCollection = new EnemyData[enemyWave][];
        for (int i = 0; i < enemyWave; i++)
        {//initial the jagged data
            enemyCollection[i] = new EnemyData[enemyNumbers[i]];
        }

        for (int i = 0; i < enemyWave; i++)
        {
            for (int j = 0; j < enemyNumbers[i]; j++)
            {
                //create the data
                 int maxHp =(int) (enemyBasicHp*(1+(Random.value-0.50f)*0.1f));
                 int attackPt = (int)(enemyBasicAp* (int)(1+(Random.value-0.50f)*0.1f));
                 float attackTime = enemyBasicAttackTime*(1.0f+(Random.value-0.50f)*0.1f);
                //put enemydata into datas
                 enemyCollection[i][j] = new EnemyData(maxHp, attackPt, attackTime);
            }
        }
        this.enemyDatas = enemyCollection;//update the enemy collections
    }
예제 #53
0
	public void SetData(EnemyData eData){
		m_eData = eData;
	}
예제 #54
0
            public Controler03(EnemyData edt, bool _left = false)
            {
                showleft = _left;
                enemydata = edt;
                enemydata.Speed = 150;
                direction = enemydata.Direction;
                position = enemydata.Position;
                if (_left)
                {
                    position.X = -200;
                    position.Y = 350;
                    direction.X = 1;
                    direction.Y = 0;
                }
                else
                {
                    position.X = 200;
                    position.Y = 350;
                    direction.X = -1;
                    direction.Y = 0;
                }

                commands.Add(new TCset(20, 120, "speeddown"));    //减速
                commands.Add(new TCset(0, 120, "rotate1"));      //1阶段旋转[旋转至转轴点]
                commands.Add(new TCset(121, 121, "rotate2"));    //2阶段旋转[一次性固定旋转],两次旋转呈勾状运动
                commands.Add(new TCset(122, 150, "speedup"));    //旋转完成后进入加速(弹射效果)
            }
예제 #55
0
    /*
    ============================================================================
    Init functions
    ============================================================================
    */
    public void Init()
    {
        // first init languages
        languages = new LanguageData();

        statusValues = new  StatusValueData();
        elements = new  ElementData();
        races = new RaceData();
        sizes = new SizeData();
        areaNames = new AreaNameData();
        armors = new ArmorData();
        cameraPositions = new  CameraPositionData();
        attacks = new BaseAttackData();
        characters = new  CharacterData();
        classes = new  ClassData();
        colors = new  ColorData();
        dialoguePositions = new  DialoguePositionData();
        battleAIs = new  BattleAIData();
        enemies = new  EnemyData();
        equipParts = new  EquipmentPartData();
        formulas = new  FormulaData();
        gameSettings = new  GameSettingsData();
        items = new  ItemData();
        itemTypes = new  ItemTypeData();
        loadSaveHUD = new LoadSaveHUDData();
        mainMenu = new MainMenuData();
        skillTypes = new  SkillTypeData();
        effects = new  StatusEffectData();
        skills = new  SkillData();
        weapons = new  WeaponData();
        music = new MusicData();
        huds = new HUDData();
        recipes = new ItemRecipeData();
        fonts = new FontData();
        globalEvents = new GlobalEventData();
        teleports = new TeleportData();
        difficulties = new DifficultyData();

        // battle system
        battleAnimations = new BattleAnimationData();
        battleSystem = new BattleSystemData();
    }
예제 #56
0
            public Controler02_02(EnemyData edt, bool _left = false)
            {
                showleft = _left;
                enemydata = edt;
                enemydata.Speed = 150;
                direction = enemydata.Direction;
                position = enemydata.Position;
                //此控制器中控制运动轨迹的是额外的Direction,而非原组件(原组件的direction用来控制自身旋转等操作)
                if (_left)
                {
                    position.X = -200;
                    position.Y = 350;
                    direction.X = 1;
                    direction.Y = 0;
                }
                else
                {
                    position.X = 200;
                    position.Y = 350;
                    direction.X = -1;
                    direction.Y = 0;
                }

                TCset rotate1 = new TCset(0, 130,"rotate1");
                commands.Add(rotate1);
            }
        public void Reload()
        {
            var obj = this.filePath.Deserialize<EnemyData>();
            this.EnemyData = obj.ValueOrNew();

            if (this.RemoveDuplicate())
                this.Save();
        }
예제 #58
0
            List<TCset> commands = new List<TCset>(); //命令列表

            public Controler03_02(EnemyData edt)
            {
                enemydata = edt;
                enemydata.Speed = 100;
                direction = enemydata.Direction;
                position = enemydata.Position;
                direction.X = 0;
                direction.Y = -1;

                TCset speeddown = new TCset(60, 160, "speeddown");              //速度逐渐衰减
                speeddown.Name = "speeddown";
                commands.Add(speeddown);
                TCset speedup01 = new TCset(480, 600, "speedup");            //进入加速阶段
                commands.Add(speedup01);
            }