public TableBuilder AddBumper(string name) { var data = new BumperData($"GameItem{_gameItem++}") { Name = name, Center = new Vertex2D(500, 500) }; _table.Add(new Bumper.Bumper(data)); return(this); }
private static void LoadGameItems(Table table, CFStorage storage) { for (var i = 0; i < table.Data.NumGameItems; i++) { var itemName = $"GameItem{i}"; storage.TryGetStream(itemName, out var itemStream); if (itemStream == null) { Logger.Warn("Could not find stream {0}, skipping.", itemName); continue; } var itemData = itemStream.GetData(); if (itemData.Length < 4) { Logger.Warn("Skipping {itemName} because it has size of {itemDataLength}.", itemName, itemData.Length); continue; } var reader = new BinaryReader(new MemoryStream(itemData)); // parse to enum var iItemType = reader.ReadInt32(); if (!Enum.IsDefined(typeof(ItemType), iItemType)) { Logger.Info("Invalid item type " + iItemType); return; } var itemType = (ItemType)iItemType; switch (itemType) { case ItemType.Bumper: { var item = new VisualPinball.Engine.VPT.Bumper.Bumper(reader, itemName); table.Add(item); break; } case ItemType.Decal: { table.Add(new VisualPinball.Engine.VPT.Decal.Decal(reader, itemName)); break; } case ItemType.DispReel: { var item = new VisualPinball.Engine.VPT.DispReel.DispReel(reader, itemName); table.Add(item); break; } case ItemType.Flasher: { var item = new VisualPinball.Engine.VPT.Flasher.Flasher(reader, itemName); table.Add(item); break; } case ItemType.Flipper: { var item = new VisualPinball.Engine.VPT.Flipper.Flipper(reader, itemName); table.Add(item); break; } case ItemType.Gate: { var item = new VisualPinball.Engine.VPT.Gate.Gate(reader, itemName); table.Add(item); break; } case ItemType.HitTarget: { var item = new VisualPinball.Engine.VPT.HitTarget.HitTarget(reader, itemName); table.Add(item); break; } case ItemType.Kicker: { var item = new VisualPinball.Engine.VPT.Kicker.Kicker(reader, itemName); table.Add(item); break; } case ItemType.Light: { var item = new VisualPinball.Engine.VPT.Light.Light(reader, itemName); table.Add(item); break; } case ItemType.LightSeq: { var item = new VisualPinball.Engine.VPT.LightSeq.LightSeq(reader, itemName); table.Add(item); break; } case ItemType.Plunger: { var item = new VisualPinball.Engine.VPT.Plunger.Plunger(reader, itemName); table.Add(item); break; } case ItemType.Primitive: { var item = new Primitive.Primitive(reader, itemName); table.Add(item); break; } case ItemType.Ramp: { var item = new Ramp.Ramp(reader, itemName); table.Add(item); break; } case ItemType.Rubber: { var item = new Rubber.Rubber(reader, itemName); table.Add(item); break; } case ItemType.Spinner: { var item = new Spinner.Spinner(reader, itemName); table.Add(item); break; } case ItemType.Surface: { var item = new Surface.Surface(reader, itemName); table.Add(item); break; } case ItemType.TextBox: { var item = new TextBox.TextBox(reader, itemName); table.Add(item); break; } case ItemType.Timer: { var item = new Timer.Timer(reader, itemName); table.Add(item); break; } case ItemType.Trigger: { var item = new Trigger.Trigger(reader, itemName); table.Add(item); break; } case ItemType.Trough: { var item = new Trough.Trough(reader, itemName); table.Add(item); break; } } } }