public void Update()
        {
            IObjectLayer objectLayer = m_atlas.GetLayer(LayerType.Object) as IObjectLayer;

            Debug.Assert(objectLayer != null, "objectLayer != null");
            // for all game objects
            foreach (IGameObject gameObject in objectLayer.GetGameObjects())
            {
                List <Vector2I> coverTiles = gameObject.PhysicalEntity.CoverTiles();
                // for all covering tiles of this game objects
                foreach (Vector2I coverTile in coverTiles)
                {
                    IEnumerable <GameActorPosition> actorsAt = m_atlas.ActorsAt(new Vector2(coverTile),
                                                                                LayerType.TileLayers);
                    foreach (GameActorPosition result in actorsAt)
                    {
                        var tileDetector = result.Actor as IDetectorTile;

                        if (tileDetector == null)
                        {
                            continue;
                        }
                        if (tileDetector.RequiresCenterOfObject && !Atlas.Layers.Atlas.InsideTile(coverTile, gameObject.Position))
                        {
                            continue;
                        }

                        tileDetector.ObjectDetected(gameObject, m_atlas, m_tilesetTable);
                    }
                }
            }
        }
예제 #2
0
 private void InitializeObjectLayer()
 {
     if (this._objectLayerType == ObjectLayerType.SessionObjectLayer)
     {
         this._unitOfWork  = new UnitOfWork(this._dataLayer);
         this._objectLayer = new SessionObjectLayer(this._unitOfWork, true, null, null, null);
     }
     else
     {
         this._objectLayer = new SimpleObjectLayer(this._dataLayer);
     }
 }
예제 #3
0
 public CollisionChecker(IAtlas atlas)
 {
     m_atlas = atlas;
     m_objectLayer = atlas.GetLayer(LayerType.Object) as SimpleObjectLayer;
     if (m_objectLayer != null)
     {
         m_physicalEntities = m_objectLayer.GetPhysicalEntities();
     }
     else
     {
         throw new ArgumentException("ObjectLayer not found.");
     }
 }
예제 #4
0
 public CollisionChecker(IAtlas atlas)
 {
     m_atlas       = atlas;
     m_objectLayer = atlas.GetLayer(LayerType.Object) as SimpleObjectLayer;
     if (m_objectLayer != null)
     {
         m_physicalEntities = m_objectLayer.GetPhysicalEntities();
     }
     else
     {
         throw new ArgumentException("ObjectLayer not found.");
     }
 }
예제 #5
0
        static void Main()
        {
            ISerializableObjectLayer serializableObjectLayer =
                new SerializableObjectLayerServiceClient("BasicHttpBinding_ObjectLayer");

            serializableObjectLayer.CanLoadCollectionObjects.ToString();
            XpoDefault.DataLayer = null;
            XpoDefault.Session   = null;
            ObjectLayer          = new SerializableObjectLayerClient(serializableObjectLayer);
            using (UnitOfWork uow = new UnitOfWork(ObjectLayer)) {
                using (XPCollection <Customer> customers = new XPCollection <Customer>(uow)) {
                    foreach (Customer customer in customers)
                    {
                        Console.WriteLine("Company Name = {0}; ContactName = {1}",
                                          customer.CompanyName, customer.ContactName);
                    }
                }
            }
            Console.WriteLine("Press any key...");
            Console.ReadKey();
        }
예제 #6
0
        public void Dispose()
        {
            if (_IDbConnection != null)
            {
                _IDbConnection.Close();
                _IDbConnection.Dispose();
                _IDbConnection = null;
            }

            if (_dataStore != null)
            {
                _dataStore = null;
            }

            if (_dataLayer != null)
            {
                _dataLayer.Dispose();
                _dataLayer = null;
            }

            if (_unitOfWork != null)
            {
                _unitOfWork.Dispose();
                _unitOfWork = null;
            }


            if (_objectLayer != null)
            {
                _objectLayer = null;
            }

            if (_session != null)
            {
                _session.Dispose();
                _session = null;
            }

            GC.Collect();
        }
예제 #7
0
        public bool Add(GameActorPosition gameActorPosition, bool collidesWithObstacles = false)
        {
            if (collidesWithObstacles)
            {
                IObjectLayer gameObjectLayer = GetLayer(LayerType.Object) as IObjectLayer;
                Debug.Assert(gameObjectLayer != null, "gameObjectLayer != null");
                Vector2         position = gameActorPosition.Position;
                GameActor       actor    = gameActorPosition.Actor;
                IPhysicalEntity physicalEntity;
                if (actor is IGameObject)
                {
                    physicalEntity          = (actor as IGameObject).PhysicalEntity;
                    physicalEntity.Position = position;
                }
                else if (actor is Tile)
                {
                    physicalEntity = (actor as Tile).GetPhysicalEntity(new Vector2I(gameActorPosition.Position));
                }
                else
                {
                    throw new ArgumentException("actor is unknown Type");
                }
                bool anyCollision = gameObjectLayer.GetPhysicalEntities().Any(x => x.CollidesWith(physicalEntity));
                if (anyCollision)
                {
                    return(false);
                }
                bool anyObstacleOnPosition =
                    GetObstaceLayers().Any(x => x.GetActorAt(new Vector2I(gameActorPosition.Position)) != null);
                if (anyObstacleOnPosition)
                {
                    return(false);
                }
            }

            ILayer <GameActor> layer = GetLayer(gameActorPosition.Layer);

            return(layer.Add(gameActorPosition));
        }
 public AdventureWorks2016UnitOfWork(IObjectLayer layer, params IDisposable[] disposeOnDisconnect) : base(layer, disposeOnDisconnect)
 {
 }
 public sistemafacturaUnitOfWork(IObjectLayer layer, params IDisposable[] disposeOnDisconnect) : base(layer, disposeOnDisconnect)
 {
 }
