tweak: update mini game

master
tiendat3699 2024-04-16 10:57:02 +07:00
parent 4855df2b25
commit d395793750
19 changed files with 419 additions and 26 deletions

View File

@ -45,11 +45,11 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
_availableStates: _availableStates:
- GadGame.State.IdleState - GadGame.State.MainFlowState.IdleState
- GadGame.State.PassByState - GadGame.State.MainFlowState.PassByState
- GadGame.State.ViewedState - GadGame.State.MainFlowState.ViewedState
- GadGame.State.EngageState - GadGame.State.MainFlowState.EngageState
- GadGame.State.PlayGameState - GadGame.State.MainFlowState.PlayGameState
- GadGame.State.RewardState - GadGame.State.MainFlowState.RewardState
- GadGame.State.CTAState - GadGame.State.MainFlowState.CTAState
SceneFlowConfig: {fileID: 11400000, guid: 191a17431b0adcb48aea29fa675b8c5a, type: 2} SceneFlowConfig: {fileID: 11400000, guid: 191a17431b0adcb48aea29fa675b8c5a, type: 2}

View File

@ -100,6 +100,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
_reduceScore: 5 _reduceScore: 5
_rb: {fileID: 9129339961973675669}
--- !u!70 &4999977869840881797 --- !u!70 &4999977869840881797
CapsuleCollider2D: CapsuleCollider2D:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -150,7 +151,7 @@ Rigidbody2D:
m_Mass: 1 m_Mass: 1
m_LinearDrag: 0 m_LinearDrag: 0
m_AngularDrag: 0.05 m_AngularDrag: 0.05
m_GravityScale: 1 m_GravityScale: 0.5
m_Material: {fileID: 0} m_Material: {fileID: 0}
m_IncludeLayers: m_IncludeLayers:
serializedVersion: 2 serializedVersion: 2

View File

@ -100,6 +100,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
_score: 1 _score: 1
_rb: {fileID: 4046803137051237507}
--- !u!58 &5776257884050738555 --- !u!58 &5776257884050738555
CircleCollider2D: CircleCollider2D:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -150,7 +151,7 @@ Rigidbody2D:
m_Mass: 1 m_Mass: 1
m_LinearDrag: 0 m_LinearDrag: 0
m_AngularDrag: 0.05 m_AngularDrag: 0.05
m_GravityScale: 1 m_GravityScale: 0.5
m_Material: {fileID: 0} m_Material: {fileID: 0}
m_IncludeLayers: m_IncludeLayers:
serializedVersion: 2 serializedVersion: 2

View File

@ -100,6 +100,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
_score: 1 _score: 1
_rb: {fileID: 841339715954061179}
--- !u!58 &5531060527493243633 --- !u!58 &5531060527493243633
CircleCollider2D: CircleCollider2D:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -150,7 +151,7 @@ Rigidbody2D:
m_Mass: 1 m_Mass: 1
m_LinearDrag: 0 m_LinearDrag: 0
m_AngularDrag: 0.05 m_AngularDrag: 0.05
m_GravityScale: 1 m_GravityScale: 0.5
m_Material: {fileID: 0} m_Material: {fileID: 0}
m_IncludeLayers: m_IncludeLayers:
serializedVersion: 2 serializedVersion: 2

View File

