Example #1
0
        static void ObserverExample()
        {
            Logger.Instance.Info("Running Observer Example");

            var mockPosition   = Vector2.Zero;
            var mockMap        = new Map(16, 16);
            var mockPathFinder = new PathFindingAdapter(mockMap);
            var enemyState     = new EnemyStateFactory();

            var player1 = new Player1 {
                LifePoints = 100
            };
            var pistol  = new Pistol();
            var enemies = new List <IEnemyObserver>
            {
                new EnemyA(mockPathFinder, pistol, player1, 50, mockPosition, null, enemyState.GetState("Moving"), mockMap),
                new EnemyA(mockPathFinder, pistol, player1, 50, mockPosition, null, enemyState.GetState("Moving"), mockMap),
                new EnemyA(mockPathFinder, pistol, player1, 50, mockPosition, null, enemyState.GetState("Moving"), mockMap)
            };

            foreach (var enemy in enemies)
            {
                player1.AttachObserver(enemy);
            }

            Logger.Instance.Info("Test1:");
            player1.Notify();
            Logger.Instance.Info("Test2:");
            player1.LifePoints = 90;
            player1.DetachObserver(enemies[0]);
            player1.Notify();
        }
Example #2
0
        private static void ChainOfResponsibilityExample()
        {
            Console.WriteLine("Chain of Responsibility Example:");
            var          mockPosition       = Vector2.Zero;
            int          mapSize            = 32;
            var          mockMap            = new Map(mapSize, mapSize);
            IPathFinding pathfindingAdapter = new PathFindingAdapter(mockMap);
            var          weapon             = new Shotgun();
            var          mockPlayer         = new Player1 {
                LifePoints = 100
            };
            var enemyState = new EnemyStateFactory();

            var grandparentEnemy = new EnemyA(pathfindingAdapter, weapon, mockPlayer, 100, mockPosition, null, enemyState.GetState("Moving"), mockMap);
            var parentEnemy      = new EnemyB(pathfindingAdapter, weapon, mockPlayer, 100, mockPosition, null, enemyState.GetState("Moving"), mockMap);
            var childEnemy       = new EnemyA(pathfindingAdapter, weapon, mockPlayer, 100, mockPosition, null, enemyState.GetState("Moving"), mockMap);

            parentEnemy.SetParentEnemy(grandparentEnemy);
            childEnemy.SetParentEnemy(parentEnemy);

            Console.WriteLine("Life points before child takes damage:");
            Console.WriteLine($"Grandparent: {grandparentEnemy.LifePoints}");
            Console.WriteLine($"Parent: {parentEnemy.LifePoints}");
            Console.WriteLine($"Child: {childEnemy.LifePoints}");

            childEnemy.TakeDamage(100);

            Console.WriteLine("Life points after child takes damage:");
            Console.WriteLine($"Grandparent: {grandparentEnemy.LifePoints}");
            Console.WriteLine($"Parent: {parentEnemy.LifePoints}");
            Console.WriteLine($"Child: {childEnemy.LifePoints}");
        }
Example #3
0
        private static void VisitorExample()
        {
            Logger.Instance.Info("Running Visitor Example");

            var mockPosition   = Vector2.Zero;
            var mockMap        = new Map(16, 16);
            var mockPathFinder = new PathFindingAdapter(mockMap);
            var player1        = new Player1 {
                LifePoints = 100
            };
            var pistol     = new Pistol();
            var enemyState = new EnemyStateFactory();

            Boss boss1 = new Boss(mockPathFinder, pistol, player1, 500, mockPosition, null, enemyState.GetState("Moving"), mockMap);
            Boss boss2 = new Boss(mockPathFinder, pistol, player1, 200, mockPosition, null, enemyState.GetState("Moving"), mockMap);

            EnemiesFactory enemiesFactory = new EnemiesConcreteFactory();
            var            enemyA1        = enemiesFactory.CreateEnemy(mockPathFinder, EnemyType.Small, pistol, player1, 50, mockPosition,
                                                                       null, enemyState.GetState("Moving"), mockMap);
            var enemyB1 =
                enemiesFactory.CreateEnemy(mockPathFinder, EnemyType.Big, pistol, player1, 75, mockPosition, null, enemyState.GetState("Moving"), mockMap);
            var enemyA2 = enemiesFactory.CreateEnemy(mockPathFinder, EnemyType.Small, pistol, player1, 25, mockPosition,
                                                     null, enemyState.GetState("Moving"), mockMap);
            var enemyB2 =
                enemiesFactory.CreateEnemy(mockPathFinder, EnemyType.Big, pistol, player1, 50, mockPosition, null, enemyState.GetState("Moving"), mockMap);

            boss1.AddMinion(enemyA1);
            boss1.AddMinion(boss2);
            boss1.AddMinion(enemyB1);

            boss2.AddMinion(enemyA2);
            boss2.AddMinion(enemyB2);

            boss1.Accept(new EnemyVisitor());
        }
        public void Construct(EnemyStateFactory stateFactory, SignalBus signalBus)
        {
            Debug.Log("Enemy Construct");

            _stateFactory = stateFactory;
            _signalBus    = signalBus;
        }
