/// <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"); } }
/// <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); } }
/// <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))); }