Author SHA1 Message Date
ActualHorse f0d37d1a90 Rewrote the end game player ranking code. Just needs to be tested. 2026-06-22 00:49:48 -04:00
ActualHorse 2691d9be22 Tiebreaker data no longer needs to be downloaded each time it's rerolled. 2026-06-21 23:17:01 -04:00
ActualHorse 1f8eeadb08 Changed the data format for tiebreaker rounds. 2026-06-21 21:46:29 -04:00
ActualHorse dfaa5a9132 Cameras are now hidden when a player is not allowed to operate cameras. 2026-06-21 19:33:52 -04:00
ActualHorse 6564e16236 - Tiebreaker panel now has a button to load a new tiebreaker question.
- Tiebreaker now auto-advances when the correct answer is chosen.
- Check mark glyph is now lower resolution to save memory.
2026-06-21 18:34:06 -04:00
ActualHorse fb82ae0a96 Player position marker in round 3 works once again. 2026-06-20 12:19:47 -04:00
ActualHorse c7e74b786b Updated camera system. 2026-06-20 12:19:14 -04:00
13 changed files with 2090 additions and 482 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b49a62c00f9ad194a82a6d2f9bc35a4e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
+21
View File
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 9d0a70eede6b04f40aaf0a85d737620b
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- DejaVu Sans
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:
+1 -1
View File
@@ -213,7 +213,7 @@ MeshRenderer:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2585420374601623244} m_GameObject: {fileID: 2585420374601623244}
m_Enabled: 1 m_Enabled: 0
m_CastShadows: 0 m_CastShadows: 0
m_ReceiveShadows: 0 m_ReceiveShadows: 0
m_DynamicOccludee: 1 m_DynamicOccludee: 1
+337 -17
View File
@@ -1005,17 +1005,17 @@ RectTransform:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 420025704171903221} m_GameObject: {fileID: 420025704171903221}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0.00027468195} m_LocalPosition: {x: 0, y: 0, z: 0.0002746674}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 3820687686631019239} - {fileID: 3820687686631019239}
m_Father: {fileID: 357349397136214604} m_Father: {fileID: 7878219892045010217}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 320, y: -60} m_AnchoredPosition: {x: 280, y: -60}
m_SizeDelta: {x: 640, y: 40} m_SizeDelta: {x: 560, y: 40}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7660715217754626793 --- !u!222 &7660715217754626793
CanvasRenderer: CanvasRenderer:
@@ -3901,7 +3901,7 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 7335183167231619635} m_TargetGraphic: {fileID: 7335183167231619635}
m_HandleRect: {fileID: 7510327920180504792} m_HandleRect: {fileID: 7510327920180504792}
m_Direction: 2 m_Direction: 2
m_Value: 1 m_Value: 0
m_Size: 1 m_Size: 1
m_NumberOfSteps: 0 m_NumberOfSteps: 0
m_OnValueChanged: m_OnValueChanged:
@@ -6243,6 +6243,141 @@ MonoBehaviour:
m_ChildScaleWidth: 0 m_ChildScaleWidth: 0
m_ChildScaleHeight: 0 m_ChildScaleHeight: 0
m_ReverseArrangement: 0 m_ReverseArrangement: 0
--- !u!1 &2180814033931321979
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5345044525347763067}
- component: {fileID: 3551781263898296437}
- component: {fileID: 7731194607372925617}
m_Layer: 22
m_Name: Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5345044525347763067
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2180814033931321979}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6254165661482207601}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3551781263898296437
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2180814033931321979}
m_CullTransparentMesh: 1
--- !u!114 &7731194607372925617
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2180814033931321979}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "\u21BB"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: b49a62c00f9ad194a82a6d2f9bc35a4e, type: 2}
m_sharedMaterial: {fileID: -3762857126842199805, guid: b49a62c00f9ad194a82a6d2f9bc35a4e,
type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 64
m_fontSizeBase: 64
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &2258006345313166574 --- !u!1 &2258006345313166574
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -14042,6 +14177,127 @@ MonoBehaviour:
m_hasFontAssetChanged: 0 m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0} m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &4709683861465635908
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6254165661482207601}
- component: {fileID: 6606735158390988562}
- component: {fileID: 7829875769578901026}
- component: {fileID: 904799891945447993}
m_Layer: 22
m_Name: Reload Tiebreaker Data
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6254165661482207601
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4709683861465635908}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5345044525347763067}
m_Father: {fileID: 357349397136214604}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 40, y: -40}
m_SizeDelta: {x: 80, y: 80}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6606735158390988562
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4709683861465635908}
m_CullTransparentMesh: 1
--- !u!114 &7829875769578901026
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4709683861465635908}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.78431374, g: 0.78431374, b: 0, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &904799891945447993
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4709683861465635908}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 7829875769578901026}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &4741252387808424903 --- !u!1 &4741252387808424903
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -15221,6 +15477,70 @@ MonoBehaviour:
m_hasFontAssetChanged: 0 m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0} m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &5186330028889432908
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7878219892045010217}
- component: {fileID: 4966629830552119126}
m_Layer: 22
m_Name: Choices
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7878219892045010217
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5186330028889432908}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5571111044844011290}
- {fileID: 3892395472882062349}
m_Father: {fileID: 357349397136214604}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 360, y: -40}
m_SizeDelta: {x: 560, y: 80}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &4966629830552119126
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5186330028889432908}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 7
m_Spacing: 0
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 1
m_ChildControlHeight: 1
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!1 &5195027373057591124 --- !u!1 &5195027373057591124
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -22042,7 +22362,7 @@ GameObject:
- component: {fileID: 5200388728452111837} - component: {fileID: 5200388728452111837}
- component: {fileID: 7278723716664875381} - component: {fileID: 7278723716664875381}
- component: {fileID: 9030295347735694340} - component: {fileID: 9030295347735694340}
- component: {fileID: 5664627792731892384} - component: {fileID: 3465303472989528256}
m_Layer: 22 m_Layer: 22
m_Name: Choices m_Name: Choices
m_TagString: Untagged m_TagString: Untagged
@@ -22062,8 +22382,8 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 5571111044844011290} - {fileID: 6254165661482207601}
- {fileID: 3892395472882062349} - {fileID: 7878219892045010217}
m_Father: {fileID: 855729723364647049} m_Father: {fileID: 855729723364647049}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 1}
@@ -22132,7 +22452,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
AllowFocusView: 1 AllowFocusView: 1
--- !u!114 &5664627792731892384 --- !u!114 &3465303472989528256
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@@ -22141,7 +22461,7 @@ MonoBehaviour:
m_GameObject: {fileID: 7138506990852559956} m_GameObject: {fileID: 7138506990852559956}
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Padding: m_Padding:
@@ -22149,12 +22469,12 @@ MonoBehaviour:
m_Right: 0 m_Right: 0
m_Top: 0 m_Top: 0
m_Bottom: 0 m_Bottom: 0
m_ChildAlignment: 7 m_ChildAlignment: 0
m_Spacing: 0 m_Spacing: 0
m_ChildForceExpandWidth: 1 m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1 m_ChildForceExpandHeight: 1
m_ChildControlWidth: 1 m_ChildControlWidth: 0
m_ChildControlHeight: 1 m_ChildControlHeight: 0
m_ChildScaleWidth: 0 m_ChildScaleWidth: 0
m_ChildScaleHeight: 0 m_ChildScaleHeight: 0
m_ReverseArrangement: 0 m_ReverseArrangement: 0
@@ -23642,17 +23962,17 @@ RectTransform:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7442174237479214281} m_GameObject: {fileID: 7442174237479214281}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0.00027468195} m_LocalPosition: {x: 0, y: 0, z: 0.0002746674}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 4655127207557142231} - {fileID: 4655127207557142231}
m_Father: {fileID: 357349397136214604} m_Father: {fileID: 7878219892045010217}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 320, y: -20} m_AnchoredPosition: {x: 280, y: -20}
m_SizeDelta: {x: 640, y: 40} m_SizeDelta: {x: 560, y: 40}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2945640803851640885 --- !u!222 &2945640803851640885
CanvasRenderer: CanvasRenderer:
File diff suppressed because it is too large Load Diff
@@ -44,7 +44,7 @@ MonoBehaviour:
Data: Data:
- Name: - Name:
Entry: 12 Entry: 12
Data: 39 Data: 41
- Name: - Name:
Entry: 7 Entry: 7
Data: Data:
@@ -2385,6 +2385,110 @@ MonoBehaviour:
- Name: - Name:
Entry: 8 Entry: 8
Data: Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _TiebreakerJSONString
- Name: $v
Entry: 7
Data: 152|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _TiebreakerJSONString
- Name: <UserType>k__BackingField
Entry: 7
Data: 153|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.String, mscorlib
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 153
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 154|System.Collections.Generic.List`1[[System.Attribute, mscorlib]],
mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _TiebreakerLoadAttempts
- Name: $v
Entry: 7
Data: 155|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _TiebreakerLoadAttempts
- Name: <UserType>k__BackingField
Entry: 9
Data: 57
- Name: <SystemType>k__BackingField
Entry: 9
Data: 57
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 156|System.Collections.Generic.List`1[[System.Attribute, mscorlib]],
mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name: - Name:
Entry: 13 Entry: 13
Data: Data:
@@ -65,6 +65,8 @@ public class GameManagerRound1 : GameManagerBase
private CameraControllerRound1 _CameraControllerRound1 = null; private CameraControllerRound1 _CameraControllerRound1 = null;
private float _VideoPlayerTimer = -1.0f; private float _VideoPlayerTimer = -1.0f;
private string _TiebreakerJSONString = "";
private int _TiebreakerLoadAttempts = 0;
void Start() void Start()
@@ -1311,6 +1313,8 @@ public class GameManagerRound1 : GameManagerBase
int DecodedPlayerNumber = 1000 - (ScoresList[i].Int % 1000); int DecodedPlayerNumber = 1000 - (ScoresList[i].Int % 1000);
_FinalRoundPlayersSortedByScore[_FinalRoundPlayersSortedByScore.Length - i - 1] = DecodedPlayerNumber; _FinalRoundPlayersSortedByScore[_FinalRoundPlayersSortedByScore.Length - i - 1] = DecodedPlayerNumber;
} }
RequestSerialization();
} }
private void FinalRoundRevealPlayerPlace(int PlayerPlace) private void FinalRoundRevealPlayerPlace(int PlayerPlace)
@@ -1370,13 +1374,11 @@ public class GameManagerRound1 : GameManagerBase
HostCardBetweenRoundsInterface Interface = HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments); (HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
PlayerPodium Number1Podium = _PlayerPodiums[_FinalRoundPlayersSortedByScore[0] - 1]; PlayerPodium[] SortedPodiums = new PlayerPodium[_PlayerPodiums.Length];
PlayerPodium Number2Podium = _PlayerPodiums[_FinalRoundPlayersSortedByScore[1] - 1]; for (int i = 0; i < _PlayerPodiums.Length; i++)
PlayerPodium Number3Podium = _PlayerPodiums[_FinalRoundPlayersSortedByScore[2] - 1]; {
SortedPodiums[i] = _PlayerPodiums[_FinalRoundPlayersSortedByScore[i] - 1];
VRCPlayerApi Number1 = Networking.GetOwner(Number1Podium.gameObject); }
VRCPlayerApi Number2 = Networking.GetOwner(Number2Podium.gameObject);
VRCPlayerApi Number3 = Networking.GetOwner(Number3Podium.gameObject);
bool TiebreakerNeeded = false; bool TiebreakerNeeded = false;
if (SortedPlayerScores[1] == SortedPlayerScores[2]) if (SortedPlayerScores[1] == SortedPlayerScores[2])
@@ -1384,17 +1386,17 @@ public class GameManagerRound1 : GameManagerBase
if (SortedPlayerScores[0] == SortedPlayerScores[1]) if (SortedPlayerScores[0] == SortedPlayerScores[1])
{ {
Interface.HeaderUI.text = "Three-Way Tie."; Interface.HeaderUI.text = "Three-Way Tie.";
Interface.CommentUI.text = "We'll start with a tiebreaker between " + Number2.displayName + " and " + Number3.displayName + "."; Interface.CommentUI.text = "We'll start with a tiebreaker between " + SortedPodiums[1].PlayerName + " and " + SortedPodiums[2].PlayerName + ".";
} }
else else
{ {
Interface.HeaderUI.text = Number1.displayName + " Wins"; Interface.HeaderUI.text = SortedPodiums[0].PlayerName + " Wins";
Interface.CommentUI.text = Interface.CommentUI.text =
"- " + Number1.displayName + " will be moving on to the next round.\n" + "- " + SortedPodiums[0].PlayerName + " will be moving on to the next round.\n" +
"- There is a tie for second place between " + Number2.displayName + " and " + Number3.displayName + ", so we will move on to a tiebreaker."; "- There is a tie for second place between " + SortedPodiums[1].PlayerName + " and " + SortedPodiums[2].PlayerName + ", so we will move on to a tiebreaker.";
} }
TiebreakerNeeded = true; TiebreakerNeeded = true;
PrepareTiebreakerRound(Number2Podium.PlayerNumber, Number3Podium.PlayerNumber); PrepareTiebreakerRound(SortedPodiums[1].PlayerNumber, SortedPodiums[2].PlayerNumber);
_CameraControllerRound1.ActivateHostAllPlayersCameraSwitcher(); _CameraControllerRound1.ActivateHostAllPlayersCameraSwitcher();
} }
@@ -1406,26 +1408,26 @@ public class GameManagerRound1 : GameManagerBase
{ {
Random.InitState(Networking.GetServerTimeInMilliseconds()); Random.InitState(Networking.GetServerTimeInMilliseconds());
VRCPlayerApi[] Randomiser = new VRCPlayerApi[2]; string[] Randomiser = new string[2];
Randomiser[0] = Number1; Randomiser[0] = SortedPodiums[0].PlayerName;
Randomiser[1] = Number2; Randomiser[1] = SortedPodiums[1].PlayerName;
int RandomIndex = Random.Range(0, 2); int RandomIndex = Random.Range(0, Randomiser.Length);
WinningPlayers[0] = Randomiser[RandomIndex].displayName; WinningPlayers[0] = Randomiser[RandomIndex];
WinningPlayers[1] = Randomiser[(RandomIndex + 1) % 2].displayName; WinningPlayers[1] = Randomiser[(RandomIndex + 1) % Randomiser.Length];
Interface.HeaderUI.text = "Tie For First"; Interface.HeaderUI.text = "Tie For First";
Interface.CommentUI.text = Interface.CommentUI.text =
"- " + Number1.displayName + " and " + Number2.displayName + " are tied for first place.\n" + "- " + SortedPodiums[0].PlayerName + " and " + SortedPodiums[1].PlayerName + " are tied for first place.\n" +
"- Both will move on to the next round."; "- Both will move on to the next round.";
} }
else else
{ {
WinningPlayers[0] = Number1.displayName; WinningPlayers[0] = SortedPodiums[0].PlayerName;
WinningPlayers[1] = Number2.displayName; WinningPlayers[1] = SortedPodiums[1].PlayerName;
Interface.HeaderUI.text = "Winners"; Interface.HeaderUI.text = "Winners";
Interface.CommentUI.text = Number1.displayName + " and " + Number2.displayName + " will move on to the next round."; Interface.CommentUI.text = SortedPodiums[0].PlayerName + " and " + SortedPodiums[1].PlayerName + " will move on to the next round.";
} }
_CaseManager.SetCurrentWinningPlayers(WinningPlayers); _CaseManager.SetCurrentWinningPlayers(WinningPlayers);
@@ -1485,6 +1487,8 @@ public class GameManagerRound1 : GameManagerBase
{ {
_CurrentQuestionType = RoundSegmentType.Tiebreaker; _CurrentQuestionType = RoundSegmentType.Tiebreaker;
LoadTiebreakerData();
EnableInteraction("Advance To Tiebreaker"); EnableInteraction("Advance To Tiebreaker");
} }
else else
@@ -1537,67 +1541,52 @@ public class GameManagerRound1 : GameManagerBase
private void BeginTiebreakerRound() private void BeginTiebreakerRound()
{ {
HostCardBetweenRoundsInterface Interface = if (_TiebreakerJSONString == "")
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments); {
Interface.HeaderUI.text = "Preparing tiebreaker..."; HostCardBetweenRoundsInterface BetweenSegmentsInterface =
Interface.CommentUI.text = ""; (HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
BetweenSegmentsInterface.HeaderUI.text = "Preparing tiebreaker...";
BetweenSegmentsInterface.CommentUI.text = "";
VRCStringDownloader.LoadUrl(_TiebreakerData, (IUdonEventReceiver)this); _TiebreakerLoadAttempts++;
if (_TiebreakerLoadAttempts >= 3)
{
BetweenSegmentsInterface.CommentUI.text = $"[ERROR] Failed to load tiebreaker after {_TiebreakerLoadAttempts} attempts.";
EnableInteraction();
return;
}
SendCustomEventDelayedSeconds(nameof(BeginTiebreakerRound), 1.0f);
return;
}
ReloadTiebreakerData();
} }
public override void OnStringLoadSuccess(IVRCStringDownload TiebreakerString) public void ReloadTiebreakerData()
{ {
HostCardTiebreakerInterface Interface = HostCardTiebreakerInterface Interface =
(HostCardTiebreakerInterface)GetHostCardInterface(RoundSegmentType.Tiebreaker); (HostCardTiebreakerInterface)GetHostCardInterface(RoundSegmentType.Tiebreaker);
string ErrorString = ""; string ErrorString = "";
string JSONString = TiebreakerString.Result; if (VRCJson.TryDeserializeFromJson(_TiebreakerJSONString, out DataToken JSONResult))
if (VRCJson.TryDeserializeFromJson(JSONString, out DataToken JSONResult))
{ {
if (JSONResult.TokenType == TokenType.DataDictionary) if (JSONResult.TokenType == TokenType.DataDictionary)
{ {
DataDictionary TiebreakerDictionary = JSONResult.DataDictionary; DataDictionary TiebreakerDictionary = JSONResult.DataDictionary;
DataList TiebreakerRegions = TiebreakerDictionary.GetKeys(); if (!TiebreakerDictionary.ContainsKey("Version"))
Random.InitState(Networking.GetServerTimeInMilliseconds());
int TiebreakerIndex = Random.Range(0, TiebreakerRegions.Count);
string TiebreakerRegion = TiebreakerRegions[TiebreakerIndex].String;
Interface.ChoiceUI[1].text = TiebreakerRegion;
if (TiebreakerDictionary[TiebreakerRegion].TokenType == TokenType.DataDictionary)
{ {
DataDictionary RegionDictionary = TiebreakerDictionary[TiebreakerRegion].DataDictionary; ErrorString = ParseTiebreakerData_v1(Interface, TiebreakerDictionary);
if (RegionDictionary.ContainsKey("Type") && RegionDictionary.ContainsKey("Key Locations"))
{
Interface.HeaderUI.text = "Tiebreaker | " + RegionDictionary["Type"].String;
if (RegionDictionary["Key Locations"].TokenType == TokenType.DataList)
{
for (int i = 0; i < Interface.CluesUI.Length; i++)
{
Interface.CluesUI[i].text = "";
}
DataList KeyLocations = RegionDictionary["Key Locations"].DataList;
for (int i = 0; i < KeyLocations.Count && i < Interface.CluesUI.Length; i++)
{
Interface.CluesUI[i].text = KeyLocations[i].String;
}
EnableBuzzInPeriodForPlayer(_TiebreakerPlayerNumbers[0]);
EnableBuzzInPeriodForPlayer(_TiebreakerPlayerNumbers[1]);
}
else
{
ErrorString = "The Key Locations key should be a list of locations.";
}
}
else
{
ErrorString = "Each region entry should have a region type and a list of key locations.";
}
} }
else else
{ {
ErrorString = "Ensure the elements of the root dictionary are all dictionaries."; int TieBreakerVersion = (int)TiebreakerDictionary["Version"].Number;
switch(TieBreakerVersion)
{
case 2:
ParseTiebreakerData_v2(Interface, TiebreakerDictionary); break;
default:
ErrorString = "No version information could be parsed for this JSON file."; break;
}
} }
} }
else else
@@ -1614,6 +1603,107 @@ public class GameManagerRound1 : GameManagerBase
{ {
Debug.LogError("Malformed tiebreaker data file. " + ErrorString); Debug.LogError("Malformed tiebreaker data file. " + ErrorString);
} }
else
{
EnableBuzzInPeriodForPlayer(_TiebreakerPlayerNumbers[0]);
EnableBuzzInPeriodForPlayer(_TiebreakerPlayerNumbers[1]);
}
}
private string ParseTiebreakerData_v1(HostCardTiebreakerInterface Interface, DataDictionary TiebreakerDictionary)
{
DataList TiebreakerRegions = TiebreakerDictionary.GetKeys();
Random.InitState(Networking.GetServerTimeInMilliseconds());
int TiebreakerIndex = Random.Range(0, TiebreakerRegions.Count);
string TiebreakerRegion = TiebreakerRegions[TiebreakerIndex].String;
Interface.ChoiceUI[1].text = TiebreakerRegion;
if (TiebreakerDictionary[TiebreakerRegion].TokenType == TokenType.DataDictionary)
{
DataDictionary RegionDictionary = TiebreakerDictionary[TiebreakerRegion].DataDictionary;
if (RegionDictionary.ContainsKey("Type") && RegionDictionary.ContainsKey("Key Locations"))
{
Interface.HeaderUI.text = "Tiebreaker | " + RegionDictionary["Type"].String;
if (RegionDictionary["Key Locations"].TokenType == TokenType.DataList)
{
for (int i = 0; i < Interface.CluesUI.Length; i++)
{
Interface.CluesUI[i].text = "";
}
DataList KeyLocations = RegionDictionary["Key Locations"].DataList;
for (int i = 0; i < KeyLocations.Count && i < Interface.CluesUI.Length; i++)
{
Interface.CluesUI[i].text = KeyLocations[i].String;
}
}
else
{
return "The Key Locations key should be a list of locations.";
}
}
else
{
return "Each region entry should have a region type and a list of key locations.";
}
}
else
{
return "Ensure the elements of the root dictionary are all dictionaries.";
}
return "";
}
private string ParseTiebreakerData_v2(HostCardTiebreakerInterface Interface, DataDictionary TiebreakerDictionary)
{
if (TiebreakerDictionary.ContainsKey("Categories") && TiebreakerDictionary["Categories"].TokenType == TokenType.DataDictionary)
{
DataDictionary Categories = TiebreakerDictionary["Categories"].DataDictionary;
DataList TiebreakerRegions = Categories.GetKeys();
Random.InitState(Networking.GetServerTimeInMilliseconds());
int TiebreakerIndex = Random.Range(0, TiebreakerRegions.Count);
string TiebreakerCategory = TiebreakerRegions[TiebreakerIndex].String;
Interface.HeaderUI.text = "Tiebreaker | " + TiebreakerCategory;
if (Categories[TiebreakerCategory].TokenType == TokenType.DataDictionary)
{
DataDictionary Locations = Categories[TiebreakerCategory].DataDictionary;
DataList TiebreakerLocations = Locations.GetKeys();
int LocationIndex = Random.Range(0, TiebreakerLocations.Count);
string TiebreakerLocation = TiebreakerLocations[LocationIndex].String;
Interface.ChoiceUI[1].text = TiebreakerLocation;
if (Locations[TiebreakerLocation].TokenType == TokenType.DataList)
{
for (int i = 0; i < Interface.CluesUI.Length; i++)
{
Interface.CluesUI[i].text = "";
}
DataList KeyLocations = Locations[TiebreakerLocation].DataList;
for (int i = 0; i < KeyLocations.Count && i < Interface.CluesUI.Length; i++)
{
Interface.CluesUI[i].text = KeyLocations[i].String;
}
}
else
{
return "Incorrect location format. Ensure all location keys have array values.";
}
}
else
{
return "Incorrect category format. Ensure all categories are dictionary types.";
}
}
else
{
return "No categories in the JSON file. Ensure all categories are dictionary types.";
}
return "";
} }
public void TiebreakerIncorrectResponse() public void TiebreakerIncorrectResponse()
@@ -1641,7 +1731,8 @@ public class GameManagerRound1 : GameManagerBase
_CameraControllerRound1.ActivateCorrectAnswerToHostAllPlayersCameraSwitcher(); _CameraControllerRound1.ActivateCorrectAnswerToHostAllPlayersCameraSwitcher();
EnableInteraction("End Tiebreaker"); AdvanceQuestion();
//EnableInteraction("End Tiebreaker");
} }
@@ -1994,6 +2085,18 @@ public class GameManagerRound1 : GameManagerBase
} }
} }
private void LoadTiebreakerData()
{
_TiebreakerJSONString = "";
_TiebreakerLoadAttempts = 0;
VRCStringDownloader.LoadUrl(_TiebreakerData, (IUdonEventReceiver)this);
}
public override void OnStringLoadSuccess(IVRCStringDownload TiebreakerString)
{
_TiebreakerJSONString = TiebreakerString.Result;
_TiebreakerLoadAttempts = 0;
}
private HostCardBetweenRoundsInterface ShowBetweenQuestionsInterface() private HostCardBetweenRoundsInterface ShowBetweenQuestionsInterface()
{ {
_VideoPlayer.ShowScreen = ClueScreenType.Blank; _VideoPlayer.ShowScreen = ClueScreenType.Blank;
@@ -44,7 +44,7 @@ MonoBehaviour:
Data: Data:
- Name: - Name:
Entry: 12 Entry: 12
Data: 32 Data: 33
- Name: - Name:
Entry: 7 Entry: 7
Data: Data:
@@ -1313,16 +1313,70 @@ MonoBehaviour:
Data: Data:
- Name: $k - Name: $k
Entry: 1 Entry: 1
Data: _CurrentlyActiveMap Data: _PlayerMarker
- Name: $v - Name: $v
Entry: 7 Entry: 7
Data: 85|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor Data: 85|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _PlayerMarker
- Name: <UserType>k__BackingField
Entry: 9
Data: 31
- Name: <SystemType>k__BackingField
Entry: 9
Data: 4
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 86|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 87|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _CurrentlyActiveMap
- Name: $v
Entry: 7
Data: 88|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField - Name: <Name>k__BackingField
Entry: 1 Entry: 1
Data: _CurrentlyActiveMap Data: _CurrentlyActiveMap
- Name: <UserType>k__BackingField - Name: <UserType>k__BackingField
Entry: 7 Entry: 7
Data: 86|System.RuntimeType, mscorlib Data: 89|System.RuntimeType, mscorlib
- Name: - Name:
Entry: 1 Entry: 1
Data: ContinentMap, Assembly-CSharp Data: ContinentMap, Assembly-CSharp
@@ -1331,7 +1385,7 @@ MonoBehaviour:
Data: Data:
- Name: <SystemType>k__BackingField - Name: <SystemType>k__BackingField
Entry: 7 Entry: 7
Data: 87|System.RuntimeType, mscorlib Data: 90|System.RuntimeType, mscorlib
- Name: - Name:
Entry: 1 Entry: 1
Data: System.Int32, mscorlib Data: System.Int32, mscorlib
@@ -1352,19 +1406,19 @@ MonoBehaviour:
Data: false Data: false
- Name: _fieldAttributes - Name: _fieldAttributes
Entry: 7 Entry: 7
Data: 88|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib Data: 91|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name: - Name:
Entry: 12 Entry: 12
Data: 2 Data: 2
- Name: - Name:
Entry: 7 Entry: 7
Data: 89|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime Data: 92|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name: - Name:
Entry: 8 Entry: 8
Data: Data:
- Name: - Name:
Entry: 7 Entry: 7
Data: 90|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime Data: 93|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime
- Name: - Name:
Entry: 8 Entry: 8
Data: Data:
@@ -1388,16 +1442,16 @@ MonoBehaviour:
Data: _ActiveMarker Data: _ActiveMarker
- Name: $v - Name: $v
Entry: 7 Entry: 7
Data: 91|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor Data: 94|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField - Name: <Name>k__BackingField
Entry: 1 Entry: 1
Data: _ActiveMarker Data: _ActiveMarker
- Name: <UserType>k__BackingField - Name: <UserType>k__BackingField
Entry: 9 Entry: 9
Data: 87 Data: 90
- Name: <SystemType>k__BackingField - Name: <SystemType>k__BackingField
Entry: 9 Entry: 9
Data: 87 Data: 90
- Name: <SyncMode>k__BackingField - Name: <SyncMode>k__BackingField
Entry: 7 Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -1412,19 +1466,19 @@ MonoBehaviour:
Data: false Data: false
- Name: _fieldAttributes - Name: _fieldAttributes
Entry: 7 Entry: 7
Data: 92|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib Data: 95|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name: - Name:
Entry: 12 Entry: 12
Data: 2 Data: 2
- Name: - Name:
Entry: 7 Entry: 7
Data: 93|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime Data: 96|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name: - Name:
Entry: 8 Entry: 8
Data: Data:
- Name: - Name:
Entry: 7 Entry: 7
Data: 94|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime Data: 97|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime
- Name: - Name:
Entry: 8 Entry: 8
Data: Data:
@@ -1446,69 +1500,69 @@ MonoBehaviour:
- Name: $k - Name: $k
Entry: 1 Entry: 1
Data: _StageIndex Data: _StageIndex
- Name: $v
Entry: 7
Data: 95|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _StageIndex
- Name: <UserType>k__BackingField
Entry: 9
Data: 87
- Name: <SystemType>k__BackingField
Entry: 9
Data: 87
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 3
Data: 1
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 96|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 97|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _ContinentData
- Name: $v - Name: $v
Entry: 7 Entry: 7
Data: 98|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor Data: 98|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _StageIndex
- Name: <UserType>k__BackingField
Entry: 9
Data: 90
- Name: <SystemType>k__BackingField
Entry: 9
Data: 90
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 3
Data: 1
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 99|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 100|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _ContinentData
- Name: $v
Entry: 7
Data: 101|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField - Name: <Name>k__BackingField
Entry: 1 Entry: 1
Data: _ContinentData Data: _ContinentData
- Name: <UserType>k__BackingField - Name: <UserType>k__BackingField
Entry: 7 Entry: 7
Data: 99|System.RuntimeType, mscorlib Data: 102|System.RuntimeType, mscorlib
- Name: - Name:
Entry: 1 Entry: 1
Data: VRC.SDK3.Data.DataDictionary, VRCSDK3 Data: VRC.SDK3.Data.DataDictionary, VRCSDK3
@@ -1517,7 +1571,7 @@ MonoBehaviour:
Data: Data:
- Name: <SystemType>k__BackingField - Name: <SystemType>k__BackingField
Entry: 9 Entry: 9
Data: 99 Data: 102
- Name: <SyncMode>k__BackingField - Name: <SyncMode>k__BackingField
Entry: 7 Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -1532,7 +1586,7 @@ MonoBehaviour:
Data: false Data: false
- Name: _fieldAttributes - Name: _fieldAttributes
Entry: 7 Entry: 7
Data: 100|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], Data: 103|System.Collections.Generic.List`1[[System.Attribute, mscorlib]],
mscorlib mscorlib
- Name: - Name:
Entry: 12 Entry: 12
@@ -1557,13 +1611,13 @@ MonoBehaviour:
Data: _GameStatus Data: _GameStatus
- Name: $v - Name: $v
Entry: 7 Entry: 7
Data: 101|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor Data: 104|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField - Name: <Name>k__BackingField
Entry: 1 Entry: 1
Data: _GameStatus Data: _GameStatus
- Name: <UserType>k__BackingField - Name: <UserType>k__BackingField
Entry: 7 Entry: 7
Data: 102|System.RuntimeType, mscorlib Data: 105|System.RuntimeType, mscorlib
- Name: - Name:
Entry: 1 Entry: 1
Data: GameStatus, Assembly-CSharp Data: GameStatus, Assembly-CSharp
@@ -1572,62 +1626,7 @@ MonoBehaviour:
Data: Data:
- Name: <SystemType>k__BackingField - Name: <SystemType>k__BackingField
Entry: 9 Entry: 9
Data: 87 Data: 90
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 3
Data: 1
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 103|System.Collections.Generic.List`1[[System.Attribute, mscorlib]],
mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 104|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _RunTimer
- Name: $v
Entry: 7
Data: 105|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _RunTimer
- Name: <UserType>k__BackingField
Entry: 9
Data: 41
- Name: <SystemType>k__BackingField
Entry: 9
Data: 41
- Name: <SyncMode>k__BackingField - Name: <SyncMode>k__BackingField
Entry: 7 Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -1670,19 +1669,19 @@ MonoBehaviour:
Data: Data:
- Name: $k - Name: $k
Entry: 1 Entry: 1
Data: _Timer Data: _RunTimer
- Name: $v - Name: $v
Entry: 7 Entry: 7
Data: 108|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor Data: 108|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField - Name: <Name>k__BackingField
Entry: 1 Entry: 1
Data: _Timer Data: _RunTimer
- Name: <UserType>k__BackingField - Name: <UserType>k__BackingField
Entry: 9 Entry: 9
Data: 87 Data: 41
- Name: <SystemType>k__BackingField - Name: <SystemType>k__BackingField
Entry: 9 Entry: 9
Data: 87 Data: 41
- Name: <SyncMode>k__BackingField - Name: <SyncMode>k__BackingField
Entry: 7 Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -1725,19 +1724,19 @@ MonoBehaviour:
Data: Data:
- Name: $k - Name: $k
Entry: 1 Entry: 1
Data: _SuccessCounter Data: _Timer
- Name: $v - Name: $v
Entry: 7 Entry: 7
Data: 111|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor Data: 111|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField - Name: <Name>k__BackingField
Entry: 1 Entry: 1
Data: _SuccessCounter Data: _Timer
- Name: <UserType>k__BackingField - Name: <UserType>k__BackingField
Entry: 9 Entry: 9
Data: 87 Data: 90
- Name: <SystemType>k__BackingField - Name: <SystemType>k__BackingField
Entry: 9 Entry: 9
Data: 87 Data: 90
- Name: <SyncMode>k__BackingField - Name: <SyncMode>k__BackingField
Entry: 7 Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -1756,19 +1755,13 @@ MonoBehaviour:
mscorlib mscorlib
- Name: - Name:
Entry: 12 Entry: 12
Data: 2 Data: 1
- Name: - Name:
Entry: 7 Entry: 7
Data: 113|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime Data: 113|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name: - Name:
Entry: 8 Entry: 8
Data: Data:
- Name:
Entry: 7
Data: 114|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
- Name: - Name:
Entry: 13 Entry: 13
Data: Data:
@@ -1786,19 +1779,19 @@ MonoBehaviour:
Data: Data:
- Name: $k - Name: $k
Entry: 1 Entry: 1
Data: _FailureCounter Data: _SuccessCounter
- Name: $v - Name: $v
Entry: 7 Entry: 7
Data: 115|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor Data: 114|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField - Name: <Name>k__BackingField
Entry: 1 Entry: 1
Data: _FailureCounter Data: _SuccessCounter
- Name: <UserType>k__BackingField - Name: <UserType>k__BackingField
Entry: 9 Entry: 9
Data: 87 Data: 90
- Name: <SystemType>k__BackingField - Name: <SystemType>k__BackingField
Entry: 9 Entry: 9
Data: 87 Data: 90
- Name: <SyncMode>k__BackingField - Name: <SyncMode>k__BackingField
Entry: 7 Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -1813,20 +1806,81 @@ MonoBehaviour:
Data: false Data: false
- Name: _fieldAttributes - Name: _fieldAttributes
Entry: 7 Entry: 7
Data: 116|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], Data: 115|System.Collections.Generic.List`1[[System.Attribute, mscorlib]],
mscorlib mscorlib
- Name: - Name:
Entry: 12 Entry: 12
Data: 2 Data: 2
- Name: - Name:
Entry: 7 Entry: 7
Data: 117|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime Data: 116|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name: - Name:
Entry: 8 Entry: 8
Data: Data:
- Name: - Name:
Entry: 7 Entry: 7
Data: 118|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime Data: 117|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _FailureCounter
- Name: $v
Entry: 7
Data: 118|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _FailureCounter
- Name: <UserType>k__BackingField
Entry: 9
Data: 90
- Name: <SystemType>k__BackingField
Entry: 9
Data: 90
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 3
Data: 1
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 119|System.Collections.Generic.List`1[[System.Attribute, mscorlib]],
mscorlib
- Name:
Entry: 12
Data: 2
- Name:
Entry: 7
Data: 120|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data: 121|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime
- Name: - Name:
Entry: 8 Entry: 8
Data: Data:
@@ -1850,13 +1904,13 @@ MonoBehaviour:
Data: _CameraControllerRound3 Data: _CameraControllerRound3
- Name: $v - Name: $v
Entry: 7 Entry: 7
Data: 119|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor Data: 122|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField - Name: <Name>k__BackingField
Entry: 1 Entry: 1
Data: _CameraControllerRound3 Data: _CameraControllerRound3
- Name: <UserType>k__BackingField - Name: <UserType>k__BackingField
Entry: 7 Entry: 7
Data: 120|System.RuntimeType, mscorlib Data: 123|System.RuntimeType, mscorlib
- Name: - Name:
Entry: 1 Entry: 1
Data: CameraControllerRound3, Assembly-CSharp Data: CameraControllerRound3, Assembly-CSharp
@@ -1878,61 +1932,6 @@ MonoBehaviour:
- Name: <IsSerialized>k__BackingField - Name: <IsSerialized>k__BackingField
Entry: 5 Entry: 5
Data: false Data: false
- Name: _fieldAttributes
Entry: 7
Data: 121|System.Collections.Generic.List`1[[System.Attribute, mscorlib]],
mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _VideoPlayerTimer
- Name: $v
Entry: 7
Data: 122|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _VideoPlayerTimer
- Name: <UserType>k__BackingField
Entry: 7
Data: 123|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.Single, mscorlib
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 123
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
- Name: _fieldAttributes - Name: _fieldAttributes
Entry: 7 Entry: 7
Data: 124|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], Data: 124|System.Collections.Generic.List`1[[System.Attribute, mscorlib]],
@@ -1952,6 +1951,61 @@ MonoBehaviour:
- Name: - Name:
Entry: 8 Entry: 8
Data: Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _VideoPlayerTimer
- Name: $v
Entry: 7
Data: 125|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _VideoPlayerTimer
- Name: <UserType>k__BackingField
Entry: 7
Data: 126|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.Single, mscorlib
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 126
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 127|System.Collections.Generic.List`1[[System.Attribute, mscorlib]],
mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name: - Name:
Entry: 13 Entry: 13
Data: Data:
@@ -44,6 +44,8 @@ public class GameManagerRound3 : GameManagerBase
[SerializeField] private CameraOverlay[] _NewspaperCameraOverlays; [SerializeField] private CameraOverlay[] _NewspaperCameraOverlays;
[SerializeField] private RandomVideoPlayer _EndingPlayer; [SerializeField] private RandomVideoPlayer _EndingPlayer;
[SerializeField] private PositionMarker _PlayerMarker;
[UdonSynced, FieldChangeCallback(nameof(CurrentlyActiveMap))] private ContinentMap _CurrentlyActiveMap = ContinentMap.INDEX_MAX; [UdonSynced, FieldChangeCallback(nameof(CurrentlyActiveMap))] private ContinentMap _CurrentlyActiveMap = ContinentMap.INDEX_MAX;
[UdonSynced, FieldChangeCallback(nameof(ActiveMarker))] private int _ActiveMarker = 0; [UdonSynced, FieldChangeCallback(nameof(ActiveMarker))] private int _ActiveMarker = 0;
[UdonSynced] private int _StageIndex = 0; [UdonSynced] private int _StageIndex = 0;
@@ -127,6 +129,15 @@ public class GameManagerRound3 : GameManagerBase
DeinitialiseGameplayCameraFollowers(); DeinitialiseGameplayCameraFollowers();
DeinitialiseEndingCameraFollowers(); DeinitialiseEndingCameraFollowers();
string[] WinningPlayers = _CaseManager.GetCurrentWinningPlayers();
if (WinningPlayers.Length > 0)
{
_PlayerMarker.SetPlayer(WinningPlayers[0]);
}
else
{
_PlayerMarker.SetPlayer(_CaseManager.GetHostOwner().displayName);
}
base.InitialiseGameMode(); base.InitialiseGameMode();
RequestSerialization(); RequestSerialization();
@@ -292,6 +303,8 @@ public class GameManagerRound3 : GameManagerBase
_EndingPlayer.LoadRandomVideo(); _EndingPlayer.LoadRandomVideo();
_PlayerMarker.ClearPlayer();
StartTimer(); StartTimer();
} }
Submodule Assets/VRChatCameraSystem updated: 4cd2ee5f2d...941280e537