Пример #1
0
        public void ShouldCorrespondingTypeWhenBuilt(int which, Type type)
        {
            factory = new PowerUpFactory();
            var obj = factory.Build(which, new Coordinates());

            Assert.IsInstanceOfType(obj, type);
        }
Пример #2
0
    public void Hit(Bullet bullet)
    {
        // Stun
        Stun(bullet.transform.up);

        float damage = EnemyFactory.getInstance().calculateDamage(this);

        this.Life -= damage;
        GameObject text = Instantiate(DamageText, transform.position, Quaternion.identity) as GameObject;

        text.transform.SetParent(GameObject.Find("OverlayCanvas").transform);
        text.GetComponent <Text>().text = damage.ToString();
        float scaleX = 4 * (Life / MaxLife) + 0.1f;

        if (scaleX < 0)
        {
            scaleX = 0;
        }
        transform.FindChild("HealthBar").gameObject.SetActive(true);
        transform.FindChild("HealthBar").localScale = new Vector3(scaleX, 1, 1);
        //Debug.Log("Damage " + damage + ", remaining life " + this.Life);
        if (this.Life <= 0)
        {
            PowerUpFactory.getInstance().InstantiatePowerUp(this.PowerUpData, transform.position, Quaternion.identity);
            Destroy(this.gameObject);
        }
        else
        {
        }
        Destroy(bullet.gameObject);
    }
Пример #3
0
 private void createPowerUps()
 {
     foreach (PowerUpType powerUpType in Enum.GetValues(typeof(PowerUpType)))
     {
         var powerUp = PowerUpFactory.CreatePowerUp(powerUpType);
         powerUp.ChangeSpriteVisibility(false);
         this.powerUps.Add(powerUp);
     }
 }
Пример #4
0
    public void UsePowerUp(PowerUpType type, GameObject go)
    {
        PowerUpFactory.ActivatePowerUp(type);

        if (go != null)
        {
            NetworkServer.Destroy(go);
        }
    }
    public void SpawnPowerUp(Vector3 position)
    {
        int roll = (int)(Random.value * 100);

        if (roll < pickupChance)
        {
            PowerUpFactory.Dispatch(position);
        }
    }
Пример #6
0
 private void createPowerUp(PowerUpType typeOfPowerUp, int amount)
 {
     for (var i = 0; i < amount; i++)
     {
         var powerUp = PowerUpFactory.BuildPowerUp(typeOfPowerUp);
         var maxX    = (int)(LaneSettings.LaneLength - powerUp.Width);
         setPowerUpPosition(powerUp, maxX);
         this.checkCollisionWithPowerUp(powerUp);
         powerUp.Sprite.Visibility = Visibility.Collapsed;
         this.powerUps.Add(powerUp);
     }
 }
Пример #7
0
 public void Update()
 {
     if (currentPowerUp.type != 2)           // If not powerup null
     {
         this.totalDeltaTime += Time.deltaTime;
         if (this.totalDeltaTime > this.currentPowerUp.Duration)
         {
             this.currentPowerUp.OnFinish();
             this.currentPowerUp = PowerUpFactory.GetPowerUpNull();
             this.totalDeltaTime = 0;
         }
     }
 }
Пример #8
0
    void Awake()
    {
        _enemyFactory = EnemyFactory.Instance;
        _enemyFactory.LoadTemplates(EnemiesTemplates);

        _powerUpFactory = PowerUpFactory.Instance;
        _powerUpFactory.LoadTemplates(PowerUpsTemplates);

        _difficultyManager = new DifficultyManager(Difficulty, _enemyFactory.AvailableTypes().ToList());
        _waveManager       = new WaveManager(EnemyWaves, _difficultyManager, EnemySpawnPoint);

        Effetcs.Load();
        Game.Current.StartNew();
    }