@ -100,6 +100,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
_score: 1 _score: 1
_rb: {fileID: 2588217058180321427}
--- !u!58 &2940210712796906454 --- !u!58 &2940210712796906454
CircleCollider2D: CircleCollider2D:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -150,7 +151,7 @@ Rigidbody2D:
m_Mass: 1 m_Mass: 1
m_LinearDrag: 0 m_LinearDrag: 0
m_AngularDrag: 0.05 m_AngularDrag: 0.05
m_GravityScale: 1 m_GravityScale: 0.5
m_Material: {fileID: 0} m_Material: {fileID: 0}
m_IncludeLayers: m_IncludeLayers:
serializedVersion: 2 serializedVersion: 2

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9882dd2ece9fe5644aa0e5c95294cd09
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -123,6 +123,141 @@ NavMeshSettings:
debug: debug:
m_Flags: 0 m_Flags: 0
m_NavMeshData: {fileID: 0} m_NavMeshData: {fileID: 0}
--- !u!1 &169808668
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 169808669}
- component: {fileID: 169808671}
- component: {fileID: 169808670}
m_Layer: 5
m_Name: ScoreLable
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &169808669
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 169808668}
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: 1901652403}
m_Father: {fileID: 1939570967}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: -100}
m_SizeDelta: {x: 350, y: 50}
m_Pivot: {x: 0, y: 1}
--- !u!114 &169808670
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 169808668}
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: 'Score:'
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, 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: 100
m_fontSizeBase: 100
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 1
m_HorizontalAlignment: 1
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: 20, 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!222 &169808671
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 169808668}
m_CullTransparentMesh: 1
--- !u!1 &408830255 --- !u!1 &408830255
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -296,7 +431,7 @@ GameObject:
- component: {fileID: 1230716511} - component: {fileID: 1230716511}
- component: {fileID: 1230716510} - component: {fileID: 1230716510}
m_Layer: 5 m_Layer: 5
m_Name: Text (TMP) m_Name: Time
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
@ -356,7 +491,7 @@ MonoBehaviour:
m_fontSizeMin: 18 m_fontSizeMin: 18
m_fontSizeMax: 72 m_fontSizeMax: 72
m_fontStyle: 1 m_fontStyle: 1
m_HorizontalAlignment: 2 m_HorizontalAlignment: 4
m_VerticalAlignment: 512 m_VerticalAlignment: 512
m_textAlignment: 65535 m_textAlignment: 65535
m_characterSpacing: 0 m_characterSpacing: 0
@ -385,7 +520,7 @@ MonoBehaviour:
m_VertexBufferAutoSizeReduction: 0 m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1 m_useMaxVisibleDescender: 1
m_pageToDisplay: 1 m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0} m_margin: {x: 0, y: 0, z: 20, w: 0}
m_isUsingLegacyAnimationComponent: 0 m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0 m_isVolumetricText: 0
m_hasFontAssetChanged: 0 m_hasFontAssetChanged: 0
@ -413,11 +548,11 @@ RectTransform:
m_Children: [] m_Children: []
m_Father: {fileID: 1939570967} m_Father: {fileID: 1939570967}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1} m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 0.5, y: 1} m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: -100} m_AnchoredPosition: {x: 0, y: -100}
m_SizeDelta: {x: 200, y: 50} m_SizeDelta: {x: 200, y: 50}
m_Pivot: {x: 0.5, y: 1} m_Pivot: {x: 1, y: 1}
--- !u!1 &1254852289 --- !u!1 &1254852289
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -822,6 +957,140 @@ Transform:
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1901652402
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1901652403}
- component: {fileID: 1901652405}
- component: {fileID: 1901652404}
m_Layer: 5
m_Name: Score
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1901652403
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1901652402}
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: 169808669}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 50}
m_Pivot: {x: 0, y: 0.5}
--- !u!114 &1901652404
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1901652402}
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: 0
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, 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: 100
m_fontSizeBase: 100
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 1
m_HorizontalAlignment: 1
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: 0
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!222 &1901652405
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1901652402}
m_CullTransparentMesh: 1
--- !u!1 &1939570963 --- !u!1 &1939570963
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -917,6 +1186,7 @@ RectTransform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 1230716512} - {fileID: 1230716512}
- {fileID: 169808669}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
@ -973,11 +1243,10 @@ MonoBehaviour:
- GadGame.State.GameState.ResumeGameState - GadGame.State.GameState.ResumeGameState
- GadGame.State.GameState.PlayingGameState - GadGame.State.GameState.PlayingGameState
- GadGame.State.GameState.EndGameState - GadGame.State.GameState.EndGameState
GameTime: 20 GameTime: 60
_basket: {fileID: 1254852291} _basket: {fileID: 1254852291}
_time: {fileID: 1230716510}
_lerp: 10 _lerp: 10
_spawnTime: 1 _spawnTime: 0.5
_bombChange: 0.2 _bombChange: 0.2
_spawnArea: _spawnArea:
serializedVersion: 2 serializedVersion: 2
@ -985,6 +1254,9 @@ MonoBehaviour:
y: 7 y: 7
width: 4.5 width: 4.5
height: 1 height: 1
_gravityScaleRange: {x: 0.1, y: 0.5}
_time: {fileID: 1230716510}
_score: {fileID: 1901652404}
_itemPools: _itemPools:
- _source: {fileID: 343037395040712443, guid: 48f83ca60bcd97e47a2dbf1abb66b320, type: 3} - _source: {fileID: 343037395040712443, guid: 48f83ca60bcd97e47a2dbf1abb66b320, type: 3}
_defaultCapacity: 10 _defaultCapacity: 10

View File

