Ejemplo n.º 1
0
        /// <summary>
        /// �Ƴ�����
        /// </summary>
        /// <param name="sender"></param>
        void spriteMoveFinished(object sender)
        {
            CCSprite sprite = (CCSprite)sender;
            if (sprite.tag == 1)
            {
                _targets.Remove(sprite);
                life--;
                string msg = string.Format("Count:{0},life:{1},Level:{2}", projectilesDestroyed, life, level.level);
                notic.setString(msg);
                if (life <= 0)
                {
                    GameOverScene pScene = new GameOverScene(false);
                    CCDirector.sharedDirector().replaceScene(pScene);

                }
            }
            else if (sprite.tag == 2)
            {
                _projectiles.Remove(sprite);
            }
            this.removeChild(sprite, true);
        }
Ejemplo n.º 2
0
        public void updates(float dt)
        {
            List<CCSprite> projectilesToDelete = new List<CCSprite>();
            List<CCSprite> targetToDelete = new List<CCSprite>();

            for (int i = 0; i < _projectiles.Count; i++)
            {
                CCSprite projectile = _projectiles[i];
                CCRect projectileRect = new CCRect(
                    projectile.position.x - projectile.contentSize.width / 2,
                    projectile.position.y - projectile.contentSize.height / 2,
                    projectile.contentSize.width,
                    projectile.contentSize.height);
                bool monsterHit = false;
                foreach (CCSprite target in _targets)
                {
                    CCRect targetRect = new CCRect(
                        target.position.x - target.contentSize.width / 2,
                        target.position.y - target.contentSize.height / 2,
                        target.contentSize.width,
                        target.contentSize.height);
                    if (CCRect.CCRectIntersetsRect(projectileRect, targetRect))
                    {
                        monsterHit = true;
                        Monster monster = (Monster)target;
                        monster.hp--;
                        if (monster.hp <= 0)
                        {
                            targetToDelete.Add(target);
                        }
                        break;
                    }
                }
                foreach (CCSprite target in targetToDelete)
                {
                    _targets.Remove(target);
                    projectilesDestroyed++;
                    string msg = String.Format("Count:{0},life:{1},Level:{2}", projectilesDestroyed, life, level.level);
                    notic.setString(msg);
                    if (projectilesDestroyed >= level.levelCount)
                    {
                        GameOverScene pScene = new GameOverScene(true);
                        CCDirector.sharedDirector().replaceScene(pScene);
                    }
                    this.removeChild(target, true);
                }

                if (monsterHit)
                {
                    projectilesToDelete.Add(projectile);
                    SimpleAudioEngine.sharedEngine().playEffect(@"sounds/explosion");
                }

            }
            foreach (CCSprite projectile in projectilesToDelete)
            {
                _projectiles.Remove(projectile);
                quitProjectiles++;
                if (quitProjectiles > 10)
                {
                    //GameOverScene pScene = new GameOverScene("You Lost");
                    //CCDirector.sharedDirector().replaceScene(pScene);
                }
                this.removeChild(projectile, true);
            }
            projectilesToDelete.Clear();
        }