Example #1
0
    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);
        }
    }
Example #2
0
    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;
            }
        }
    }
Example #3
0
        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);
                        }
                    }
                }
            }
        }
Example #4
0
        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);
                }
            }
        }
Example #5
0
    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;
    }
Example #6
0
    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);
        }
    }
Example #7
0
 public void setLastGroup(CrateGroup g)
 {
     this.lastGroup = g;
 }