Example #5
0
        private static void MediatorExample()
        {
            Console.WriteLine("Mediator Example:");

            var enemyState        = new EnemyStateFactory();
            var mapWidthAndHeight = 16;
            var mockPosition      = Vector2.Zero;
            var mockMap           = new Map(mapWidthAndHeight, mapWidthAndHeight);
            var mockPlayer        = new Player1 {
                LifePoints = 100
            };
            var mapObjects = new List <IMapObject>
            {
                new EnemyA(null, null, mockPlayer, 100, mockPosition, null, enemyState.GetState("Moving"), mockMap),
                new EnemyB(null, null, mockPlayer, 100, mockPosition, null, enemyState.GetState("Moving"), mockMap),
                new EnemyA(null, null, mockPlayer, 100, mockPosition, null, enemyState.GetState("Moving"), mockMap),
                new EnemyB(null, null, mockPlayer, 100, mockPosition, null, enemyState.GetState("Moving"), mockMap),
                new EnemyA(null, null, mockPlayer, 100, mockPosition, null, enemyState.GetState("Moving"), mockMap),
                mockPlayer,
                new Wall()
            };

            foreach (var mapObject in mapObjects)
            {
                mockMap.AddMapObject(mapObject);
            }

            var newEnemy = new EnemyA(null, null, mockPlayer, 100, mockPosition, null, enemyState.GetState("Moving"), mockMap);

            Logger.Instance.Info("All enemies received a message that an enemy spawned, so their base damages increase");
        }
Example #6
0
    private void Start()
    {
        this.factory = new EnemyStateFactory(this.gameObject, this.GetComponentInChildren <Finder>(),
                                             this.dashSpeed,
                                             this.dashRotSpeed,
                                             this.breakInterval, this.actionNum);

        this.state = this.factory.Create(this.currentStateId);
    }
Example #7
0
        private static void CompositeExample()
        {
            Logger.Instance.Info("Running Composite Example");
            var mockPosition   = Vector2.Zero;
            var mockMap        = new Map(16, 16);
            var mockPathFinder = new PathFindingAdapter(mockMap);
            var player1        = new Player1 {
                LifePoints = 100
            };
            var pistol     = new Pistol();
            var enemyState = new EnemyStateFactory();

            var boss1 = new Boss(mockPathFinder, pistol, player1, 500, mockPosition, null, enemyState.GetState("Moving"), mockMap);
            var boss2 = new Boss(mockPathFinder, pistol, player1, 200, mockPosition, null, enemyState.GetState("Moving"), mockMap);

            EnemiesFactory enemiesFactory = new EnemiesConcreteFactory();
            var            enemyA1        = enemiesFactory.CreateEnemy(mockPathFinder, EnemyType.Small, pistol, player1, 50, mockPosition,
                                                                       null, enemyState.GetState("Moving"), mockMap);
            var enemyB1 =
                enemiesFactory.CreateEnemy(mockPathFinder, EnemyType.Big, pistol, player1, 75, mockPosition, null, enemyState.GetState("Moving"), mockMap);
            var enemyA2 = enemiesFactory.CreateEnemy(mockPathFinder, EnemyType.Small, pistol, player1, 25, mockPosition,
                                                     null, enemyState.GetState("Moving"), mockMap);
            var enemyB2 =
                enemiesFactory.CreateEnemy(mockPathFinder, EnemyType.Big, pistol, player1, 50, mockPosition, null, enemyState.GetState("Moving"), mockMap);

            boss1.AddMinion(enemyA1);
            boss1.AddMinion(boss2);
            boss1.AddMinion(enemyB1);

            boss2.AddMinion(enemyA2);
            boss2.AddMinion(enemyB2);


            Logger.Instance.Info("Boss1 has " + boss1.LifePoints + "HP. His minions:");
            int i = 1;

            foreach (Enemy enemy in boss1.GetMinions())
            {
                Logger.Instance.Info("Minion has " + enemy.LifePoints + "HP, his boss is Boss" + i + ".");
                if (enemy.GetType() == typeof(Boss))
                {
                    i++;
                    Boss temp = (Boss)enemy;
                    Logger.Instance.Info("This minion is boss as well.");
                    foreach (Enemy minion in temp.GetMinions())
                    {
                        Logger.Instance.Info("Minion has " + minion.LifePoints + "HP, his boss is Boss" + i + ".");
                    }
                    i--;
                }
            }
        }