Пример #9
0
    public EnemyData getBoss(int roomID, float lifeModifier)
    {
        EnemyData bossData = new EnemyData();

        bossData.type = getRandomBossIndex();
        WeaponData currentPlayerWeapon = Globals.GetPlayerController().WeaponData;

        bossData.Life        = lifeModifier * (((currentPlayerWeapon.Tier * Random.Range(5f, 20f))) + ((roomID * 5) * Random.Range(1f, 1.5f)));//Mathf.RoundToInt((27 + (currentPlayerWeapon.Tier * 5)) * 5 / (dmg_calc(roomID, currentPlayerWeapon, bossData)));
        bossData.PowerUpData = PowerUpFactory.getInstance().GetRandomPowerUp();
        bossData.Scale       = Random.Range(Constants.ENEMY_MIN_SCALE, Constants.ENEMY_MAX_SCALE);
        addRandomColorOverlay(bossData);

        return(bossData);
    }
Пример #10
0
    // Use this for initialization
    void Start()
    {
        if (mInstance == null)
        {
            mInstance = this;


            // Create the enemies, initialise the active and available lists, put all enemies in the available list
            mActive   = new List <GameObject>();
            mInactive = new List <GameObject>();
            mPool     = new GameObject[PowerUpPoolSize];
            for (int count = 0; count < mPool.Length; count++)
            {
                for (int typeCount = 0; typeCount < System.Enum.GetNames(typeof(PowerUpType)).Length; typeCount++)
                {
                    string powerUpName = System.Enum.GetNames(typeof(PowerUpType))[typeCount];


                    GameObject powerup = new GameObject("PowerUp_" + powerUpName + "PoolID" + (count + 1));

                    Animator anim = powerup.AddComponent <Animator>();
                    RuntimeAnimatorController animatorController = Resources.Load <RuntimeAnimatorController>("Animations/PowerUps/" + powerUpName + "/PU" + powerUpName);
                    if (animatorController == null)
                    {
                        return;
                    }
                    anim.runtimeAnimatorController = animatorController;
                    powerup.AddComponent <SpriteRenderer>();
                    var collider = powerup.AddComponent <BoxCollider2D>();
                    collider.isTrigger = true;
                    collider.offset    = new Vector2(-0.01864898f, -0.07832527f);
                    collider.size      = new Vector2(1.857859f, 1.813102f);
                    var puc = powerup.AddComponent <PowerUpController>();
                    puc.myType = (PowerUpType)typeCount;
                    var rb = powerup.AddComponent <Rigidbody2D>();
                    rb.gravityScale          = 0.0f;
                    powerup.transform.parent = transform;
                    mPool[count]             = powerup;
                    mInactive.Add(powerup);
                    powerup.SetActive(false);
                }
            }
        }
        else
        {
            Debug.LogError("Only one PowerUpFactory allowed - destorying duplicate");
            Destroy(this.gameObject);
        }
    }
Пример #11
0
        private async void RemoveBomb(Explosive bomb, Player player)
        {
            await Task.Factory.StartNew(() =>
            {
                var fc = new PowerUpFactory();

                Thread.Sleep(bomb.Time);
                Coordinates xy = bomb.GetCords();
                context.grid.RemoveFromTile(xy.X, xy.Y, (int)TileTypeEnum.Bomb);
                context.RemoveGameObject(bomb, xy.X, xy.Y);
                ExecuteExplosion(bomb);
                context.UpdateRequired = true;
                player.BombCount--;
            });
        }
 public void DestroyEnemy(GameObject enemy)
 {
     if (DifficultyCurve.Levels[UserData.CurrentLevel].Length != 1)
     {
         SpawnPowerUp(enemy.transform.position);
     }
     else // If the enemy is a boss, then spawn pickup with a worth equal to the # of the level (i.e : Boss 3 drops is worth 9 powerups)
     {
         PowerUpFactory.Dispatch(enemy.transform.position);
     }
     UserData.IncreaseLevelPoints(enemy.GetComponent <EnemyBehaviour>().GetPointsValue());
     ExplosionFactory.Dispatch(enemy.transform.position);
     EnemyFactory.Return(enemy);
     mActiveEnemies.Remove(enemy);
     mActiveEnemies.TrimExcess();
 }
