public void ShouldCorrespondingTypeWhenBuilt(int which, Type type) { factory = new PowerUpFactory(); var obj = factory.Build(which, new Coordinates()); Assert.IsInstanceOfType(obj, type); }
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); }
private void createPowerUps() { foreach (PowerUpType powerUpType in Enum.GetValues(typeof(PowerUpType))) { var powerUp = PowerUpFactory.CreatePowerUp(powerUpType); powerUp.ChangeSpriteVisibility(false); this.powerUps.Add(powerUp); } }
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); } }
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); } }
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; } } }
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(); }
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); }
// 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); } }
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(); }
//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; } }
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); } }
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; } } }
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; }
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; } } }
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; } }
void Start() { powerUp = PowerUpFactory.GetRandomPowerUp(); }
void Start() { mPowerUpFactory = GameObject.Find("PowerUpFactory").GetComponent <PowerUpFactory>(); mPlayerCharacter.ResetHP(); }
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); }
void Start() { instance = this; }
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; } }
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)); } } }
private void onSelectPowerUp(PowerUpType powerUpType) { ActivePowerUps.Add(PowerUpFactory.Create(powerUpType, this)); executePowerUp(); }
void Awake() { _instance = this; }