예제 #1
0
    // EXAMPLES:
    // So, ALL syncing shall happen on the integer ticks, and the integer ticks only.

    // OpNetGS stuff:

    // Player uses playerTime for its timing here.
    // Server uses playerTime for its timing as well.

    // Client uses Interp.getLifeTime() based on tick #s from the server.

    // This is for stuff that needs to exist at all times.
    public void InitAll(PlayerMove parentPlayerMove)
    {
        firedAt               = new FrameTrigger();
        secondaryFiredAt      = new FrameTrigger();
        reloadedAt            = new FrameTrigger();
        equippedAt            = new FrameTrigger();
        this.parentPlayerMove = parentPlayerMove;
        SetUnlockObject();         // This is actually everything that needs to be set with unlocks. Unlocks are already within the character. (This INCLUDES trap placing modules, they all use the same object!)
    }
예제 #2
0
        public MotionTrigger(Stream stream)
        {
            if (!stream.CanRead || !stream.CanSeek)
            {
                throw new InvalidDataException($"Read or seek must be supported.");
            }

            BinaryReader reader = new BinaryReader(stream);

            byte  rangeTriggerCount  = reader.ReadByte();
            byte  frameTriggerCount  = reader.ReadByte();
            short frameTriggerOffset = reader.ReadInt16();

            RangeTriggerList = new List <RangeTrigger>();
            for (int i = 0; i < rangeTriggerCount; i++)
            {
                RangeTrigger rangeTrigger = new RangeTrigger();
                rangeTrigger.StartFrame = reader.ReadInt16();
                rangeTrigger.EndFrame   = reader.ReadInt16();
                rangeTrigger.Trigger    = reader.ReadByte();
                rangeTrigger.ParamSize  = reader.ReadByte();
                rangeTrigger.Param      = new List <short>();
                for (int j = 0; j < rangeTrigger.ParamSize; j++)
                {
                    rangeTrigger.Param.Add(reader.ReadInt16());
                }
                RangeTriggerList.Add(rangeTrigger);
            }

            FrameTriggerList = new List <FrameTrigger>();
            for (int i = 0; i < frameTriggerCount; i++)
            {
                FrameTrigger frameTrigger = new FrameTrigger();
                frameTrigger.Frame     = reader.ReadInt16();
                frameTrigger.Trigger   = reader.ReadByte();
                frameTrigger.ParamSize = reader.ReadByte();
                frameTrigger.Param     = new List <short>();
                for (int j = 0; j < frameTrigger.ParamSize; j++)
                {
                    frameTrigger.Param.Add(reader.ReadInt16());
                }
                FrameTriggerList.Add(frameTrigger);
            }
        }