예제 #1
0
        public IGameObject BuildGameObject(GameObjectSerialized gameObjectSerialized)
        {
            if (gameObjectSerialized.GameObjectType != SerializedName)
            {
                throw new ArgumentException("Wrong serialized object");
            }

            var enemyInputComponent = new EnemyInputComponent(_gameObjectLocator,
                                                              _geometryMathService, _enemyData);

            var enemyPhysicComponent = new PhysicComponent(_enemyData.Speed);

            var enemyLogicComponent = new EnemyLogicComponent(_gameObjectLocator,
                                                              _fireCommand, _geometryMathService, _enemyData);

            var enemyGraphicComponent = new EnemyGraphicComponent(_consoleWriter,
                                                                  _enemyData.DisplayCharNormalState, _enemyData.DisplayCharDestructionState);

            var enemy = new GameObject(enemyInputComponent,
                                       enemyPhysicComponent, enemyLogicComponent, enemyGraphicComponent);

            enemy.X = gameObjectSerialized.X;
            enemy.Y = gameObjectSerialized.Y;

            enemy.Width  = _enemyData.Width;
            enemy.Height = _enemyData.Height;

            return(enemy);
        }
예제 #2
0
        public IGameObject BuildGameObject(GameObjectSerialized gameObjectSerialized)
        {
            if (gameObjectSerialized.GameObjectType != SerializedName)
            {
                throw new ArgumentException("Wrong serialized object");
            }

            var playerInputComponent  = new PlayerInputComponent();
            var playerPhysicComponent = new PhysicComponent(_playerData.Speed);
            var playerLogicComponent  = new PlayerLogicComponent(_fireCommand, _consoleWriter,
                                                                 _geometryMathService);

            var playerGraphicComponent = new PlayerGraphicComponent(_consoleWriter,
                                                                    _geometryMathService, _playerData);

            var user = new GameObject(playerInputComponent,
                                      playerPhysicComponent, playerLogicComponent, playerGraphicComponent);

            user.X = gameObjectSerialized.X;
            user.Y = gameObjectSerialized.Y;

            user.Width  = _playerData.Width;
            user.Height = _playerData.Height;

            return(user);
        }
예제 #3
0
        public Entity CreateShip(Vector3d position)
        {
            var c = new Entity[] {
                Create("Resources/Models/cube.obj", new Vector3d(0, -1, -1), new Vector3d(0.5f, 0.5f, 0.5f)),
                Create("Resources/Models/cube.obj", new Vector3d(0, -1, 0), new Vector3d(0.5f, 0.5f, 0.5f)),
                Create("Resources/Models/cube.obj", new Vector3d(0, -1, 1), new Vector3d(0.5f, 0.5f, 0.5f)),
                Create("Resources/Models/table.obj", new Vector3d(0, 0, -1), new Vector3d(0.5f, 0.5f, 0.5f))
            };

            var p = new PhysicComponent();

            foreach (var i in c)
            {
                p.BoundingSphere.Radius = Math.Max(
                    p.BoundingSphere.Radius,
                    i.Get <BaseComponent>().Position.Length + i.Get <PhysicComponent>().BoundingSphere.Radius
                    );
            }
            p.BoundingBox.Max = new Vector3d(p.BoundingSphere.Radius);
            p.BoundingBox.Min = -p.BoundingBox.Max;

            var e = new Entity("Ship", true)
                    .Add(new BaseComponent()
            {
                Position = position
            })
                    .Add(new InputComponent()
            {
                Speed = 10.0, Type = InputControlType.Force
            })
                    .Add(new GraphicComponent())
                    .Add(p)
                    .Add(new TargetComponent())
                    .Add(new AIComponent())
                    .Add(new ChunkLoaderComponent())
                    .Add(new CollisionComponent()
            {
                Group = CollisionGroups.All
            });

            foreach (var i in c)
            {
                i.Get <BaseComponent>().ParentName = e.Name;
            }

            EntityManager.AddEntity(e);

            return(e);
        }
예제 #4
0
        private static IGameWorld CreateWorld(IConsoleWriter consoleWriter)
        {
            var gameObjectLocator = new GameObjectLocator();

            var lineIntersectionResolver = new LianBarskyIntersectionResolver();
            var geometryMathService      = new GeometryMathService(lineIntersectionResolver);

            var serializedGameObjectDataProvider = new SerializedGameObjectDataProvider();
            var enemyData  = serializedGameObjectDataProvider.GetEnemyData();
            var playerData = serializedGameObjectDataProvider.GetPlayerData();
            var stoneData  = serializedGameObjectDataProvider.GetStoneData();
            var shellData  = serializedGameObjectDataProvider.GetShellData();

            var shellInputComponent   = new ShellInputComponent();
            var shellPhysicComponent  = new PhysicComponent(shellData.Speed);
            var shellLogicComponent   = new ShellLogicComponent();
            var shellGraphicComponent = new CharGraphicComponent(shellData.DisplayChar, consoleWriter);
            var shell = new GameObject(shellInputComponent, shellPhysicComponent,
                                       shellLogicComponent, shellGraphicComponent);

            shell.Width  = shellData.Width;
            shell.Height = shellData.Height;
            var fireCommand = new FireCommand(shell);

            var serializedGameObjectBuilders = new List <ISerializedGameObjectBuilder>()
            {
                new StoneBuilder(consoleWriter, stoneData),
                new PlayerBuilder(consoleWriter, geometryMathService, fireCommand, playerData),
                new EnemyBuilder(consoleWriter, gameObjectLocator, geometryMathService, fireCommand, enemyData),
                new WinPlatformBuilder(consoleWriter, gameObjectLocator, geometryMathService)
            };

            var gameObjectBuilder = new GameObjectBuilder(serializedGameObjectBuilders, gameObjectLocator);

            var worldProvider = new WorldProvider(gameObjectBuilder, geometryMathService, consoleWriter);
            var world         = worldProvider.GetWorld(1);

            return(world);
        }
        public static PhysicComponent CreateComponent()
        {
            PhysicComponent component = new PhysicComponent();

            return component;
        }