예제 #10
0
        /// <summary>
        /// Loads map from specified path, creates tiles and objects and put them into new Atlas object.
        /// </summary>
        /// <param name="map">Deserialized .tmx file</param>
        /// <param name="tilesetTable">Table of numbers of game object and theirs classes</param>
        /// <param name="initializer"></param>
        /// <returns>Atlas with initial state of ToyWorld</returns>
        public static IAtlas LoadMap(Map map, TilesetTable tilesetTable, Action <GameActor> initializer)
        {
            IAtlas atlas = new Atlas.Layers.Atlas();

            map.Tilesets = map.Tilesets.OrderBy(x => x.Firstgid).ToList();

            foreach (LayerType layerType in Enum.GetValues(typeof(LayerType)).Cast <LayerType>())
            {
                string layerName = Enum.GetName(typeof(LayerType), layerType);

                Debug.Assert(layerName != null);

                int  type       = (int)layerType;
                bool simpleType = type > 0 && (type & (type - 1)) == 0;
                if (!simpleType)
                {
                    continue;
                }

                if (layerName.Contains("Object"))
                {
                    ObjectGroup objectLayer = map.ObjectGroups.FirstOrDefault(x => x.Name == layerName);
                    if (objectLayer == null)    // TMX does not contain such layer
                    {
                        Log.Instance.Warn("Layer " + layerName + " not found in given .tmx file!");
                        continue;
                    }
                    IObjectLayer filledObjectLayer = FillObjectLayer(
                        atlas,
                        objectLayer,
                        layerType,
                        initializer,
                        map.Tilesets,
                        map.Tilewidth,
                        map.Tileheight,
                        map.Height
                        );
                    atlas.ObjectLayers.Add(
                        filledObjectLayer);
                }
                else
                {
                    Layer tileLayer = map.Layers.FirstOrDefault(x => x.Name == layerName);
                    if (tileLayer == null)  // TMX does not contain such layer
                    {
                        Log.Instance.Warn("Layer " + layerName + " not found in given .tmx file!");
                        continue;
                    }
                    Random     rnd             = new Random(); // Shared across all layers
                    ITileLayer filledTileLayer = FillTileLayer(
                        tileLayer,
                        layerType,
                        atlas.StaticTilesContainer,
                        tilesetTable,
                        initializer,
                        rnd);
                    atlas.TileLayers.Add(
                        filledTileLayer);
                }
            }

            FillNamedAreas(atlas, map);

            SetTileRelations(atlas, map);

            return(atlas);
        }
예제 #11
0
 public UnityUnitOfWork(IObjectLayer layer, IUnityContainer unityContainer, params IDisposable[] disposeOnDisconnect)
     : base(layer, disposeOnDisconnect)
 {
     SetUnityContainer(unityContainer);
 }
예제 #12
0
        public IGameObject GetObject(string name)
        {
            IObjectLayer layer = (IObjectLayer)m_atlas.GetLayer(LayerType.Object);

            return(layer.GetGameObject(name));
        }
예제 #13
0
 public OrmCookbookUnitOfWork(IObjectLayer layer, params IDisposable[] disposeOnDisconnect) : base(layer, disposeOnDisconnect)
 {
 }
 public FiwareHubUnitOfWork(IObjectLayer layer, params IDisposable[] disposeOnDisconnect) : base(layer, disposeOnDisconnect)
 {
 }
 public FirewallRulesAppUnitOfWork(IObjectLayer layer, params IDisposable[] disposeOnDisconnect) : base(layer, disposeOnDisconnect)
 {
 }
예제 #16
0
 public cds_pegasusUnitOfWork(IObjectLayer layer, params IDisposable[] disposeOnDisconnect) : base(layer, disposeOnDisconnect)
 {
 }
 public FastUnitOfWork(IObjectLayer layer, params IDisposable[] disposeOnDisconnect)
     : base(layer, disposeOnDisconnect)
 {
     TrackPropertiesModifications = true;
 }
 public EndpointCheckerUnitOfWork(IObjectLayer layer, params IDisposable[] disposeOnDisconnect) : base(layer, disposeOnDisconnect)
 {
 }
예제 #19
0
 public DxSampleModelUnitOfWork(IObjectLayer layer, params IDisposable[] disposeOnDisconnect) : base(layer, disposeOnDisconnect)
 {
 }
 public TimetableUnitOfWork(IObjectLayer layer, params IDisposable[] disposeOnDisconnect) : base(layer, disposeOnDisconnect)
 {
 }
예제 #21
0
        public Vector2 WhereIsObject(string name)
        {
            IObjectLayer layer = (IObjectLayer)m_atlas.GetLayer(LayerType.Object);

            return(layer.GetGameObject(name).Position);
        }
예제 #22
0
 public XpandUnitOfWork(IObjectLayer layer, params IDisposable[] disposeOnDisconnect)
     : base(layer, disposeOnDisconnect) {
 }
 public RapidCM_PGS_DevUnitOfWork(IObjectLayer layer, params IDisposable[] disposeOnDisconnect) : base(layer, disposeOnDisconnect)
 {
 }