Пример #13
0
        //TODO tell powerup what mario hit it
        public QuestionBlockAction(AbstractBlock context, Mario bumper) : base(context)
        {
            initialPosition  = context.Position;
            Context.Velocity = new Vector2(0f, -1f);
            Context.Bumper   = bumper;

            EventManager.Instance.TriggerBrickBumpedEvent(Context, Context.ContainedPowerup, false);

            if (Context.ContainedPowerup != PowerUpType.None)
            {
                //do some powerup reveal related thing
                var powerup = PowerUpFactory.Create(Context.ContainedPowerup, Context.Position);
                powerup.Releaser = bumper;
                GameGrid.Instance.Add(powerup);
                Context.ContainedPowerup = PowerUpType.None;
            }
        }
Пример #14
0
        public static Pickable GetRandom(Coordinates xy)
        {
            switch (new Random().Next(0, 2))
            {
            case 0:
            {
                var fc = new PowerDownFactory();
                return(fc.GetRandom(xy));
            }

            case 1:
            {
                var fc = new PowerUpFactory();
                return(fc.GetRandom(xy));
            }

            default: return(null);
            }
        }
Пример #15
0
        public void Start()
        {
            if (!Started)
            {
                elapsed = 0;
                Started = true;

                GameplayState gameplayState = Game.Instance.GameStateManager.States
                                              .FirstOrDefault(s => s is GameplayState)
                                              as GameplayState;

                PowerUpFactory powerUpFactory = new PowerUpFactory("JamGame.GameObjects.PowerUpItems");
                for (int i = 0; i < random.Next(3, 3 * gameplayState.Players.Length); i++)
                {
                    int         value   = random.Next(0, 100);
                    PowerUpItem powerUp = null;

                    if (Utils.InRange(0, 25, value))
                    {
                        Game.Instance.AddGameObject(powerUp = powerUpFactory.MakeNew("HealingPowerUp"));
                    }
                    else if (Utils.InRange(25, 50, value))
                    {
                        Game.Instance.AddGameObject(powerUp = powerUpFactory.MakeNew("IncreasedHpPowerUp"));
                    }
                    else if (Utils.InRange(50, 75, value))
                    {
                        Game.Instance.AddGameObject(powerUp = powerUpFactory.MakeNew("DoubleSpeedPowerUp"));
                    }
                    else if (Utils.InRange(75, 100, value))
                    {
                        Game.Instance.AddGameObject(powerUp = powerUpFactory.MakeNew("DoubleDamagePowerUp"));
                    }

                    powerUps.Add(powerUp);

                    powerUp.Position = new Vector2(
                        random.Next(0, Game.Instance.ScreenWidth - powerUp.Size.Width),
                        random.Next(Game.Instance.ScreenHeight / 2, Game.Instance.ScreenHeight - powerUp.Size.Height));
                }
            }
        }
 void OnTriggerEnter2D(Collider2D other)
 {
     if (other.tag == "Player")
     {
         switch (myType)
         {
         case PowerUpFactory.PowerUpType.MONEY:
             if (DifficultyCurve.Levels[UserData.CurrentLevel].Length == 1)
             {
                 UserData.AddBonusPoints((UserData.CurrentLevel + 1) * 1000);
             }
             else
             {
                 UserData.AddBonusPoints(1000);
             }
             PowerUpFactory.Return(this.gameObject);
             break;
         }
     }
 }
Пример #17
0
    void Start()
    {
        this.WeaponData     = WeaponFactory.getInstance().GetRandomWeapon(1);
        this.PowerUpManager = new PowerUpManager();
        this.PowerUpManager.SetPowerUp(PowerUpFactory.GetPowerUpNull());
        this.resources = new Dictionary <ResourceType, int>();
        animator       = GetComponent <Animator>();
        myRigidbody2D  = GetComponent <Rigidbody2D>();

        // Print out starting weapon's name
        GameObject text = Instantiate(Text, Globals.GetPlayer().transform.position, Quaternion.identity) as GameObject;

        text.transform.SetParent(GameObject.Find("OverlayCanvas").transform);
        text.GetComponent <Text>().color = Color.white;
        string rollName = ("" + WeaponData.Roll).Equals("None") ? "" : (WeaponData.Roll.ToString());

        text.GetComponent <Text>().text          = rollName + " " + WeaponData.Type + " T" + WeaponData.Tier;
        text.GetComponent <DestroyAfter>().after = 3.0f;
        text.GetComponent <MoveUp>().speed       = 0.005f;

        Life = MaxLife;
    }