Example #8
0
        private static void BridgeExample()
        {
            Logger.Instance.Info("Running Bridge Example");

            var mockPosition   = Vector2.Zero;
            var mockMap        = new Map(16, 16);
            var mockPathFinder = new PathFindingAdapter(mockMap);
            var enemyState     = new EnemyStateFactory();

            IPlayer player  = new Player1();
            IWeapon bazooka = new Bazooka();
            IWeapon pistol  = new Pistol();

            Enemy enemyAWithBazooka = new EnemyA(mockPathFinder, bazooka, player, 50, mockPosition, null, enemyState.GetState("Moving"), mockMap);
            Enemy enemyBWithPistol  = new EnemyB(mockPathFinder, pistol, player, 50, mockPosition, null, enemyState.GetState("Moving"), mockMap);

            enemyAWithBazooka.Attack();
            enemyBWithPistol.Attack();
        }
Example #9
0
        private static void StateExample()
        {
            Console.WriteLine("State Example:");
            var          mockPosition       = Vector2.Zero;
            int          mapSize            = 32;
            var          mockMap            = new Map(mapSize, mapSize);
            IPathFinding pathfindingAdapter = new PathFindingAdapter(mockMap);
            var          weapon             = new Shotgun();
            var          mockPlayer         = new Player1 {
                LifePoints = 100
            };
            var enemyState = new EnemyStateFactory();

            var enemy = new EnemyA(pathfindingAdapter, weapon, mockPlayer, 50, mockPosition, null, enemyState.GetState("Moving"), mockMap);

            enemy.DoAction();
            enemy.CurrentState = enemyState.GetState("Shooting");
            enemy.DoAction();
        }
Example #10
0
        private static void PrototypeExample()
        {
            Logger.Instance.Info("Running Prototype Example");
            var mockPosition   = Vector2.Zero;
            var mockMap        = new Map(16, 16);
            var mockPathFinder = new PathFindingAdapter(mockMap);
            var player1        = new Player1 {
                LifePoints = 100
            };
            var pistol     = new Pistol();
            var enemyState = new EnemyStateFactory();

            EnemiesFactory enemiesFactory = new EnemiesConcreteFactory();
            var            enemyA         = enemiesFactory.CreateEnemy(mockPathFinder, EnemyType.Small, pistol, player1, 50, mockPosition,
                                                                       null, enemyState.GetState("Moving"), mockMap);

            Logger.Instance.Info("First enemy has " + enemyA.LifePoints + " life points and his hash code is " +
                                 enemyA.GetHashCode() + " and weapon's hash code is " +
                                 enemyA.GetWeapon().GetHashCode());

            var enemyA1 = enemyA.Clone();

            Logger.Instance.Info("Cloned enemy has " + enemyA1.LifePoints + " life points and his hash code is " +
                                 enemyA1.GetHashCode() + " and weapon's hash code is " +
                                 enemyA1.GetWeapon().GetHashCode());
            var enemyA2 = enemyA.Clone();

            Logger.Instance.Info("Second Cloned enemy has " + enemyA2.LifePoints +
                                 " life points and his hash code is " + enemyA2.GetHashCode() +
                                 " and weapon's hash code is " + enemyA2.GetWeapon().GetHashCode());

            var enemyA3 = enemyA.DeepCopy();

            Logger.Instance.Info("Deep Cloned enemy has " + enemyA3.LifePoints + " life points and his hash code is " +
                                 enemyA3.GetHashCode() + " and weapon's hash code is " +
                                 enemyA3.GetWeapon().GetHashCode());
            var enemyA4 = enemyA.DeepCopy();

            Logger.Instance.Info("Second Deep Cloned enemy has " + enemyA4.LifePoints +
                                 " life points and his hash code is " + enemyA4.GetHashCode() +
                                 " and weapon's hash code is " + enemyA4.GetWeapon().GetHashCode());
        }
