private void InitModes() { ScoreDisplay = new ScoreDisplay(this, 1); ScoreDisplay.layer.enabled = false; BaseMode = new BaseMode(this, 2); AttractMode = new Attract(this, 20); SkillshotMode = new Skillshot(this, 3); PagesMode = new PageMode(this, 5); CellarRampMode = new CellarRamp(this, 6); TargetsMode = new Targets(this, 25); WorkshedMode = new WorkShed(this, 30); ShedMultiball = new ShedMball(this, 35); BumpersMode = new Bumpers(this, 40); DeadByDawnMode = new DeadByDawn(this, 50); SelectMode = new ModeSelect(this, 40); Lindamode = new Linda(this, 40); CherylMode = new Cheryl(this, 40); BadHandMode = new BadHand(this, 40); EscapeMode = new Escape(this, 40); ShellyMode = new Shelly(this, 40); Modes.Add(ScoreDisplay); Modes.Add(BaseMode); Modes.Add(AttractMode); Modes.Add(TargetsMode); Modes.Add(WorkshedMode); }
private IBumper GetBumper(BumperType bumperType) { return(Bumpers.First(vb => vb.BumperType == bumperType)); }
private void Load(EndianBinaryReader input) { int unk0 = input.ReadInt32(); int unk4 = input.ReadInt32(); int numCollission = input.ReadInt32(); int collisionOffset = input.ReadInt32(); if (input.ReadInt32() != 0xA0) { throw new InvalidStageLayoutFileException("Expected StageLayout[0x10] == 0xA0."); } int unk14 = input.ReadInt32(); int numGoals = input.ReadInt32(); int goalsOffset = input.ReadInt32(); if (input.ReadInt32() != numGoals) { throw new InvalidStageLayoutFileException("Expected StageLayout[0x18] == StageLayout[0x20]."); } if (input.ReadInt32() != 0) { throw new InvalidStageLayoutFileException("Expected StageLayout[0x24] == 0."); } int numBumbers = input.ReadInt32(); int bumpersOffset = input.ReadInt32(); int numJamabars = input.ReadInt32(); int jamabarsOffset = input.ReadInt32(); int numBananas = input.ReadInt32(); int bananasOffset = input.ReadInt32(); int numUnk40 = input.ReadInt32(); int unk40Offset = input.ReadInt32(); int numUnk48 = input.ReadInt32(); int unk48Offset = input.ReadInt32(); int numUnk50 = input.ReadInt32(); int unk50Offset = input.ReadInt32(); int numModelNames = input.ReadInt32(); int modelNamesOffset = input.ReadInt32(); // Looks like a number/offset to some struct of size 0x20, mostly floats int numUnk60 = input.ReadInt32(); int unk60Offset = input.ReadInt32(); int unk68 = input.ReadInt32(); int unk6C = input.ReadInt32(); int numUnk70 = input.ReadInt32(); int unk70Offset = input.ReadInt32(); int unk78 = input.ReadInt32(); int unk7C = input.ReadInt32(); int unk80 = input.ReadInt32(); int unk84 = input.ReadInt32(); int unk88 = input.ReadInt32(); int unk8C = input.ReadInt32(); int unk90 = input.ReadInt32(); if (input.ReadInt32() != 0) { throw new InvalidStageLayoutFileException("Expected StageLayout[0x94] == 0."); } if (input.ReadInt32() != 0) { throw new InvalidStageLayoutFileException("Expected StageLayout[0x98] == 0."); } if (input.ReadInt32() != 0) { throw new InvalidStageLayoutFileException("Expected StageLayout[0x9C] == 0."); } //if (numCollission != 0) Console.WriteLine(numCollission + "/" + collisionOffset); /* * if (unk78 != 0) * { * input.BaseStream.Position = unk7C; * for (int i = 0; i < unk78 + 5; i++) * { * byte[] bytes = input.ReadBytes(0x38); * if (i >= unk78) Console.Write("XXX "); * Console.WriteLine(string.Join(" ", bytes.Select(b => b.ToString("X2")))); * } * * Console.ReadKey(); * } */ input.BaseStream.Position = collisionOffset; for (int i = 0; i < numCollission; i++) { StageLayoutCollision collision = new StageLayoutCollision(); collision.Load(input); Collision.Add(collision); } input.BaseStream.Position = modelNamesOffset; for (int i = 0; i < numModelNames; i++) { StageLayoutModelName modelName = new StageLayoutModelName(); modelName.Load(input); ModelNames.Add(modelName); } input.BaseStream.Position = goalsOffset; for (int i = 0; i < numGoals; i++) { StageLayoutGoal goal = new StageLayoutGoal(); goal.Load(input); Goals.Add(goal); } input.BaseStream.Position = bumpersOffset; for (int i = 0; i < numBumbers; i++) { StageLayoutItem bumper = new StageLayoutItem(); bumper.Load(input); Bumpers.Add(bumper); } input.BaseStream.Position = jamabarsOffset; for (int i = 0; i < numJamabars; i++) { StageLayoutItem jamabar = new StageLayoutItem(); jamabar.Load(input); Jamabars.Add(jamabar); } input.BaseStream.Position = bananasOffset; for (int i = 0; i < numBananas; i++) { StageLayoutBanana banana = new StageLayoutBanana(); banana.Load(input); Bananas.Add(banana); } input.BaseStream.Position = unk40Offset; for (int i = 0; i < numUnk40; i++) { StageLayoutItemExt unk40 = new StageLayoutItemExt(); unk40.Load(input); Unk40.Add(unk40); } input.BaseStream.Position = unk48Offset; for (int i = 0; i < numUnk48; i++) { StageLayoutUnk48 unk48 = new StageLayoutUnk48(); unk48.Load(input); Unk48.Add(unk48); } input.BaseStream.Position = unk50Offset; for (int i = 0; i < numUnk50; i++) { StageLayoutUnk50 unk50 = new StageLayoutUnk50(); unk50.Load(input); Unk50.Add(unk50); } input.BaseStream.Position = unk60Offset; for (int i = 0; i < numUnk60; i++) { StageLayoutUnk60 unk60 = new StageLayoutUnk60(); unk60.Load(input); Unk60.Add(unk60); } input.BaseStream.Position = unk70Offset; for (int i = 0; i < numUnk70; i++) { StageLayoutUnk70 unk70 = new StageLayoutUnk70(); unk70.Load(input); Unk70.Add(unk70); } }