//TODO: Store in file static public LayoutDescriptionEx GenerateDefault() { LineDescription[] courseLD = new LineDescription[16]; LineDescription[] secretLD = new LineDescription[16]; int[] linesForSecrets = { 0, 1, 2, 3, 9, 5, 6, 7, 13, 14, 15, 11 }; string[] namesForSecrets = { "--", "B1", "B2", "B3", "Sl", "MC", "WC", "VC", "S1", "S2", "S3", "OW" }; courseLD[0] = new LineDescription("Main Courses", true, 0, 0); for (int course = 1; course <= 15; course++) { string drawString = course.ToString("D2"); courseLD[course] = new LineDescription(drawString, false, 255, course + 3); } for (int course = 1; course <= 10; course++) //Secret course { secretLD[linesForSecrets[course]] = new LineDescription(namesForSecrets[course], false, 255, course + 18); } secretLD[linesForSecrets[11]] = new LineDescription(namesForSecrets[11], false, 255, 0); secretLD[0] = new LineDescription("Bowser Courses", true, 0, 0); secretLD[4] = new LineDescription("Cap Levels", true, 0, 0); secretLD[8] = new LineDescription("Slide", true, 0, 0); secretLD[10] = new LineDescription("Overworld Stars", true, 0, 0); secretLD[12] = new LineDescription("Secret Stars", true, 0, 0); return(new LayoutDescriptionEx(courseLD, secretLD, new Bitmap("images/gold_star.png"), "182")); }
public byte[] SerializeExternal() { Trim(); MemoryStream ms = new MemoryStream(); for (int i = 0; i < courseDescription.Length; i++) { LineDescription lind = courseDescription[i]; if (lind == null) { continue; } byte[] data = lind.Serialize(0); //control&2==0 -> course ms.Write(data, 0, data.Length); } for (int i = 0; i < secretDescription.Length; i++) { LineDescription lind = secretDescription[i]; if (lind == null) { continue; } byte[] data = lind.Serialize(2); //control&2!=0 -> secret ms.Write(data, 0, data.Length); } return(ms.ToArray()); }
public void RecountStars() { int stars = 0; for (int i = 0; i < courseDescription.Length; i++) { LineDescription lind = courseDescription[i]; if (lind == null || lind.isTextOnly) { continue; } stars += MemoryManager.countStars((byte)(lind.starMask >> 1), 7); } for (int i = 0; i < secretDescription.Length; i++) { LineDescription lind = secretDescription[i]; if (lind == null || lind.isTextOnly) { continue; } stars += MemoryManager.countStars((byte)(lind.starMask >> 1), 7); } starAmount = stars.ToString(); }
static public LayoutDescription DeserializeExternal(byte[] data, Bitmap img) { LineDescription[] courseLD = new LineDescription[16]; LineDescription[] secretLD = new LineDescription[16]; int courseCounter = 0; int secretCounter = 0; BinaryReader ms = new BinaryReader(new MemoryStream(data)); int stars = 0; while (ms.BaseStream.Position != ms.BaseStream.Length) { bool isSecret; LineDescription lind = LineDescription.Deserialize(ms, out isSecret); if (!lind.isTextOnly) { int a = lind.starMask; do { a = a << 1; if ((a & 0x80) != 0) { stars++; } } while (a != 0); } if (isSecret) { if (secretCounter == 16) { break; } secretLD[secretCounter++] = lind; } else { if (courseCounter == 16) { break; } courseLD[courseCounter++] = lind; } } return(new LayoutDescription(courseLD, secretLD, stars.ToString())); }
public void Trim() { for (int i = courseDescription.Length - 1; i >= 0; i--) { LineDescription lind = courseDescription[i]; if (lind == null) { continue; } if (lind.isTextOnly) { if (lind.text != "") { break; } else { courseDescription[i] = null; } } else { if (lind.text != "" || lind.starMask != 0) { break; } else { courseDescription[i] = null; } } } for (int i = secretDescription.Length - 1; i >= 0; i--) { LineDescription lind = secretDescription[i]; if (lind == null) { continue; } if (lind.isTextOnly) { if (lind.text != "") { break; } else { secretDescription[i] = null; } } else { if (lind.text != "" || lind.starMask != 0) { break; } else { secretDescription[i] = null; } } } }