Пример #18
0
    void OnCollision(Collision2D collision)
    {
        if (collision.gameObject.tag == "Enemy" && !this.invincible)
        {
            addLife(-1);
            if (Life == 0)
            {
                // Die!
                FadeScreen.Animate(8, () =>
                {
                    ClearResources();
                    transform.position = Hub.instance.topDoor.transform.position - Vector3.up * 2;
                    Life = MaxLife;

                    WeaponData = WeaponFactory.getInstance().GetRandomWeapon(1);
                    PowerUpManager.SetPowerUp(PowerUpFactory.GetPowerUpNull());

                    Room currentRoom = FindObjectsOfType <Room>().Where(r => r.ID != -1).First();
                    Hub.instance.topDoor.linkedRoom            = (Instantiate(currentRoom.roomPrefab, Vector3.zero, Quaternion.identity) as GameObject).GetComponent <Room>();
                    Hub.instance.topDoor.linkedRoom.roomPrefab = currentRoom.roomPrefab;
                    Destroy(currentRoom.gameObject);

                    Enemy[] enemies = FindObjectsOfType <Enemy>();
                    for (int i = 0; i < enemies.Length; i++)
                    {
                        Destroy(enemies[i].gameObject);
                    }

                    Globals.CurrentLevel = 0;
                }, "Game over\n\nYou lost all your resources");
            }
            else
            {
                // Set invincible;
                this.invincible     = true;
                this.timeInvincible = 0;
            }
        }
    }
Пример #19
0
        public BreakableBrickBounce(AbstractBlock context, Mario bumper) : base(context)
        {
            initialPosition  = Context.Position;
            Context.Velocity = new Vector2(0f, -1f);
            Context.Bumper   = bumper;

            EventManager.Instance.TriggerBrickBumpedEvent(Context, Context.ContainedPowerup, false);

            if (Context.CoinCount > 0)
            {
                Context.CoinCount -= 1;

                var coin = PowerUpFactory.Create(PowerUpType.Coin, Context.Position);
                coin.Releaser = bumper;
                GameGrid.Instance.Add(coin);

                if (Context.CoinCount == 0 && Context.ContainedPowerup == PowerUpType.None)
                {
                    GoToUsed = true;
                }
            }
            else if (Context.ContainedPowerup != PowerUpType.None)
            {
                //do some powerup reveal related thing
                var powerup = PowerUpFactory.Create(Context.ContainedPowerup, Context.Position);
                powerup.Releaser = bumper;
                GameGrid.Instance.Add(powerup);

                Context.ContainedPowerup = PowerUpType.None;
                GoToUsed = true;
            }
            else if (Context.CoinCount == 0 && Context.ContainedPowerup == PowerUpType.None)
            {
                GoToUsed = true;
            }
        }
Пример #20
0
 void Start()
 {
     powerUp = PowerUpFactory.GetRandomPowerUp();
 }
 void Start()
 {
     mPowerUpFactory = GameObject.Find("PowerUpFactory").GetComponent <PowerUpFactory>();
     mPlayerCharacter.ResetHP();
 }
