private void Weld(List <CrateGroup> weldGroups) { // Debug.Log(weldGroups.Count); int cratz = 0; if (weldGroups.Count <= 1) { return; } foreach (CrateGroup cg in weldGroups) { foreach (Crate c in cg.crates) { cratz++; } } if (cratz >= 6) { Debug.Log("***Welding Big Group***"); } CrateGroup newGroup = weldGroups[0]; weldGroups.RemoveAt(0); foreach (CrateGroup oldGroup in weldGroups) { newGroup.Merge(oldGroup); } }
public override void OnStepStart() { // Debug.Log("Rotator onsttepstart"); Crate crate = Crates.At(xy); int isCCWInt = (isCCW) ? 1:0; Vector3 spin = new Vector3(this.x, this.y, isCCWInt); if (crate) { if (crate.group != this.lastGroup) { crate.group.spins.Add(spin); this.lastGroup = crate.group; } } }
public void Save(string path) { VerifyCrates(); using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite)) { BinaryWriter writer = new BinaryWriter(fileStream); writer.Write(Header); writer.Write((ushort)CrateGroups.Count); for (int i = 0; i < CrateGroups.Count; i++) { CrateGroup Group = CrateGroups[i]; writer.Write(Group.Crates[0].Pos.X); writer.Write(Group.Crates[0].Pos.Y); writer.Write(Group.Crates[0].Pos.Z); writer.Write(Group.ID); writer.Write((ushort)Group.Crates.Count); writer.Write(Group.unkFlags); writer.Write(Group.Rot.X); writer.Write(Group.Rot.Y); writer.Write(Group.Rot.Z); writer.Write(Group.Crates[0].unkFlags); writer.Write((byte)Group.Crates[0].Type); writer.Write((byte)Group.Crates[0].TypeTT); writer.Write((byte)Group.Crates[0].Type3); writer.Write((byte)Group.Crates[0].Type4); writer.Write(Group.Crates[0].unkFlags2); for (int c = 0; c < Group.Crates.Count; c++) { if (c != 0) { Crate Crate = Group.Crates[c]; writer.Write(Crate.Pos.X); writer.Write(Crate.Pos.Y); writer.Write(Crate.Pos.Z); writer.Write(Crate.unkFlags); writer.Write((byte)Crate.Type); writer.Write((byte)Crate.TypeTT); writer.Write((byte)Crate.Type3); writer.Write((byte)Crate.Type4); writer.Write(Crate.unkFlags2); } } } } }
public void Load(string path) { using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)) { BinaryReader reader = new BinaryReader(fileStream); Header = reader.ReadUInt32(); ushort GroupCount = reader.ReadUInt16(); CrateGroups = new List <CrateGroup>(); for (int i = 0; i < GroupCount; i++) { CrateGroup Group = new CrateGroup(); Group.Crates = new List <Crate>(); Crate BaseCrate = new Crate(); BaseCrate.Pos = new TWOC_Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); Group.ID = reader.ReadUInt16(); ushort CrateCount = reader.ReadUInt16(); Group.unkFlags = reader.ReadUInt16(); Group.Rot = new TWOC_Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); BaseCrate.unkFlags = reader.ReadBytes(10); BaseCrate.Type = (CrateType)reader.ReadByte(); BaseCrate.TypeTT = (CrateType)reader.ReadByte(); BaseCrate.Type3 = (CrateType)reader.ReadByte(); BaseCrate.Type4 = (CrateType)reader.ReadByte(); BaseCrate.unkFlags2 = reader.ReadBytes(14); Group.Crates.Add(BaseCrate); for (int c = 0; c < CrateCount - 1; c++) { Crate Crate = new Crate(); Crate.Pos = new TWOC_Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); Crate.unkFlags = reader.ReadBytes(10); Crate.Type = (CrateType)reader.ReadByte(); Crate.TypeTT = (CrateType)reader.ReadByte(); Crate.Type3 = (CrateType)reader.ReadByte(); Crate.Type4 = (CrateType)reader.ReadByte(); Crate.unkFlags2 = reader.ReadBytes(14); Group.Crates.Add(Crate); } CrateGroups.Add(Group); } } }
public void Merge(CrateGroup other) { // Debug.Log("Merging:"); // foreach (Crate crate in crates) { // Debug.Log(crate.xy); // } crates.AddRange(other.crates); foreach (Crate crate in crates) { crate.group = this; } // Debug.Log("******New Group:"); // List<CrateGroup> grps = new List<CrateGroup>(); // foreach (Crate crate in crates) { // if (!grps.Contains(crate.group)) grps.Add(crate.group); // Debug.LogFormat(" {0}",crate.xy); // } // Debug.LogFormat("group contains {0} members.",crates.Count); // combine spin here pusherForce += other.pusherForce; netForce += other.netForce; }
public void Buzz() { CrateGroup g = null; foreach (DropZone zone in zones) { Crate crate = Crates.At(zone.xy); if (crate == null) { return; } if (!zone.CheckPaint(crate)) { return; } if (g == null) { g = crate.group; } else if (crate.group != g) { return; } } if (g.crates.Count != zones.Count) { Debug.LogFormat("Broke cuz group overflow\n {0} crates, {1} zones", g.crates.Count, zones.Count); return; } count++; foreach (Crate crate in g.crates) { Crates.Remove(crate.xy); GridThing.Destroy(crate.gameObject); } }
public void setLastGroup(CrateGroup g) { this.lastGroup = g; }