Skip to content

Commit 102aad1

Browse files
committed
display: Set correct defaults when creating displays.
1 parent aaf8791 commit 102aad1

File tree

1 file changed

+91
-4
lines changed

1 file changed

+91
-4
lines changed

VisualPinball.Engine.PinMAME.Unity/Editor/PinMameGamelogicEngineInspector.cs

Lines changed: 91 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,9 @@ private void CreateDisplays(IEnumerable<DisplayAuthoring> sceneDisplays)
207207

208208
auth.Id = id;
209209
auth.NumChars = layout.Length;
210-
var displayFrameFormat = PinMameGamelogicEngine.GetDisplayType(layout.Type);
211-
auth.SegmentType = auth.ConvertSegmentType(displayFrameFormat);
210+
auth.NumSegments = ConvertNumSegments(layout.Type);
211+
auth.SeparatorType = ConvertSeparatorType(layout.Type);
212+
auth.SeparatorEveryThreeOnly = ConvertSeparatorEveryThree(layout.Type);
212213
auth.SegmentTypeName = layout.Type.ToString();
213214

214215
go.name = $"Segment Display [{index}]";
@@ -226,10 +227,96 @@ private void CreateDisplays(IEnumerable<DisplayAuthoring> sceneDisplays)
226227
1.1f);
227228
}
228229
}
229-
230-
231230
var str = string.Join("\n", displayLayouts.Keys.Select(t => $"{t}: {displayLayouts[t]}"));
232231
Debug.Log($"OnDisplaysAvailable ({displayLayouts.Count}): displays=\n{str}\n{tableWidth} - {totalWidth}");
233232
}
233+
234+
private int ConvertSeparatorType(PinMameDisplayType layoutType)
235+
{
236+
switch (layoutType) {
237+
238+
case PinMameDisplayType.Seg7S:
239+
case PinMameDisplayType.Seg7:
240+
case PinMameDisplayType.Seg9:
241+
case PinMameDisplayType.Seg16N:
242+
return 0;
243+
244+
case PinMameDisplayType.Seg16D:
245+
case PinMameDisplayType.Seg8D:
246+
return 1;
247+
248+
case PinMameDisplayType.Seg7SCH:
249+
case PinMameDisplayType.Seg7H:
250+
case PinMameDisplayType.Seg7SH:
251+
case PinMameDisplayType.Seg7SC:
252+
case PinMameDisplayType.Seg8:
253+
case PinMameDisplayType.Seg87:
254+
case PinMameDisplayType.Seg87F:
255+
case PinMameDisplayType.Seg8H:
256+
case PinMameDisplayType.Seg87H:
257+
case PinMameDisplayType.Seg87FH:
258+
case PinMameDisplayType.Seg98:
259+
case PinMameDisplayType.Seg98F:
260+
case PinMameDisplayType.Seg10:
261+
case PinMameDisplayType.Seg16:
262+
case PinMameDisplayType.Seg16S:
263+
case PinMameDisplayType.Seg16R:
264+
return 2;
265+
266+
default:
267+
throw new ArgumentOutOfRangeException(nameof(layoutType), layoutType, "Unknown segment display size");
268+
}
269+
}
270+
271+
private static bool ConvertSeparatorEveryThree(PinMameDisplayType layoutType)
272+
{
273+
switch (layoutType) {
274+
case PinMameDisplayType.Seg98F:
275+
case PinMameDisplayType.Seg98:
276+
case PinMameDisplayType.Seg87F:
277+
case PinMameDisplayType.Seg87:
278+
return true;
279+
280+
default:
281+
return false;
282+
}
283+
}
284+
285+
private static int ConvertNumSegments(PinMameDisplayType layoutType)
286+
{
287+
switch (layoutType) {
288+
289+
case PinMameDisplayType.Seg7:
290+
case PinMameDisplayType.Seg7S:
291+
case PinMameDisplayType.Seg7SC:
292+
case PinMameDisplayType.Seg7SCH:
293+
case PinMameDisplayType.Seg7H:
294+
case PinMameDisplayType.Seg7SH:
295+
case PinMameDisplayType.Seg8:
296+
case PinMameDisplayType.Seg8D:
297+
case PinMameDisplayType.Seg8H:
298+
case PinMameDisplayType.Seg87:
299+
case PinMameDisplayType.Seg87F:
300+
case PinMameDisplayType.Seg87H:
301+
case PinMameDisplayType.Seg87FH:
302+
return 7;
303+
304+
case PinMameDisplayType.Seg9:
305+
case PinMameDisplayType.Seg10:
306+
case PinMameDisplayType.Seg98:
307+
case PinMameDisplayType.Seg98F:
308+
return 9;
309+
310+
case PinMameDisplayType.Seg16:
311+
case PinMameDisplayType.Seg16R:
312+
case PinMameDisplayType.Seg16S:
313+
case PinMameDisplayType.Seg16N:
314+
case PinMameDisplayType.Seg16D:
315+
return 14;
316+
317+
default:
318+
throw new ArgumentOutOfRangeException(nameof(layoutType), layoutType, "Unknown segment display size");
319+
}
320+
}
234321
}
235322
}

0 commit comments

Comments
 (0)