Пример #22
0
        public static Entity CreateEntity(Dictionary <string, object> entityProperties)
        {
            Entity    entity      = null;
            string    textureName = (string)entityProperties["textureName"];
            Texture2D texture     = TextureFactory.GetTexture(textureName);

            string colorName = (string)entityProperties["color"];
            Color  color     = System.Drawing.Color.FromName(colorName).ToXNA();

            Dictionary <string, object> movementPatternProperties = null;
            MovementPattern             movement = null;

            if (entityProperties.ContainsKey("movementPattern"))
            {
                movementPatternProperties = (Dictionary <string, object>)entityProperties["movementPattern"];
                movement = MovementPatternFactory.CreateMovementPattern(movementPatternProperties);
            }

            string enemyType            = (string)entityProperties["entityType"];
            string entityClassification = (string)entityProperties["entityType"] != "player" ? "enemy" : "player";

            int hp = Convert.ToInt32((float)entityProperties["hp"]);

            List <Attack> attacks = null;

            if (entityProperties["attacks"] is List <object> )
            {
                attacks = AttackFactory.CreateAttacks((List <object>)entityProperties["attacks"]);
            }
            else if (entityProperties["attacks"] is Dictionary <string, object> )
            {
                attacks = AttackFactory.CreateAttacks((Dictionary <string, object>)entityProperties["attacks"]);
            }

            switch (entityClassification)
            {
            case "player":
                entity = new Player(texture, color, movement, hp, attacks);
                entity.SpawnPosition = new Vector2((float)movementPatternProperties["spawnXPosition"], (float)movementPatternProperties["spawnYPosition"]);
                break;

            case "enemy":
                PowerUp powerUp = PowerUpFactory.CreatePowerUp((Dictionary <string, object>)entityProperties["powerUp"]);

                switch (enemyType)
                {
                case "simpleGrunt":
                    entity = new SimpleGrunt(texture, color, movement, powerUp, hp, attacks);
                    break;

                case "complexGrunt":
                    entity = new ComplexGrunt(texture, color, movement, powerUp, hp, attacks);
                    break;

                case "midBoss":
                    entity = new MidBoss(texture, color, movement, powerUp, hp, attacks);
                    break;

                case "finalBoss":
                    List <Attack> phase2Attacks = null;
                    if (entityProperties["phase2Attacks"] is List <Dictionary <string, object> > )
                    {
                        phase2Attacks = AttackFactory.CreateAttacks((List <object>)entityProperties["phase2Attacks"]);
                    }
                    else if (entityProperties["phase2Attacks"] is Dictionary <string, object> )
                    {
                        phase2Attacks = AttackFactory.CreateAttacks((Dictionary <string, object>)entityProperties["phase2Attacks"]);
                    }

                    entity = new FinalBoss(texture, color, movement, powerUp, hp, attacks, phase2Attacks);
                    break;
                }

                break;

            default:
                throw new Exception("Invalid Entity");
            }

            if (entity.Movement != null)
            {
                entity.Movement.Parent = entity;
            }

            return(entity);
        }
Пример #23
0
 void Start()
 {
     instance = this;
 }
