Пример #1
0
        public override void OnCreated(AsgardBase instance, Entity entity)
        {
            var world = instance.LookupSystem<Midgard>();
            var manager = world.EntityManager;
            var body = world.CreateComponent(entity, BodyDef).Body;

            CircleShape shape = new CircleShape(1, 1);
            var fix = body.CreateFixture(shape);
            fix.Restitution = 1;
            fix.Friction = 1;
        }
Пример #2
0
        internal static void Init(AsgardBase instance)
        {
            _instance = instance;
            _manager = instance.EntityManager;

            var orderedList = _rawLookupTypes.OrderBy(t =>
            {
                return t.ToString().GetHashCode();
            });

            ushort index = 0;
            foreach(var item in orderedList)
            {
                _typeLookup[index] = item;
                _typeLookupReverse[item] = index;
                index++;
            }
        }
Пример #3
0
        private void LoadCollisions(AsgardBase Base, TiledMap map)
        {
            #region build collision world
            var viewMap = map;
            var midgard = Base.LookupSystem<Midgard>();
            var world = midgard.GetWorld();

            var layer = viewMap.Layers.Last() as TiledTileLayer;
            {
                var layerField = typeof(TiledMap).GetField("_layers", BindingFlags.NonPublic | BindingFlags.Instance);

                List<TiledLayer> layers = layerField.GetValue(viewMap) as List<TiledLayer>;
                layers.Remove(layer);
            }

            for (var y = 0; y < layer.Height; y++)
            {
                for (var x = 0; x < layer.Width; x++)
                {
                    var tile = layer.GetTile(x, y);

                    if (tile.Id == 1702)// hack
                    {
                        var xTile = tile.X;
                        var yTile = tile.Y;

                        Vector2 centerPoint = new Vector2((xTile * (viewMap.TileWidth - 1)) + ((viewMap.TileWidth - 1) / 2),
                            (yTile * (viewMap.TileHeight - 1)) + ((viewMap.TileHeight - 1) / 2));

                        Vector2 upperLeftPos = new Vector2(xTile * (viewMap.TileWidth - 1),
                            (yTile) * (viewMap.TileHeight - 1));

                        var body = BodyFactory.CreateRectangle(world,
                            (viewMap.TileWidth * _worldfactor) - 0.01f,
                            (viewMap.TileHeight * _worldfactor) - 0.01f,
                            1.0f);

                        body.Restitution = 1f;
                        body.Position = new Vector2(
                            centerPoint.X * _worldfactor,
                            centerPoint.Y * _worldfactor);
                        body.CollisionCategories = FarseerPhysics.Dynamics.Category.Cat1;
                        body.CollidesWith = FarseerPhysics.Dynamics.Category.Cat2;
                    }
                }
            }
            #endregion
        }
Пример #4
0
 public override void OnCreated(AsgardBase instance, Entity entity)
 {
     var strData = StringData.Value.Split(',');
     TileData = strData.Select(s => Convert.ToInt32(s)).ToArray();
 }
Пример #5
0
        public void Load(AsgardBase Base, TiledMap map)
        {
            Width = map.Width;
            Height = map.Height;
            TileWidth = map.TileWidth;
            TileHeight = map.TileHeight;
            FirstId = 1;

            var layers = map.Layers.ToList();
            if (layers.Count < 5) return;

            Layer1 = new LayerData(layers[0] as TiledTileLayer);
            Layer2 = new LayerData(layers[1] as TiledTileLayer);
            Layer3 = new LayerData(layers[2] as TiledTileLayer);
            Layer4 = new LayerData(layers[3] as TiledTileLayer);
            Layer5 = new LayerData(layers[4] as TiledTileLayer);

            LoadCollisions(Base, map);
        }
Пример #6
0
        public override void OnCreated(AsgardBase instance, Entity entity)
        {
            var mapComponent = entity.GetComponent<MapComponent>();
            mapComponent.Map = new TiledMap(mapComponent.Device, Width, Height, TileWidth, TileHeight);
            mapComponent.Map.CreateTileset(mapComponent.Texture, FirstId, TileWidth, TileHeight, 1, 1);

            mapComponent.Map.CreateTileLayer("1", Layer1.Value.Width, Layer1.Value.Height, Layer1.Value.TileData);
            mapComponent.Map.CreateTileLayer("2", Layer2.Value.Width, Layer2.Value.Height, Layer2.Value.TileData);
            mapComponent.Map.CreateTileLayer("3", Layer3.Value.Width, Layer3.Value.Height, Layer3.Value.TileData);
            mapComponent.Map.CreateTileLayer("4", Layer4.Value.Width, Layer4.Value.Height, Layer4.Value.TileData);
            mapComponent.Map.CreateTileLayer("5", Layer5.Value.Width, Layer5.Value.Height, Layer5.Value.TileData);

            LoadCollisions(instance, mapComponent.Map);
        }
Пример #7
0
 public override void OnCreated(AsgardBase instance, Entity entity)
 {
 }
Пример #8
0
 public AsgardModule(AsgardBase server)
 {
     this.ValueType = JSValueType.Object;
     _instance = server;
     Value = Wrap(_instance);
 }
Пример #9
0
 public EntityModule(AsgardBase server)
 {
     _instance = server;
 }
Пример #10
0
        public override void OnCreated(AsgardBase instance, Entity entity)
        {
            var text = Content.Load<Texture2D>("roguelikeChar_transparent");

            TextureRegion2D region = new TextureRegion2D(text, 0, 0, 16, 16);
            _sprite = new Sprite(region);
            _sprite.Scale = new Vector2(1, 1);
            _owner = entity;

            var midgard = instance.LookupSystem<Midgard>();
            CreatePhysics(midgard, entity, false);
        }
Пример #11
0
        public override void OnDestroyed(AsgardBase instance, Entity entity, bool destoryEntity=true)
        {
            var midgard = instance.LookupSystem<Midgard>();
            var phyComp = entity.GetComponent<Physics2dComponent>();
            if (phyComp != null && phyComp.Body != null)
            {
                midgard.DeleteBody(phyComp);
            }

            ObjectMapper.DestroyEntity(entity, destoryEntity);
        }