예제 #1
0
파일: Player.cs 프로젝트: CarimA/RPG
        public Player(Config config, IAssetLoader assetLoader)
        {
            Name = "Player";

            PlayerData = new PlayerData();
            Components.Add(PlayerData.Position);

            CanMove = true;

            Components.Add(CCollisionBound.Circle(8, 6));
            Components.Add(new CSize(new Vector2(16, 16)));
            Components.Add(Input = new CInputState());
            Components.Add(new CKeyboard(config.ControlsKeyboard));
            Components.Add(new CController(PlayerIndex.One, config.ControlsGamepad, config.Deadzone / 100f));
            Components.Add(new CInputPriority(InputPriority.GamePad));
            Components.Add(new CTarget());
            Components.Add(new CRunning());
            Components.Add(new CSprite(assetLoader.Get <Texture2D>("sprites/player.png"), new Vector2(16, 32)));
            Components.Add(new CMapEntity());
            Components.Add(new CMaskEntity());
            Components.Add(new CFringeEntity {
                Opacity = 0.35f
            });

            var animation = new CAnimation()
            {
                Loop = true
            };

            animation.AddAnimation("idle-down", new List <AnimationFrame>()
            {
                new AnimationFrame(new Rectangle(0, 0, 32, 48), 0f)
            });

            animation.AddAnimation("walk-down", new List <AnimationFrame>()
            {
                new AnimationFrame(new Rectangle(32, 0, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(64, 0, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(96, 0, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(128, 0, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(160, 0, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(192, 0, 32, 48), 0.135f)
            });

            animation.AddAnimation("run-down", new List <AnimationFrame>()
            {
                new AnimationFrame(new Rectangle(32, 0, 32, 48), 0.08f),
                new AnimationFrame(new Rectangle(64, 0, 32, 48), 0.055f),
                new AnimationFrame(new Rectangle(224, 0, 32, 48), 0.125f),
                new AnimationFrame(new Rectangle(128, 0, 32, 48), 0.08f),
                new AnimationFrame(new Rectangle(160, 0, 32, 48), 0.055f),
                new AnimationFrame(new Rectangle(256, 0, 32, 48), 0.125f)
            });


            animation.AddAnimation("idle-up", new List <AnimationFrame>()
            {
                new AnimationFrame(new Rectangle(0, 48, 32, 48), 0f)
            });

            animation.AddAnimation("walk-up", new List <AnimationFrame>()
            {
                new AnimationFrame(new Rectangle(32, 48, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(64, 48, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(96, 48, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(128, 48, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(160, 48, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(192, 48, 32, 48), 0.135f)
            });

            animation.AddAnimation("run-up", new List <AnimationFrame>()
            {
                new AnimationFrame(new Rectangle(32, 48, 32, 48), 0.08f),
                new AnimationFrame(new Rectangle(64, 48, 32, 48), 0.055f),
                new AnimationFrame(new Rectangle(224, 48, 32, 48), 0.125f),
                new AnimationFrame(new Rectangle(128, 48, 32, 48), 0.08f),
                new AnimationFrame(new Rectangle(160, 48, 32, 48), 0.055f),
                new AnimationFrame(new Rectangle(256, 48, 32, 48), 0.125f)
            });


            animation.AddAnimation("idle-right", new List <AnimationFrame>()
            {
                new AnimationFrame(new Rectangle(0, 96, 32, 48), 0f)
            });

            animation.AddAnimation("walk-right", new List <AnimationFrame>()
            {
                new AnimationFrame(new Rectangle(32, 96, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(64, 96, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(96, 96, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(128, 96, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(160, 96, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(192, 96, 32, 48), 0.135f)
            });

            animation.AddAnimation("run-right", new List <AnimationFrame>()
            {
                new AnimationFrame(new Rectangle(32, 96, 32, 48), 0.08f),
                new AnimationFrame(new Rectangle(64, 96, 32, 48), 0.055f),
                new AnimationFrame(new Rectangle(224, 96, 32, 48), 0.125f),
                new AnimationFrame(new Rectangle(128, 96, 32, 48), 0.08f),
                new AnimationFrame(new Rectangle(160, 96, 32, 48), 0.055f),
                new AnimationFrame(new Rectangle(256, 96, 32, 48), 0.125f)
            });


            animation.AddAnimation("idle-left", new List <AnimationFrame>()
            {
                new AnimationFrame(new Rectangle(0, 144, 32, 48), 0f)
            });

            animation.AddAnimation("walk-left", new List <AnimationFrame>()
            {
                new AnimationFrame(new Rectangle(32, 144, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(64, 144, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(96, 144, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(128, 144, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(160, 144, 32, 48), 0.135f),
                new AnimationFrame(new Rectangle(192, 144, 32, 48), 0.135f)
            });

            animation.AddAnimation("run-left", new List <AnimationFrame>()
            {
                new AnimationFrame(new Rectangle(32, 144, 32, 48), 0.08f),
                new AnimationFrame(new Rectangle(64, 144, 32, 48), 0.055f),
                new AnimationFrame(new Rectangle(224, 144, 32, 48), 0.125f),
                new AnimationFrame(new Rectangle(128, 144, 32, 48), 0.08f),
                new AnimationFrame(new Rectangle(160, 144, 32, 48), 0.055f),
                new AnimationFrame(new Rectangle(256, 144, 32, 48), 0.125f)
            });


            animation.SetDefaultAnimation("idle-down");
            animation.Play("idle-down");

            Components.Add(animation);
        }
예제 #2
0
파일: DrawMap.cs 프로젝트: CarimA/RPG
        public DrawMap(GameState gameState, IOverworld overworld, VirtualResolution virtualResolution, SpriteBatch spriteBatch, IRenderer renderer, IAssetLoader assetLoader, Camera camera, Primitive primitive, GameDate gameDate)
        {
            _random = new Random();

            _overworld         = overworld;
            _virtualResolution = virtualResolution;
            _spriteBatch       = spriteBatch;
            _renderer          = renderer;
            _assetLoader       = assetLoader;
            _camera            = camera;
            _primitive         = primitive;

            _tempTileMap  = _assetLoader.Get <Texture2D>("debug/outmap.png");
            _superTileset = _assetLoader.Get <Texture2D>("debug/supertileset.png");

            _tileMapFilter = new TilemapFilter(_renderer, _spriteBatch,
                                               _assetLoader.Get <Effect>("shaders/tilemap.fx"), 16);
            _tileMapFilter.SetSuperTileset(_superTileset);
            _tileMapFilter.SetTileMapTexture(_tempTileMap);

            _waterReflectionFilter = new WaterReflectionFilter(_renderer, _spriteBatch,
                                                               _assetLoader.Get <Effect>("shaders/water_reflection.fx"));

            _waterFilter = new WaterFilter(_renderer, _spriteBatch, _camera,
                                           _assetLoader.Get <Effect>("shaders/water.fx"),
                                           _assetLoader.Get <Texture2D>("ui/noise.png"),
                                           _assetLoader.Get <Texture2D>("ui/noise2.png"), _virtualResolution);

            _waterDisplacementFilter = new WaterDisplacementFilter(_renderer, _spriteBatch, _virtualResolution,
                                                                   _assetLoader.Get <Effect>("shaders/displace.fx"),
                                                                   _assetLoader.Get <Texture2D>("ui/displacement.png"),
                                                                   _assetLoader.Get <Texture2D>("ui/displacement2.png"));

            _dayNightFilter = new DayNightFilter(_renderer, _spriteBatch, gameDate,
                                                 _assetLoader.Get <Effect>("shaders/average.fx"),
                                                 _assetLoader.Get <Effect>("shaders/color.fx"),
                                                 new List <(float, Texture2D)>()
            {
                (0, assetLoader.Get <Texture2D>("luts/daycycle1.png")),
                (0.1875f, assetLoader.Get <Texture2D>("luts/daycycle1.png")),
                (0.208334f, assetLoader.Get <Texture2D>("luts/daycycle2.png")),
                (0.30208333f, assetLoader.Get <Texture2D>("luts/daycycle3.png")),
                (0.41667f, assetLoader.Get <Texture2D>("luts/daycycle4.png")),
                (0.46f, assetLoader.Get <Texture2D>("luts/daycycle5.png")),
                (0.54f, assetLoader.Get <Texture2D>("luts/daycycle5.png")),
                (0.58333f, assetLoader.Get <Texture2D>("luts/daycycle6.png")),
                (0.6875f, assetLoader.Get <Texture2D>("luts/daycycle7.png")),
                (0.7708333f, assetLoader.Get <Texture2D>("luts/daycycle8.png")),
                (0.82291667f, assetLoader.Get <Texture2D>("luts/daycycle9.png")),
                (0.90625f, assetLoader.Get <Texture2D>("luts/daycycle10.png"))
            });

            CreateRenderTargets();

            _windTrail = new GameObject();
            CAnimation windTrailAnimation;

            _windTrail.Components.Add(new CPosition(Vector2.Zero));
            _windTrail.Components.Add(new CSprite(assetLoader.Get <Texture2D>("ui/windtrail.png"), Vector2.Zero));
            _windTrail.Components.Add(windTrailAnimation = new CAnimation()
            {
                Loop = false, OnComplete = OnComplete
            });
            windTrailAnimation.AddAnimation("effect", new List <AnimationFrame>()
            {
                new AnimationFrame(new Rectangle(0, 0, 512, 54), 0.07f),
                new AnimationFrame(new Rectangle(0, 64, 512, 54), 0.07f),
                new AnimationFrame(new Rectangle(0, 128, 512, 54), 0.07f),
                new AnimationFrame(new Rectangle(0, 192, 512, 54), 0.07f),
                new AnimationFrame(new Rectangle(0, 256, 512, 54), 0.07f),
                new AnimationFrame(new Rectangle(0, 320, 512, 54), 0.07f),
                new AnimationFrame(new Rectangle(0, 384, 512, 54), 0.07f),
                new AnimationFrame(new Rectangle(0, 448, 512, 54), 0.07f),
                new AnimationFrame(new Rectangle(0, 512, 512, 54), 0.07f),
            });
            _windTrail.Components.Add(new CFringeEntity {
                Opacity = 0.15f
            });

            gameState.Stage.GameObjects.Add(_windTrail);
        }