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

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

protected WriteVariable ( uint index, int value ) : void
index uint
value int
Результат void
        protected override void WriteVariable(uint index, int value)
        {
            //            Console.WriteLine("SetResult({0},{1})", index, value);
            if ((index & 0xF000) == 0)
            {
                ScummHelper.AssertRange(0, index, _resManager.NumVariables - 1, "variable (writing)");
                Variables[index] = value;
                return;
            }

            if ((index & 0x8000) != 0)
            {
                if (Game.Version <= 3 && !(Game.GameId == GameId.Indy3 && Game.Platform == Platform.FMTowns) &&
                    !(Game.GameId == GameId.Loom && Game.Platform == Platform.PCEngine))
                {
                    var bit = (int)(index & 0xF);
                    index = (index >> 4) & 0xFF;
                    ScummHelper.AssertRange(0, index, _resManager.NumVariables - 1, "variable (writing)");
                    if (value > 0)
                        Variables[index] |= (1 << bit);
                    else
                        Variables[index] &= ~(1 << bit);
                }
                else
                {
                    index &= 0x7FFF;

                    ScummHelper.AssertRange(0, index, _bitVars.Length - 1, "bit variable (writing)");
                    _bitVars[(int)index] = value != 0;
                }
                return;
            }

            if ((index & 0x4000) != 0)
            {
                if (Game.Features.HasFlag(GameFeatures.FewLocals))
                {
                    index &= 0xF;
                }
                else
                {
                    index &= 0xFFF;
                }

                ScummHelper.AssertRange(0, index, 20, "local variable (writing)");
                //Console.WriteLine ("SetLocalVariables(script={0},var={1},value={2})", CurrentScript, index, value);
                Slots[CurrentScript].LocalVariables[index] = value;
                return;
            }
        }