Example #11
0
        private static void FactoryExample()
        {
            Logger.Instance.Info("Running Factory Example");
            var mockPosition   = Vector2.Zero;
            var mockMap        = new Map(16, 16);
            var mockPathFinder = new PathFindingAdapter(mockMap);
            var player1        = new Player1 {
                LifePoints = 100
            };
            var pistol         = new Pistol();
            var enemiesFactory = new EnemiesConcreteFactory();
            var enemyState     = new EnemyStateFactory();

            var enemyA = enemiesFactory.CreateEnemy(mockPathFinder, EnemyType.Small, pistol, player1, 50, mockPosition,
                                                    null, enemyState.GetState("Moving"), mockMap);

            Logger.Instance.Info("First enemy has " + enemyA.LifePoints + " life points and his type is " +
                                 enemyA.GetType());
            var enemyB =
                enemiesFactory.CreateEnemy(mockPathFinder, EnemyType.Big, pistol, player1, 75, mockPosition, null, enemyState.GetState("Moving"), mockMap);

            Logger.Instance.Info("Second enemy has " + enemyB.LifePoints + " life points and his type is " +
                                 enemyB.GetType());
        }
 public EnemyAttackWindupState(EnemyHierarchicalStateMachine currentContext, EnemyStateFactory playerStateFactory)
     : base(currentContext, playerStateFactory)
 {
 }
Example #13
0
 public EnemyBaseState(EnemyHierarchicalStateMachine currentContext, EnemyStateFactory enemyStateFactory)
 {
     _ctx     = currentContext;
     _factory = enemyStateFactory;
 }
Example #14
0
 public EnemyGroundedState(EnemyHierarchicalStateMachine currentContext, EnemyStateFactory playerStateFactory)
     : base(currentContext, playerStateFactory)
 {
 }
Example #15
0
 public PandaBossWalkState(EnemyHierarchicalStateMachine currentContext, EnemyStateFactory playerStateFactory, PandaBossStateMachine pandaContext)
     : base(currentContext, playerStateFactory)
 {
     bossContext = pandaContext;
 }
 public PandaBossTransitionState(EnemyHierarchicalStateMachine currentContext, EnemyStateFactory playerStateFactory, PandaBossStateMachine pandaContext)
     : base(currentContext, playerStateFactory)
 {
     this.pandaContext = pandaContext;
 }
