示例#1
0
            protected override void AddLayer(ActorLayer layer)
            {
                // 让角色渐进式出现
                FadeTo fade = FadeOut();

                fade.SetActionListener(new RotationAction());
            }
            internal static unsafe IReadOnlyCollection <Actor> Invoke(UObject WorldContextObject, ActorLayer ActorLayer)
            {
                long *p = stackalloc long[] { 0L, 0L, 0L, 0L, 0L, 0L };
                byte *b = (byte *)p;

                *((IntPtr *)(b + 0))     = WorldContextObject;
                *((ActorLayer *)(b + 8)) = ActorLayer;
                Main.GetProcessEvent(LayersBlueprintLibrary.DefaultObject, GetActors_ptr, new IntPtr(p));;
                //TODO: array TArray ReturnValue
                return(UObject.ToUObjectCollection <Actor>(b + 24));
            }
        }
示例#3
0
            // 首次注入Layer时调用此函数
            protected override void AddLayer(ActorLayer layer)
            {
                // 坐标矫正,用以让角色居于瓦片中心
                int offsetX = (GetLLayer().GetField2D().GetTileWidth() - this
                               .GetWidth()) / 2;
                int offsetY = (GetLLayer().GetField2D().GetTileWidth() - this
                               .GetHeight()) / 2;

                // 初始化角色在Layer中坐标
                SetLocation(startX + offsetX, startY + offsetY);
                // 命令角色向指定坐标自行移动(参数为false为四方向寻径,为true时八方向),并返回移动控制器
                // PS:endX与endY非显示位置,所以不必矫正
                MoveTo move = MoveTo(endX, endY, false);

                // 矫正坐标,让角色居中
                move.SetOffset(offsetX, offsetY);
                // 启动角色事件监听
                move.SetActionListener(new MoveAction(move, layer));
                // 设定移动速度
                move.SetSpeed(speed);
            }
示例#4
0
        public World(Game game, int seed, GameSave save)
        {
            Game = game;

            Map = new Map(this, game.MapType, seed, save.Level, save.Difficulty);

            var bounds = Map.Bounds;

            TerrainLayer = new TerrainLayer(bounds);
            ShroudLayer  = new ShroudLayer(bounds);
            WallLayer    = new WallLayer(bounds, ShroudLayer);
            PhysicsLayer = new PhysicsLayer(bounds);
            SmudgeLayer  = new SmudgeLayer();

            ActorLayer    = new ActorLayer(bounds);
            WeaponLayer   = new WeaponLayer();
            ParticleLayer = new ParticleLayer(bounds);

            PathfinderLayer = new PathfinderLayer(bounds);

            WeatherManager = new WeatherManager(this, game.MapType);
        }
示例#5
0
 protected override void AddLayer(ActorLayer layer)
 {
     this.x = this.GetX();
     this.y = this.GetY();
 }
示例#6
0
 public MoveAction(MoveTo move, ActorLayer layer)
 {
     this.move  = move;
     this.layer = layer;
 }