Пример #24
0
        private void MakeObject(System.Drawing.Color pixel, int x, int y)
        {
            Func <System.Drawing.Color, System.Drawing.Color, bool> sameColor = (c1, c2) => (c1.R == c2.R && c1.G == c2.G && c1.B == c2.B);
            Vector2            position    = new Vector2(x, y);
            AbstractGameObject initializer = null;

            if (!sameColor(pixel, Colors.Empty))
            {
                if (pixel.R == Colors.MarioSpawn.R && pixel.G == Colors.MarioSpawn.G)
                {
                    position = new Vector2(position.X, position.Y - (MarioHeight - 64));
                    Mario mario;
                    if (MarioCloneGame.Player1 == null && pixel.B == 0)
                    {
                        mario = MarioFactory.Create(position);
                        MarioCloneGame.Player1 = mario;
                        MarioCloneGame.HUDs.Add(new HeadsUpDisplay.HUD(mario, MarioCloneGame.Player1Camera));
                        Grid.Add(mario);
                    }
                    else if (MarioCloneGame.Player2 == null && pixel.B == 1 && (MarioCloneGame.Mode == GameMode.MultiPlayer))
                    {
                        mario = MarioFactory.Create(position);
                        MarioCloneGame.Player2 = mario;
                        MarioCloneGame.HUDs.Add(new HeadsUpDisplay.HUD(mario, MarioCloneGame.Player2Camera));
                        Grid.Add(mario);
                    }
                    else if (MarioCloneGame.Player1 != null && pixel.B == 0)
                    {
                        mario = MarioCloneGame.Player1;
                        mario.ResetMario(position);
                        MarioCloneGame.HUDs.Add(new HeadsUpDisplay.HUD(mario, MarioCloneGame.Player1Camera));
                        Grid.Add(mario);
                    }
                    else if (MarioCloneGame.Player2 != null && pixel.B == 1 && (MarioCloneGame.Mode == GameMode.MultiPlayer))
                    {
                        mario = MarioCloneGame.Player2;
                        mario.ResetMario(position);
                        MarioCloneGame.HUDs.Add(new HeadsUpDisplay.HUD(mario, MarioCloneGame.Player2Camera));
                        Grid.Add(mario);
                    }
                }
                else if (sameColor(pixel, Colors.MarioCheckpoint))
                {
                    MarioCloneGame.Player1.Spawns.Add(position);
                    if ((MarioCloneGame.Mode == GameMode.MultiPlayer))
                    {
                        MarioCloneGame.Player2.Spawns.Add(position);
                    }
                }
                else if (sameColor(pixel, Colors.QuestionBlock))
                {
                    initializer          = BlockFactory.Instance.Create(BlockType.QuestionBlock, position);
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.QuestionBlockGreenMushroom))
                {
                    initializer = BlockFactory.Instance.Create(BlockType.QuestionBlock, position);
                    ((AbstractBlock)initializer).ContainedPowerup = PowerUpType.GreenMushroom;
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.QuestionBlockFireFlower))
                {
                    initializer = BlockFactory.Instance.Create(BlockType.QuestionBlock, position);
                    ((AbstractBlock)initializer).ContainedPowerup = PowerUpType.Flower;
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                    Grid.Add(initializer);
                }
                else if (pixel.R == Colors.BrickBlock.R && pixel.G == Colors.BrickBlock.G)
                {
                    initializer = BlockFactory.Instance.Create(BlockType.BreakableBrick, position);
                    ((AbstractBlock)initializer).CoinCount = pixel.B;
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.UsedBlock))
                {
                    initializer          = BlockFactory.Instance.Create(BlockType.UsedBlock, position);
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.FloorBlock))
                {
                    initializer          = BlockFactory.Instance.Create(BlockType.FloorBlock, position);
                    initializer.Position = new Vector2(initializer.Position.X, (initializer.Position.Y + initializer.Sprite.SourceRectangle.Height));
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.StairBlock))
                {
                    initializer          = BlockFactory.Instance.Create(BlockType.StairBlock, position);
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.HiddenBlock))
                {
                    initializer          = BlockFactory.Instance.Create(BlockType.HiddenBlock, position);
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.Goomba))
                {
                    position             = new Vector2(position.X, position.Y - (GoombaHeight - 64));
                    initializer          = EnemyFactory.Create(EnemyType.Goomba, position);
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.Piranha))
                {
                    initializer          = EnemyFactory.Create(EnemyType.Piranha, position);
                    initializer.Position = new Vector2(initializer.Position.X + Math.Abs(((initializer.Sprite.SourceRectangle.Width - PipeTopWidth) / 2)),
                                                       initializer.Position.Y +
                                                       (initializer.Sprite.SourceRectangle.Height) + PipeTopHeight);
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.GreenKoopa))
                {
                    position             = new Vector2(position.X, position.Y);
                    initializer          = EnemyFactory.Create(EnemyType.GreenKoopa, position);
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.RedMushroom))
                {
                    initializer          = PowerUpFactory.Create(PowerUpType.RedMushroom, position);
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.GreenMushroom))
                {
                    initializer          = PowerUpFactory.Create(PowerUpType.GreenMushroom, position);
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.FireFlower))
                {
                    initializer          = PowerUpFactory.Create(PowerUpType.Flower, position);
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.Coin))
                {
                    initializer = PowerUpFactory.Create(PowerUpType.Coin, position);
                    ((AbstractPowerup)initializer).State = new CoinStaticState((AbstractPowerup)initializer);
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.PipeSegment))
                {
                    initializer          = BlockFactory.Instance.Create(BlockType.PipeSegment, position);
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.Flagpole))
                {
                    if (MarioCloneGame.Mode != GameMode.SinglePlayer)
                    {
                        initializer          = BlockFactory.Instance.Create(BlockType.Flagpole, position);
                        initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                        Grid.Add(initializer);
                    }
                }
                else if (sameColor(pixel, Colors.PipeTop))
                {
                    PipeTop pipeTop = (PipeTop)BlockFactory.Instance.Create(BlockType.PipeTop, position);
                    pipeTop.Position = new Vector2(pipeTop.Position.X, pipeTop.Position.Y + pipeTop.Sprite.SourceRectangle.Height);
                    if (aboveGround)
                    {
                        pipeTop.LevelArea = 0;
                    }
                    else
                    {
                        String temp = Path.GetFileNameWithoutExtension(file);
                        pipeTop.LevelArea = temp[temp.Length - 1] - '0';
                    }

                    for (int i = (y / BlockHeight) - yOffsetFromUnderground - 1; i < _image.Height; i++)
                    {
                        System.Drawing.Color tempPixel = _image.GetPixel((x / BlockWidth) - xOffsetFromUnderground, i);
                        //"false" will be replaced with pixel.R == Colors.WarpSpot.R && pixel.G == Colors.WarpSpot.G
                        if (aboveGround && tempPixel.R == Colors.WarpPoint.R && tempPixel.G == Colors.WarpPoint.G)
                        {
                            if (danglingWarp != null)
                            {
                                danglingWarp.WarpEnd = pipeTop;
                                pipeTop.WarpEnd      = danglingWarp;
                                danglingWarp         = null;
                            }
                            else
                            {
                                danglingWarp = pipeTop;
                                aboveGround  = false;

                                String newFile    = String.Concat(Path.GetFileNameWithoutExtension(file), tempPixel.B, Path.GetExtension(file));
                                String tempHolder = file;
                                newFile = Path.Combine(Path.GetDirectoryName(file), newFile);

                                using (var stream = new FileStream(newFile, FileMode.Open))
                                {
                                    _image = new Bitmap(stream);
                                }

                                file = newFile;
                                LevelAreas.Add(tempPixel.B,
                                               new Microsoft.Xna.Framework.Rectangle(x, (i + 1) * BlockHeight, _image.Width * BlockWidth, MarioCloneGame.ReturnGraphicsDevice.PreferredBackBufferHeight));
                                CurrentArea            = tempPixel.B;
                                xOffsetFromUnderground = x / BlockWidth;
                                yOffsetFromUnderground = i;

                                BlockFactory.SpriteFactory = SubThemedBlockSpriteFactory.Instance;
                                CreationLoop(x / BlockWidth, i + 1);
                                BlockFactory.SpriteFactory = NormalThemedBlockSpriteFactory.Instance;

                                xOffsetFromUnderground = 0;
                                yOffsetFromUnderground = 0;
                                file        = tempHolder;
                                aboveGround = true;
                                CurrentArea = 0;
                                using (var stream = new FileStream(file, FileMode.Open))
                                {
                                    _image = new Bitmap(stream);
                                }
                            }

                            break;
                        }
                        //"false" will be replaced with pixel.R == Colors.WarpSpot.R && pixel.G == Colors.WarpSpot.G
                        else if (tempPixel.R == Colors.WarpPoint.R && tempPixel.G == Colors.WarpPoint.G)
                        {
                            if (danglingWarp != null)
                            {
                                danglingWarp.WarpEnd = pipeTop;
                                pipeTop.WarpEnd      = danglingWarp;
                                danglingWarp         = null;
                            }
                            else
                            {
                                danglingWarp = pipeTop;
                            }
                        }
                    }

                    Grid.Add(pipeTop);
                }
                else if (sameColor(pixel, Colors.QuestionBlockRedMushroom))
                {
                    initializer = BlockFactory.Instance.Create(BlockType.QuestionBlock, position);
                    ((AbstractBlock)initializer).ContainedPowerup = PowerUpType.RedMushroom;
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.BowserObject))
                {
                    position             = new Vector2(position.X, position.Y);
                    initializer          = EnemyFactory.Create(EnemyType.BowserIdle, position);
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y);
                    Grid.Add(initializer);
                }
                else if (sameColor(pixel, Colors.FireCannonBlock))
                {
                    position             = new Vector2(position.X, position.Y);
                    initializer          = BlockFactory.Instance.Create(BlockType.FireCannon, position);
                    initializer.Position = new Vector2(initializer.Position.X, initializer.Position.Y + initializer.Sprite.SourceRectangle.Height);
                    Grid.Add(initializer);
                }
                else if (pixel.R == Colors.WarpPoint.R && pixel.G == Colors.WarpPoint.G)
                {
                    initializer          = BlockFactory.Instance.Create(BlockType.FloorBlock, position);
                    initializer.Position = new Vector2(initializer.Position.X, (initializer.Position.Y + initializer.Sprite.SourceRectangle.Height));
                    Grid.Add(initializer);
                    //MakeObject(Colors.FloorBlock, (x / BlockWidth) - xOffsetFromUnderground, (y / BlockHeight) - yOffsetFromUnderground - 1);

                    /*if ((x / BlockWidth) - 1 - xOffsetFromUnderground >= 0)
                     * {
                     *  //fill in the blank space with some surrounding to blend in
                     *  MakeObject(_image.GetPixel((x / BlockWidth) - 1 - xOffsetFromUnderground, (y / BlockHeight) - yOffsetFromUnderground - 1), x, y);
                     * }
                     * else if ((x / BlockWidth) + 1 < _image.Width)
                     * {
                     *  MakeObject(_image.GetPixel((x / BlockWidth) + 1 - xOffsetFromUnderground, (y / BlockHeight) - yOffsetFromUnderground - 1), x, y);
                     * }
                     * else
                     * {
                     *  MakeObject(Colors.FloorBlock, (x / BlockWidth) - xOffsetFromUnderground, (y / BlockHeight) - yOffsetFromUnderground - 1);
                     * }*/
                }
            }

            if (initializer != null)
            {
                initializer.LevelArea = CurrentArea;
            }
        }
