NScumm.Scumm.ScummEngine.GetObjectXYPos C# (CSharp) Метод

GetObjectXYPos() защищенный Метод

protected GetObjectXYPos ( int obj, System.Point &p, int &dir ) : void
obj int
p System.Point
dir int
Результат void
        protected void GetObjectXYPos(int obj, out Point p, out int dir)
        {
            var idx = GetObjectIndex(obj);
            var od = _objs[idx];

            if (Game.Version >= 6)
            {
                var state = GetStateCore(obj) - 1;
                if (state < 0)
                    state = 0;

                var x = od.Position.X + od.Hotspots[state].X;
                var y = od.Position.Y + od.Hotspots[state].Y;
                p = new Point(x, y);
            }
            else if (Game.Version <= 2)
            {
                var x = od.Walk.X;
                var y = od.Walk.Y;

                // Adjust x, y when no actor direction is set, but only perform this
                // adjustment for V0 games (e.g. MM C64), otherwise certain scenes in
                // newer games are affected as well (e.g. the interior of the Shuttle
                // Bus scene in Zak V2, where no actor is present). Refer to bug #3526089.
                if (od.ActorDir == 0 && Game.Version == 0)
                {
                    x = od.Position.X + od.Width / 2;
                    y = od.Position.Y + od.Height / 2;
                }
                x = x >> V12_X_SHIFT;
                y = y >> V12_Y_SHIFT;
                p = new Point(x, y);
            }
            else
            {
                p = od.Walk;
            }

            if (_game.Version == 8)
                dir = ScummHelper.FromSimpleDir(1, od.ActorDir);
            else
                dir = ScummHelper.OldDirToNewDir(od.ActorDir & 3);
        }

Same methods

ScummEngine::GetObjectXYPos ( int obj ) : System.Point
ScummEngine