Ejemplo n.º 1
0
        void Update(EngineUpdateEvent e)
        {
            var map = Resolve <IMapManager>().Current;

            if (_locked)
            {
                _position += new Vector2(_velocity.X, _velocity.Y) * e.DeltaSeconds;
            }
            else
            {
                var party = Resolve <IParty>();
                if (map == null || party == null || !party.StatusBarOrder.Any())
                {
                    return;
                }
                var         leader   = party[party.Leader];
                var         position = leader.GetPosition() * map.TileSize;
                const float lerpRate = 3.0f; // TODO: Data driven
                _position = new Vector2(
                    Util.Lerp(_position.X, position.X, lerpRate * e.DeltaSeconds),
                    Util.Lerp(_position.Y, position.Y, lerpRate * e.DeltaSeconds));
            }

            if (map == null)
            {
                return;
            }
            _camera.Position = new Vector3(_position, map.BaseCameraHeight);
        }
Ejemplo n.º 2
0
    void Update(EngineUpdateEvent e)
    {
        var map = TryResolve <IMapManager>()?.Current;

        if (map == null)
        {
            _locked = true;
        }

        if (_locked)
        {
            if (_velocity.X == 0 && _velocity.Y == 0 && _velocity.Z == 0)
            {
                return;
            }
            _position += _velocity * e.DeltaSeconds;
        }
        else
        {
            var party  = Resolve <IParty>();
            var config = Resolve <GameConfig>().Visual.Camera2D;
            if (map == null || party == null || !party.StatusBarOrder.Any())
            {
                return;
            }
            var leader = party.Leader;
            if (leader == null)
            {
                return;
            }

            var position     = leader.GetPosition() * map.TileSize;
            var curPosition2 = new Vector2(_position.X, _position.Y);
            var position2    = new Vector2(position.X, position.Y);

            if ((curPosition2 - position2).LengthSquared() < 0.25f)
            {
                _position = new Vector3(position2, _position.Z);
            }
            else
            {
                _position = new Vector3(
                    ApiUtil.Lerp(_position.X, position.X, config.LerpRate * e.DeltaSeconds),
                    ApiUtil.Lerp(_position.Y, position.Y, config.LerpRate * e.DeltaSeconds),
                    map.BaseCameraHeight);
            }
        }

        _camera.Position = _position;
    }
Ejemplo n.º 3
0
        void OnEngineUpdate(EngineUpdateEvent e)
        {
            _elapsedTimeThisGameFrame += e.DeltaSeconds;
            var config = Resolve <GameConfig>();
            var tickDurationSeconds = 1.0f / config.Time.IdleTicksPerSecond;

            // If the game was paused for a while don't try and catch up
            if (_elapsedTimeThisGameFrame > 4 * tickDurationSeconds)
            {
                _elapsedTimeThisGameFrame = 4 * tickDurationSeconds;
            }

            while (_elapsedTimeThisGameFrame >= tickDurationSeconds)
            {
                _elapsedTimeThisGameFrame -= tickDurationSeconds;
                Raise(_event);
            }
        }
Ejemplo n.º 4
0
        void EngineUpdate(EngineUpdateEvent e)
        {
            if (_lerp >= 1.0f)
            {
                return;
            }

            var config  = Resolve <GameConfig>();
            var elapsed = (DateTime.Now - _lastChangeTime).TotalSeconds;
            var oldLerp = _lerp;

            _lerp = elapsed > config.UI.Transitions.InventoryChangLerpSeconds
                ? 1.0f
                : (float)(elapsed / config.UI.Transitions.InventoryChangLerpSeconds);

            if (Math.Abs(_lerp - oldLerp) > float.Epsilon)
            {
                Raise(new InventoryChangedEvent(new InventoryId(Id)));
            }
        }
Ejemplo n.º 5
0
        void OnUpdate(EngineUpdateEvent e)
        {
            _totalTime += e.DeltaSeconds;

            if (_totalTime - _lastCleanup > CacheCheckIntervalSeconds)
            {
                lock (_syncRoot)
                {
                    var keys = _cache.Keys.ToList();
                    foreach (var key in keys)
                    {
                        var entry = _cache[key];
                        if ((DateTime.Now - entry.LastAccessDateTime).TotalSeconds > CacheLifetimeSeconds)
                        {
                            _cache.Remove(key);
                            entry.Dispose();
                        }
                    }

                    _lastCleanup = _totalTime;
                }
            }
        }
Ejemplo n.º 6
0
        void OnUpdate(EngineUpdateEvent e)
        {
            _totalTime += e.DeltaSeconds;
            var config = Resolve <CoreConfig>().Visual.TextureManager;

            if (_totalTime - _lastCleanup > config.CacheCheckIntervalSeconds)
            {
                lock (_syncRoot)
                {
                    var keys = _cache.Keys.ToList();
                    foreach (var key in keys)
                    {
                        var entry = _cache[key];
                        if ((DateTime.Now - entry.LastAccessDateTime).TotalSeconds > config.CacheLifetimeSeconds)
                        {
                            _cache.Remove(key);
                            entry.Dispose();
                        }
                    }

                    _lastCleanup = _totalTime;
                }
            }
        }