Beispiel #1
0
        /// <summary>
        /// Load existing nflavor props
        /// </summary>
        /// <param name="buffer"></param>
        public void Load(byte[] buffer)
        {
            try
            {
                using (MemoryReader mem = new MemoryReader(buffer))
                {
                    /* Sign = Encoding.Default.GetString()*/ mem.ReadBytes(18);
                    Version = mem.ReadUInt32();

#if DEBUG == false
                    if (!SupportedVersion.Contains(Version))
                    {
                        Parent.Log(Levels.Error, "Failed\n");
                        Parent.Log(Levels.Fatal, $"Incompatible version {Version} is not supported or not implemented.\n");
                        return;
                    }
#endif

                    var PropCount = mem.ReadInt32();

                    for (int i = 0; i < PropCount; i++)
                    {
                        var prop = new QuestProp();
                        prop.QuestPropID = mem.ReadInt32();

                        var vector = new Vector
                        {
                            X = mem.ReadSingle() / 7.875f,
                            Y = mem.ReadSingle() / 7.875f
                        };

                        prop.Position          = vector.Rotate180FlipY();
                        prop.OffSet            = mem.ReadSingle();
                        prop.RotateX           = mem.ReadSingle();
                        prop.RotateY           = mem.ReadSingle();
                        prop.RotateZ           = mem.ReadSingle();
                        prop.ScaleX            = mem.ReadSingle();
                        prop.ScaleY            = (Version >= 3) ? mem.ReadSingle() : prop.ScaleX;
                        prop.ScaleZ            = (Version >= 3) ? mem.ReadSingle() : prop.ScaleX;
                        prop.PropNum           = mem.ReadUInt16();
                        prop.LockedHeight      = (Version >= 3) ? mem.ReadBoolean() : false;
                        prop.LockHeight        = (Version >= 3) ? mem.ReadSingle() : 0f;
                        prop.TextureGroupIndex = (Version >= 3) ? mem.ReadInt16() : (short)-1;
                        Props.Add(prop);
                    }
                }

                Render();
                Parent.Log(Levels.Success, "Ok\n");
            }
            catch (Exception exception)
            {
                Dispose();
                Parent.Log(Levels.Error, "Failed\n");
                Parent.Log(Levels.Fatal, $"Qpf::Load<Exception> -> {exception}\n");
            }
        }
Beispiel #2
0
        /// <summary>
        /// Add new prop
        /// </summary>
        /// <param name="vector"></param>
        public void Add(Vector vector)
        {
            var prop = new QuestProp
            {
                Position = vector
            };

            Props.Add(prop);

            Added?.Invoke(this, new AddedArgs(prop, typeof(QuestProp)));
        }
    // Use this for initialization


    void Start()
    {
        heli   = new QuestProp[5];
        nuke   = new QuestProp[5];
        misc   = new QuestProp[4];
        quests = new QuestProp[5];
        //fil heli
        heli[0] = new QuestProp("train", "heli", "heli1");
        heli[1] = new QuestProp("train", "heli", "heli2");
        heli[2] = new QuestProp("hq", "heli", "heli3");
        heli[3] = new QuestProp("bunker", "heli", "heli4");
        heli[4] = new QuestProp("bunker", "heli", "heli5");
        //fill nuke

        nuke[0] = new QuestProp("hq", "nuke", "nuke1");
        nuke[1] = new QuestProp("train", "nuke", "nuke2");
        nuke[2] = new QuestProp("hq", "nuke", "nuke3");
        nuke[3] = new QuestProp("train", "nuke", "nuke4");
        nuke[4] = new QuestProp("train", "nuke", "nuke5");

        //fill misc
        misc[0] = new QuestProp("train", "misc", "misc1");
        misc[1] = new QuestProp("train", "misc", "misc2");
        misc[2] = new QuestProp("hq", "misc", "misc3");
        misc[3] = new QuestProp("bunker", "misc", "misc4");
        //if(Random.Range(0,1) == 0)
        //{
        //
        //}
        int xx = Random.Range(0, 2);

        if (xx == 0)
        {
            Populate(heli);
        }
        else
        {
            Populate(nuke);
        }
        for (int i = 0; i < 5; i++)
        {
            Debug.Log(quests[i].name);
        }
    }
Beispiel #4
0
        /// <summary>
        /// Update a quest prop
        /// </summary>
        /// <param name="index"></param>
        /// <param name="prop"></param>
        public void Update(int index, QuestProp prop)
        {
            Props[index] = prop;

            Updated?.Invoke(this, new UpdatedArgs(index, prop, typeof(QuestProp)));
        }