Пример #25
0
        public void Start()
        {
            if (!Started)
            {
                elapsed = 0;
                Started = true;

                GameplayState gameplayState = Game.Instance.GameStateManager.States
                    .FirstOrDefault(s => s is GameplayState)
                    as GameplayState;

                PowerUpFactory powerUpFactory = new PowerUpFactory("JamGame.GameObjects.PowerUpItems");
                for (int i = 0; i < random.Next(3, 3 * gameplayState.Players.Length); i++)
                {
                    int value = random.Next(0, 100);
                    PowerUpItem powerUp = null;

                    if (Utils.InRange(0, 25, value))
                    {
                        Game.Instance.AddGameObject(powerUp = powerUpFactory.MakeNew("HealingPowerUp"));
                    }
                    else if (Utils.InRange(25, 50, value))
                    {
                        Game.Instance.AddGameObject(powerUp = powerUpFactory.MakeNew("IncreasedHpPowerUp"));
                    }
                    else if (Utils.InRange(50, 75, value))
                    {
                        Game.Instance.AddGameObject(powerUp = powerUpFactory.MakeNew("DoubleSpeedPowerUp"));
                    }
                    else if (Utils.InRange(75, 100, value))
                    {
                        Game.Instance.AddGameObject(powerUp = powerUpFactory.MakeNew("DoubleDamagePowerUp"));
                    }

                    powerUps.Add(powerUp);

                    powerUp.Position = new Vector2(
                        random.Next(0, Game.Instance.ScreenWidth - powerUp.Size.Width),
                        random.Next(Game.Instance.ScreenHeight / 2, Game.Instance.ScreenHeight - powerUp.Size.Height));
                }
            }
        }
Пример #26
0
 private void onSelectPowerUp(PowerUpType powerUpType)
 {
     ActivePowerUps.Add(PowerUpFactory.Create(powerUpType, this));
     executePowerUp();
 }
Пример #27
0
 void Awake()
 {
     _instance = this;
 }