diff --git a/Assets/Arts/rtaImage.png.meta b/Assets/Arts/rtaImage.png.meta index a35e0c7..4e49d11 100644 --- a/Assets/Arts/rtaImage.png.meta +++ b/Assets/Arts/rtaImage.png.meta @@ -6,7 +6,7 @@ TextureImporter: serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,13 +37,13 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 + wrapU: 1 + wrapV: 1 wrapW: 0 - nPOTScale: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -52,9 +52,9 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 - textureType: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -99,7 +99,7 @@ TextureImporter: outline: [] physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/Scenes/Samir.unity b/Assets/Scenes/Samir.unity index 2861004..3aecef3 100644 --- a/Assets/Scenes/Samir.unity +++ b/Assets/Scenes/Samir.unity @@ -583,6 +583,81 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 188866862} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &230940465 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 230940466} + - component: {fileID: 230940468} + - component: {fileID: 230940467} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &230940466 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 230940465} + 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: 360155762} + 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!114 &230940467 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 230940465} + 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: 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_Sprite: {fileID: 21300000, guid: 963d42bfaa82c3842b3a09438eb1e58b, type: 3} + m_Type: 0 + 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!222 &230940468 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 230940465} + m_CullTransparentMesh: 1 --- !u!1001 &256841826 PrefabInstance: m_ObjectHideFlags: 0 @@ -799,7 +874,7 @@ Camera: m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1} m_projectionMatrixMode: 1 m_GateFitMode: 2 m_FOVAxisMode: 0 @@ -934,6 +1009,55 @@ Transform: - {fileID: 1892060568} m_Father: {fileID: 1958973072} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &360155761 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 360155762} + - component: {fileID: 360155763} + m_Layer: 5 + m_Name: QuizUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &360155762 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 360155761} + 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: 230940466} + m_Father: {fileID: 461561940} + 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!114 &360155763 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 360155761} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c4d1dd54097760649a845050023e779e, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &361121842 GameObject: m_ObjectHideFlags: 0 @@ -1088,6 +1212,108 @@ MonoBehaviour: m_LightCookieSize: {x: 1, y: 1} m_LightCookieOffset: {x: 0, y: 0} m_SoftShadowQuality: 1 +--- !u!1 &461561936 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 461561940} + - component: {fileID: 461561939} + - component: {fileID: 461561938} + - component: {fileID: 461561937} + m_Layer: 5 + m_Name: UI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &461561937 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 461561936} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &461561938 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 461561936} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 3840, y: 2160} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &461561939 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 461561936} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &461561940 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 461561936} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 360155762} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} --- !u!1 &564588868 GameObject: m_ObjectHideFlags: 0 @@ -2578,6 +2804,95 @@ Transform: type: 3} m_PrefabInstance: {fileID: 1674755498} m_PrefabAsset: {fileID: 0} +--- !u!1 &1686373283 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1686373286} + - component: {fileID: 1686373285} + - component: {fileID: 1686373284} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1686373284 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1686373283} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_MoveRepeatDelay: 0.5 + m_MoveRepeatRate: 0.1 + m_XRTrackingOrigin: {fileID: 0} + m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_PointAction: {fileID: -1654692200621890270, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_MoveAction: {fileID: -8784545083839296357, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_SubmitAction: {fileID: 392368643174621059, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_CancelAction: {fileID: 7727032971491509709, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_LeftClickAction: {fileID: 3001919216989983466, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_MiddleClickAction: {fileID: -2185481485913320682, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_RightClickAction: {fileID: -4090225696740746782, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_ScrollWheelAction: {fileID: 6240969308177333660, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_TrackedDevicePositionAction: {fileID: 6564999863303420839, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_TrackedDeviceOrientationAction: {fileID: 7970375526676320489, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_DeselectOnBackgroundClick: 1 + m_PointerBehavior: 0 + m_CursorLockBehavior: 0 +--- !u!114 &1686373285 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1686373283} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &1686373286 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1686373283} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1721698428 GameObject: m_ObjectHideFlags: 0 @@ -3078,4 +3393,6 @@ SceneRoots: - {fileID: 1986501444} - {fileID: 1958973072} - {fileID: 1456785129} + - {fileID: 461561940} + - {fileID: 1686373286} - {fileID: 992135812} diff --git a/Assets/Scripts/Core/IState.cs b/Assets/Scripts/Core/IState.cs new file mode 100644 index 0000000..2d1ed80 --- /dev/null +++ b/Assets/Scripts/Core/IState.cs @@ -0,0 +1,9 @@ +namespace GameOff.Core +{ + public interface IState + { + public void EnterState(); + public void ExitState(); + public void UpdateState(); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/IState.cs.meta b/Assets/Scripts/Core/IState.cs.meta new file mode 100644 index 0000000..25aa999 --- /dev/null +++ b/Assets/Scripts/Core/IState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e273a6f8a5b548f3a1998cb099a4933f +timeCreated: 1731008574 \ No newline at end of file diff --git a/Assets/Scripts/Core/PlayerMain.cs b/Assets/Scripts/Core/PlayerMain.cs index 89d89ee..81514b4 100644 --- a/Assets/Scripts/Core/PlayerMain.cs +++ b/Assets/Scripts/Core/PlayerMain.cs @@ -8,7 +8,13 @@ namespace GameOff.Core { public static PlayerMain Instance { get; private set; } + public event EventHandler OnStateUpdate; + private PlayerInputHandler _inputHandler; + + private IState _currentState; + private PlayerClassState _classState; + private PlayerQuizState _quizState; private void Awake() { @@ -26,11 +32,30 @@ namespace GameOff.Core private void Start() { _inputHandler.OnChangeState += InputHandler_OnChangeState; + + _classState = new PlayerClassState(); + _quizState = new PlayerQuizState(); + _currentState = _classState; + } + + private void Update() + { + _currentState.UpdateState(); } private void InputHandler_OnChangeState(object sender, EventArgs e) { - Debug.Log("Change"); + bool isClass = _currentState is PlayerQuizState; + Debug.Log(isClass); + ChangeState(isClass ? _quizState : _classState); + OnStateUpdate?.Invoke(this, isClass); + } + + private void ChangeState(IState next) + { + _currentState.ExitState(); + _currentState = next; + _currentState.EnterState(); } } } diff --git a/Assets/Scripts/Player/PlayerClassState.cs b/Assets/Scripts/Player/PlayerClassState.cs new file mode 100644 index 0000000..a8e4404 --- /dev/null +++ b/Assets/Scripts/Player/PlayerClassState.cs @@ -0,0 +1,19 @@ +using GameOff.Core; + +namespace GameOff.Player +{ + public class PlayerClassState: IState + { + public void EnterState() + { + } + + public void ExitState() + { + } + + public void UpdateState() + { + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Player/PlayerClassState.cs.meta b/Assets/Scripts/Player/PlayerClassState.cs.meta new file mode 100644 index 0000000..6c0c58c --- /dev/null +++ b/Assets/Scripts/Player/PlayerClassState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 654bc557d58e4be6aa742891221f8380 +timeCreated: 1731008624 \ No newline at end of file diff --git a/Assets/Scripts/Player/PlayerQuizState.cs b/Assets/Scripts/Player/PlayerQuizState.cs new file mode 100644 index 0000000..20c4f07 --- /dev/null +++ b/Assets/Scripts/Player/PlayerQuizState.cs @@ -0,0 +1,19 @@ +using GameOff.Core; + +namespace GameOff.Player +{ + public class PlayerQuizState: IState + { + public void EnterState() + { + } + + public void ExitState() + { + } + + public void UpdateState() + { + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Player/PlayerQuizState.cs.meta b/Assets/Scripts/Player/PlayerQuizState.cs.meta new file mode 100644 index 0000000..47f669a --- /dev/null +++ b/Assets/Scripts/Player/PlayerQuizState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9d7014a549144da2ab03349f7e6edba3 +timeCreated: 1731008686 \ No newline at end of file diff --git a/Assets/Scripts/UI.meta b/Assets/Scripts/UI.meta new file mode 100644 index 0000000..2694ad2 --- /dev/null +++ b/Assets/Scripts/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cb2291d7295a5e94691f40c3246693b2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/Quiz.meta b/Assets/Scripts/UI/Quiz.meta new file mode 100644 index 0000000..d567755 --- /dev/null +++ b/Assets/Scripts/UI/Quiz.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1c653d70d4394a646ad534ec3ddc7974 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/Quiz/QuizHolderUI.cs b/Assets/Scripts/UI/Quiz/QuizHolderUI.cs new file mode 100644 index 0000000..f0854f0 --- /dev/null +++ b/Assets/Scripts/UI/Quiz/QuizHolderUI.cs @@ -0,0 +1,21 @@ +using System; +using GameOff.Core; +using UnityEngine; + +namespace GameOff.UI.Quiz +{ + public class QuizHolderUI : MonoBehaviour + { + private void Start() + { + PlayerMain.Instance.OnStateUpdate += PlayerMain_OnStateUpdate; + + gameObject.SetActive(false); + } + + private void PlayerMain_OnStateUpdate(object sender, bool e) + { + gameObject.SetActive(e); + } + } +} diff --git a/Assets/Scripts/UI/Quiz/QuizHolderUI.cs.meta b/Assets/Scripts/UI/Quiz/QuizHolderUI.cs.meta new file mode 100644 index 0000000..a02e717 --- /dev/null +++ b/Assets/Scripts/UI/Quiz/QuizHolderUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4d1dd54097760649a845050023e779e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: