NScumm.Scumm.ScummEngine3.LoadRoomWithEgo C# (CSharp) Метод

LoadRoomWithEgo() приватный Метод

private LoadRoomWithEgo ( ) : void
Результат void
        void LoadRoomWithEgo()
        {
            int obj = GetVarOrDirectWord(OpCodeParameter.Param1);
            int room = GetVarOrDirectByte(OpCodeParameter.Param2);

            var a = Actors[Variables[VariableEgo.Value]];

            a.PutActor((byte)room);
            int oldDir = a.Facing;
            EgoPositioned = false;

            var x = ReadWordSigned();
            var y = ReadWordSigned();

            Variables[VariableWalkToObject.Value] = obj;
            StartScene(a.Room, a, obj);
            Variables[VariableWalkToObject.Value] = 0;

            if (Game.Version <= 4)
            {
                if (!EgoPositioned)
                {
                    int dir;
                    Point p;
                    GetObjectXYPos(obj, out p, out dir);
                    a.PutActor(p, CurrentRoom);
                    if (a.Facing == oldDir)
                        a.SetDirection(dir + 180);
                }
                a.Moving = 0;
            }

            // This is based on disassembly
            Camera.CurrentPosition.X = Camera.DestinationPosition.X = a.Position.X;
            if ((Game.GameId == GameId.Zak || Game.GameId == GameId.Loom) && (Game.Platform == Platform.FMTowns))
            {
                SetCameraAt(a.Position);
            }
            SetCameraFollows(a, false);

            _fullRedraw = true;

            if (x != -1)
            {
                a.StartWalk(new Point(x, y), -1);
            }
        }