@ -3,7 +3,7 @@ using System.Linq;
using UnityEditor; using UnityEditor;
using UnityEngine; using UnityEngine;
namespace GadGame.Scripts.Editor.PropertyDrawers namespace GadGame.Editor.PropertyDrawers
{ {
[UnityEditor.CustomPropertyDrawer(typeof(SceneReference))] [UnityEditor.CustomPropertyDrawer(typeof(SceneReference))]
public class SceneReferencePropertyDrawer : UnityEditor.PropertyDrawer public class SceneReferencePropertyDrawer : UnityEditor.PropertyDrawer

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d757e373f723438491928461135dda26
timeCreated: 1713237666

View File

@ -0,0 +1,21 @@
using GadGame.SO;
using Sirenix.OdinInspector.Editor;
using Sirenix.Utilities;
using Sirenix.Utilities.Editor;
using UnityEditor;
using UnityEngine;
namespace GadGame.Editor.Window
{
public class SceneFlowConfigWindow : OdinEditorWindow
{
[MenuItem("Game Config/Scene Flow")]
private static void ShowWindow()
{
var window = InspectObject(SceneFlowConfig.GetOrCreateSettings());
window.position = GUIHelper.GetEditorWindowRect().AlignCenter(600, 200);
window.maxSize = new Vector2(600, 200);
window.minSize = new Vector2(600, 200);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: f03a2ecf0b284191a9db4b3935036b57
timeCreated: 1713237691

View File

@ -1,3 +1,4 @@
using System;
using GadGame.Manager; using GadGame.Manager;
using Pools.Runtime; using Pools.Runtime;
using UnityEngine; using UnityEngine;
@ -7,7 +8,21 @@ namespace GadGame.MiniGame
public class Bomb : MonoBehaviour, ICollect public class Bomb : MonoBehaviour, ICollect
{ {
[SerializeField] private int _reduceScore; [SerializeField] private int _reduceScore;
[SerializeField] private Rigidbody2D _rb;
public void Init(float gravityScale = 1)
{
_rb.gravityScale = gravityScale;
}
private void FixedUpdate()
{
if (_rb.position.y <= -10)
{
this.Release();
}
}
public void Collect() public void Collect()
{ {
GameManager.Instance.UpdateScore(-_reduceScore); GameManager.Instance.UpdateScore(-_reduceScore);

View File

@ -7,6 +7,20 @@ namespace GadGame.MiniGame
public class Item : MonoBehaviour, ICollect public class Item : MonoBehaviour, ICollect
{ {
[SerializeField] private int _score; [SerializeField] private int _score;
[SerializeField] private Rigidbody2D _rb;
public void Init(float gravityScale = 1)
{
_rb.gravityScale = gravityScale;
}
private void LateUpdate()
{
if (_rb.position.y <= -10)
{
this.Release();
}
}
public void Collect() public void Collect()
{ {

View File

@ -2,6 +2,7 @@ using GadGame.Manager;
using GadGame.State; using GadGame.State;
using GadGame.State.GameState; using GadGame.State.GameState;
using Pools.Runtime; using Pools.Runtime;
using Sirenix.OdinInspector;
using TMPro; using TMPro;
using UnityEngine; using UnityEngine;
@ -9,15 +10,20 @@ namespace GadGame.MiniGame
{ {
public class MiniGameController : StateRunner<MiniGameController> public class MiniGameController : StateRunner<MiniGameController>
{ {
[Header("Stats")]
public int GameTime; public int GameTime;
[SerializeField] private Transform _basket; [SerializeField] private Transform _basket;
[SerializeField] private TextMeshProUGUI _time;
[SerializeField] private float _lerp; [SerializeField] private float _lerp;
[SerializeField] private float _spawnTime; [SerializeField] private float _spawnTime;
[SerializeField, Range(0,1)] private float _bombChange; [SerializeField, Range(0,1)] private float _bombChange;
[SerializeField] private Rect _spawnArea; [SerializeField] private Rect _spawnArea;
[SerializeField, MinMaxSlider(0, 2, true)] private Vector2 _gravityScaleRange;
[Header("UI")]
[SerializeField] private TextMeshProUGUI _time;
[SerializeField] private TextMeshProUGUI _score;
[Header("Pool")]
[SerializeField] private Pool<Item>[] _itemPools; [SerializeField] private Pool<Item>[] _itemPools;
[SerializeField] private Pool<Bomb>[] _bombPools; [SerializeField] private Pool<Bomb>[] _bombPools;
@ -30,6 +36,7 @@ namespace GadGame.MiniGame
_gameManager = GameManager.Instance; _gameManager = GameManager.Instance;
_gameManager.OnPause += Pause; _gameManager.OnPause += Pause;
_gameManager.OnResume += Resume; _gameManager.OnResume += Resume;
_gameManager.OnScoreUpdate += OnScoreUpdate;
_camera = Camera.main; _camera = Camera.main;
SetState<PlayingGameState>(); SetState<PlayingGameState>();
_time.text = GameTime.ToString(); _time.text = GameTime.ToString();
@ -41,17 +48,20 @@ namespace GadGame.MiniGame
if (_spawnTimer >= _spawnTime) if (_spawnTimer >= _spawnTime)
{ {
_spawnTimer = 0; _spawnTimer = 0;
var gravity = Random.Range(_gravityScaleRange.x, _gravityScaleRange.y);
var bombChance = Random.value; var bombChance = Random.value;
if (bombChance <= _bombChange) if (bombChance <= _bombChange)
{ {
var random = Random.Range(0, _bombPools.Length); var random = Random.Range(0, _bombPools.Length);
var bomb = _bombPools[random].Get(); var bomb = _bombPools[random].Get();
bomb.Init(gravity);
bomb.transform.position = _spawnArea.RandomPointInside(); bomb.transform.position = _spawnArea.RandomPointInside();
} }
else else
{ {
var random = Random.Range(0, _itemPools.Length); var random = Random.Range(0, _itemPools.Length);
var item = _itemPools[random].Get(); var item = _itemPools[random].Get();
item.Init(gravity);
item.transform.position = _spawnArea.RandomPointInside(); item.transform.position = _spawnArea.RandomPointInside();
} }
} }
@ -91,6 +101,11 @@ namespace GadGame.MiniGame
{ {
SetState<ResumeGameState>(); SetState<ResumeGameState>();
} }
private void OnScoreUpdate(int score)
{
_score.text = score.ToString();
}
private void OnDrawGizmos() private void OnDrawGizmos()
{ {

View File

@ -1,3 +1,5 @@
using System.IO;
using UnityEditor;
using UnityEngine; using UnityEngine;
namespace GadGame.SO namespace GadGame.SO
@ -12,5 +14,38 @@ namespace GadGame.SO
public SceneReference GameScene; public SceneReference GameScene;
public SceneReference RewardScene; public SceneReference RewardScene;
public SceneReference CTAScene; public SceneReference CTAScene;
#if UNITY_EDITOR
public static SceneFlowConfig FindSettings()
{
var guids = AssetDatabase.FindAssets($"t:{nameof(SceneFlowConfig)}");
if (guids.Length > 1) Debug.LogWarning("Found multiple settings files, using the first.");
switch (guids.Length)
{
case 0:
return null;
default:
var path = AssetDatabase.GUIDToAssetPath(guids[0]);
return AssetDatabase.LoadAssetAtPath<SceneFlowConfig>(path);
}
}
public static SceneFlowConfig GetOrCreateSettings()
{
var settings = FindSettings();
if (settings == null)
{
settings = CreateInstance<SceneFlowConfig>();
string path = "Assets/_Game/SO/SceneFlowConfig";
if (!Directory.Exists(path)) Directory.CreateDirectory(path);
AssetDatabase.CreateAsset(settings, $"{path}/Scene Flow Config.asset");
AssetDatabase.SaveAssets();
}
return settings;
}
#endif
} }
} }

View File

@ -1,3 +1,4 @@
using Cysharp.Threading.Tasks;
using GadGame.Manager; using GadGame.Manager;
using GadGame.MiniGame; using GadGame.MiniGame;
using UnityEngine; using UnityEngine;
@ -6,9 +7,10 @@ namespace GadGame.State.GameState
{ {
public class EndGameState : State<MiniGameController> public class EndGameState : State<MiniGameController>
{ {
public override void Enter() public override async void Enter()
{ {
Debug.Log("End Game"); Debug.Log("End Game");
await UniTask.Delay(3000);
GameManager.Instance.EndGame(); GameManager.Instance.EndGame();
} }

View File

@ -7,7 +7,8 @@ namespace GadGame
public static Vector2 RandomPointInside(this Rect rect) public static Vector2 RandomPointInside(this Rect rect)
{ {
var rectSize = rect.size; var rectSize = rect.size;
return rect.position + new Vector2(Random.Range(0, rectSize.x), Random.Range(0, rectSize.y)); var bottomLeft = rect.position + new Vector2(-rect.width / 2, -rect.height / 2);
return bottomLeft + new Vector2(Random.Range(0, rectSize.x), Random.Range(0, rectSize.y));
} }
} }
} }