Example #17
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            _weaponTextures = new Dictionary <string, Texture2D>();
            _spriteBatch    = new SpriteBatch(GraphicsDevice);
            // TODO: use this.Content to load your game content here
            _backgroundTexture = Content.Load <Texture2D>("background");
            _playerTexture     = Content.Load <Texture2D>("player");
            _enemyATexture     = Content.Load <Texture2D>("enemyA");
            _enemyBTexture     = Content.Load <Texture2D>("enemyB");
            _bossTexture       = Content.Load <Texture2D>("boss");

            foreach (var weapon in Enum.GetValues(typeof(WeaponName)))
            {
                _weaponTextures.Add(weapon.ToString(), Content.Load <Texture2D>(weapon.ToString()));
            }

            _wallTexture = Content.Load <Texture2D>("wall");

            _player = new Player1(Vector2.Zero, _playerTexture);
            _map    = new Map(GameSettings.MapSize, GameSettings.MapSize)
            {
                BackgroundTexture = _backgroundTexture
            };
            _map.AddMapObject(_player);
            _pathFinder = new PathFindingAdapter(_map);

            var enemyState = new EnemyStateFactory();

            var enemiesFactory = new EnemiesConcreteFactory();

            _enemies = new List <Enemy>
            {
                enemiesFactory.CreateEnemy(_pathFinder, EnemyType.Small, new Bazooka(), _player, 100, new Vector2(5 * GameSettings.TileSize, 5 * GameSettings.TileSize), _enemyATexture, enemyState.GetState("Moving"), _map),
                enemiesFactory.CreateEnemy(_pathFinder, EnemyType.Big, new Pistol(), _player, 100, new Vector2(3 * GameSettings.TileSize, 5 * GameSettings.TileSize), _enemyBTexture, enemyState.GetState("Moving"), _map),
                enemiesFactory.CreateEnemy(_pathFinder, EnemyType.Boss, new Pistol(), _player, 500, new Vector2(1 * GameSettings.TileSize, 1 * GameSettings.TileSize), _bossTexture, enemyState.GetState("Moving"), _map),
                enemiesFactory.CreateEnemy(_pathFinder, EnemyType.Boss, new Pistol(), _player, 250, new Vector2(1 * GameSettings.TileSize, 2 * GameSettings.TileSize), _bossTexture, enemyState.GetState("Moving"), _map)
            };

            Boss boss = (Boss)_enemies[2];

            boss.AddMinion(_enemies[0]);
            boss.AddMinion(_enemies[1]);
            boss.AddMinion(_enemies[3]);

            foreach (Enemy minion in boss.GetMinions())
            {
                _map.AddMapObject(minion);
            }

            var clonedEnemies = new List <Enemy>
            {
                _enemies[0].DeepCopy(),
                _enemies[0].DeepCopy(),
                _enemies[1].DeepCopy(),
                _enemies[1].DeepCopy()
            };

            clonedEnemies[0].Position = new Vector2(7 * GameSettings.TileSize, 5 * GameSettings.TileSize);
            clonedEnemies[1].Position = new Vector2(5 * GameSettings.TileSize, 9 * GameSettings.TileSize);
            clonedEnemies[2].Position = new Vector2(2 * GameSettings.TileSize, 4 * GameSettings.TileSize);
            clonedEnemies[3].Position = new Vector2(5 * GameSettings.TileSize, 1 * GameSettings.TileSize);

            _enemies.Add(clonedEnemies[0]);
            _enemies.Add(clonedEnemies[1]);
            _enemies.Add(clonedEnemies[2]);
            _enemies.Add(clonedEnemies[3]);

            Boss boss2 = (Boss)_enemies[3];

            boss2.AddMinion(_enemies[4]);

            _walls = new List <Wall>
            {
                new Wall {
                    Position = new Vector2(10 * GameSettings.TileSize, 10 * GameSettings.TileSize), Texture = _wallTexture
                },
                new Wall {
                    Position = new Vector2(11 * GameSettings.TileSize, 10 * GameSettings.TileSize), Texture = _wallTexture
                },
                new Wall {
                    Position = new Vector2(12 * GameSettings.TileSize, 10 * GameSettings.TileSize), Texture = _wallTexture
                },
                new Wall {
                    Position = new Vector2(13 * GameSettings.TileSize, 10 * GameSettings.TileSize), Texture = _wallTexture
                },
                new Wall {
                    Position = new Vector2(14 * GameSettings.TileSize, 10 * GameSettings.TileSize), Texture = _wallTexture
                },
                new Wall {
                    Position = new Vector2(15 * GameSettings.TileSize, 10 * GameSettings.TileSize), Texture = _wallTexture
                }
            };
            _weapons = new List <Weapon>();

            foreach (var enemy in _enemies)
            {
                _map.AddMapObject(enemy);
            }
            foreach (var wall in _walls)
            {
                _map.AddMapObject(wall);
            }
            foreach (var weapon in _weapons)
            {
                _map.AddMapObject(weapon);
            }
        }
Example #18
0
 public PandaBossAttackState(EnemyHierarchicalStateMachine currentContext, EnemyStateFactory playerStateFactory, bool desperate)
     : base(currentContext, playerStateFactory)
 {
     this.desperate = desperate;
 }
    public void EnemyFactoryResolved()
    {
        EnemyStateFactory stateFactory = Container.Resolve <EnemyStateFactory>();

        Assert.NotNull(stateFactory);
    }