public void NumberTest() { var btw = new BinaryTextWriter(); btw.AddNumber(7, 4); btw.AddNumber(1, 10); var btr = new BinaryTextReader(btw.GetOutputString()); Assert.AreEqual(7, btr.ReadNumber(4)); Assert.AreEqual(1, btr.ReadNumber(10)); }
public byte[] ConvertToStringBytes() { BinaryTextWriter btw = new BinaryTextWriter(); // version btw.AddNumber(version, 10); // items btw.AddBool(randomAbilities); btw.AddBool(randomTanks); // excluded items for (int i = 0; i < 100; i++) { bool excluded = excludedItems.Contains(i); btw.AddBool(excluded); } btw.AddNumber((int)gameCompletion, 2); btw.AddBool(iceNotRequired); btw.AddBool(plasmaNotRequired); btw.AddBool(noPBsBeforeChozodia); btw.AddBool(chozoStatueHints); btw.AddBool(infiniteBombJump); btw.AddBool(wallJumping); // palettes btw.AddBool(tilesetPalettes); btw.AddBool(enemyPalettes); btw.AddBool(beamPalettes); btw.AddNumber(hueMinimum, 8); btw.AddNumber(hueMaximum, 8); // misc btw.AddBool(enableItemToggle); btw.AddBool(obtainUnkItems); btw.AddBool(hardModeAvailable); btw.AddBool(pauseScreenInfo); btw.AddBool(removeCutscenes); btw.AddBool(removeNorfairVine); btw.AddBool(removeVariaAnimation); btw.AddBool(skipSuitless); return(btw.GetOutputString()); }
public string GetString() { BinaryTextWriter btw = new BinaryTextWriter(); // version string[] nums = Program.Version.Split('.'); btw.AddNumber(int.Parse(nums[0]), 4); btw.AddNumber(int.Parse(nums[1]), 4); btw.AddNumber(int.Parse(nums[2]), 4); // items btw.AddNumber((int)AbilitySwap, 2); btw.AddNumber((int)TankSwap, 2); if (NumItemsRemoved == 0) { btw.AddBool(false); } else { btw.AddBool(true); btw.AddNumber(NumItemsRemoved, 7); if (RemoveSpecificItems) { btw.AddBool(true); btw.AddNumber(NumAbilitiesRemoved.Value, 4); } } if (SwapOrRemoveItems) { btw.AddNumber((int)Completion, 2); btw.AddBool(IceNotRequired); btw.AddBool(PlasmaNotRequired); btw.AddBool(NoPBsBeforeChozodia); btw.AddBool(ChozoStatueHints); btw.AddBool(InfiniteBombJump); btw.AddBool(WallJumping); } // locations if (CustomAssignments.Count == 0) { btw.AddBool(false); } else { btw.AddBool(true); btw.AddNumber(CustomAssignments.Count, 7); for (int i = 0; i < 100; i++) { if (CustomAssignments.TryGetValue(i, out ItemType item)) { btw.AddNumber(i, 7); btw.AddNumber((int)item, 5); } } } // enemies btw.AddBool(RandoEnemies); // palettes btw.AddBool(TilesetPalettes); btw.AddBool(EnemyPalettes); btw.AddBool(SamusPalettes); btw.AddBool(BeamPalettes); if (RandomPalettes) { if (HueMinimum == 0) { btw.AddBool(false); } else { btw.AddBool(true); btw.AddNumber(HueMinimum, 8); } if (HueMaximum == 180) { btw.AddBool(false); } else { btw.AddBool(true); btw.AddNumber(HueMaximum, 8); } } // misc btw.AddBool(EnableItemToggle); btw.AddBool(ObtainUnkItems); btw.AddBool(HardModeAvailable); btw.AddBool(PauseScreenInfo); btw.AddBool(RemoveCutscenes); btw.AddBool(SkipSuitless); btw.AddBool(SkipDoorTransitions); return(btw.GetOutputString()); }