feat: load system
This commit is contained in:
		
							parent
							
								
									5d470a57af
								
							
						
					
					
						commit
						60d20bfe4e
					
				
					 20 changed files with 421 additions and 67 deletions
				
			
		
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| 
						 | 
				
			
			@ -2392,6 +2392,50 @@ CanvasRenderer:
 | 
			
		|||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 1488567635}
 | 
			
		||||
  m_CullTransparentMesh: 1
 | 
			
		||||
--- !u!1 &1524010032
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 1524010034}
 | 
			
		||||
  - component: {fileID: 1524010033}
 | 
			
		||||
  m_Layer: 0
 | 
			
		||||
  m_Name: SaveLoad
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!114 &1524010033
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 1524010032}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: 3c6dab5fe816434381b975fd75b667fc, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
--- !u!4 &1524010034
 | 
			
		||||
Transform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 1524010032}
 | 
			
		||||
  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 &1631011313
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
| 
						 | 
				
			
			@ -3418,3 +3462,4 @@ SceneRoots:
 | 
			
		|||
  - {fileID: 1652443528}
 | 
			
		||||
  - {fileID: 902566663}
 | 
			
		||||
  - {fileID: 4783506}
 | 
			
		||||
  - {fileID: 1524010034}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,15 +15,23 @@
 | 
			
		|||
			GrowIterations = growIterations;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public void SetFromOtherScore(Score other) {
 | 
			
		||||
			Value = other.Value;
 | 
			
		||||
			UpdateGrowPercentage();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public void Add() {
 | 
			
		||||
			Value++;
 | 
			
		||||
			UpdateGrowPercentage();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
			if (Value % GrowIterations == 0) {
 | 
			
		||||
				float relativeScore = Value % (GrowIterations * SpawnRate);
 | 
			
		||||
				if (relativeScore == 0 && Value != 0)
 | 
			
		||||
		private void UpdateGrowPercentage() {
 | 
			
		||||
			int value = Value % GrowIterations == 0 ? Value : Value / GrowIterations * GrowIterations;
 | 
			
		||||
 | 
			
		||||
			float relativeScore = value % (GrowIterations * SpawnRate);
 | 
			
		||||
			if (relativeScore == 0 && value != 0)
 | 
			
		||||
				relativeScore = GrowIterations * SpawnRate;
 | 
			
		||||
			GrowPercentage = relativeScore / (SpawnRate * GrowIterations);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -16,7 +16,7 @@ namespace Presenter {
 | 
			
		|||
 | 
			
		||||
		public void Execute() {
 | 
			
		||||
			_score.Add();
 | 
			
		||||
			_view.UpdateView(_score.Value);
 | 
			
		||||
			_view.UpdateView(_score.Value, _score.GrowPercentage);
 | 
			
		||||
 | 
			
		||||
			if (CanSpawn)
 | 
			
		||||
				_spawner.SpawnRose();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
namespace Presenter {
 | 
			
		||||
	public interface IExpressionInput {
 | 
			
		||||
		void UpdateView(int score);
 | 
			
		||||
		void UpdateView(int score, float growPercentage);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								Assets/Scripts/Presenter/PlayerPrefsRepository.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								Assets/Scripts/Presenter/PlayerPrefsRepository.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
using Domain;
 | 
			
		||||
using Presenter.SaveSystem;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace Presenter {
 | 
			
		||||
	public class PlayerPrefsRepository : IGameRepository {
 | 
			
		||||
		public void SaveScore(Score score) {
 | 
			
		||||
			PlayerPrefs.SetInt("Score", score.Value);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public Score LoadScore() {
 | 
			
		||||
			int score = PlayerPrefs.GetInt("Score", 0);
 | 
			
		||||
			return new Score(score, 0, 0);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								Assets/Scripts/Presenter/PlayerPrefsRepository.cs.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								Assets/Scripts/Presenter/PlayerPrefsRepository.cs.meta
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: 8dce8a5ed9294a1283494fef143729a4
 | 
			
		||||
timeCreated: 1713305716
 | 
			
		||||
							
								
								
									
										3
									
								
								Assets/Scripts/Presenter/SaveSystem.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								Assets/Scripts/Presenter/SaveSystem.meta
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: f18e98c111ab4c0fa067e9a5039254a7
 | 
			
		||||
timeCreated: 1713304989
 | 
			
		||||
							
								
								
									
										8
									
								
								Assets/Scripts/Presenter/SaveSystem/GameRepository.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								Assets/Scripts/Presenter/SaveSystem/GameRepository.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
using Domain;
 | 
			
		||||
 | 
			
		||||
namespace Presenter.SaveSystem {
 | 
			
		||||
	public interface IGameRepository {
 | 
			
		||||
		void SaveScore(Score score);
 | 
			
		||||
		Score LoadScore();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: 66c3464d602142f5813956378a7071bb
 | 
			
		||||
timeCreated: 1713305003
 | 
			
		||||
							
								
								
									
										21
									
								
								Assets/Scripts/Presenter/SaveSystem/LoadGame.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								Assets/Scripts/Presenter/SaveSystem/LoadGame.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
using Domain;
 | 
			
		||||
 | 
			
		||||
namespace Presenter.SaveSystem {
 | 
			
		||||
	public class LoadGame {
 | 
			
		||||
		private readonly IGameRepository _repository;
 | 
			
		||||
		private readonly Score _score;
 | 
			
		||||
		private readonly IExpressionInput _expressionInput;
 | 
			
		||||
 | 
			
		||||
		public LoadGame(IGameRepository repository, Score score, IExpressionInput expressionInput) {
 | 
			
		||||
			_repository = repository;
 | 
			
		||||
			_score = score;
 | 
			
		||||
			_expressionInput = expressionInput;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public void Run() {
 | 
			
		||||
			Score newScore = _repository.LoadScore();
 | 
			
		||||
			_score.SetFromOtherScore(newScore);
 | 
			
		||||
			_expressionInput.UpdateView(_score.Value, _score.GrowPercentage);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								Assets/Scripts/Presenter/SaveSystem/LoadGame.cs.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								Assets/Scripts/Presenter/SaveSystem/LoadGame.cs.meta
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: 3e87dd4026b94e5e90ce9d2163026446
 | 
			
		||||
timeCreated: 1713305374
 | 
			
		||||
							
								
								
									
										17
									
								
								Assets/Scripts/Presenter/SaveSystem/SaveGame.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								Assets/Scripts/Presenter/SaveSystem/SaveGame.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
using Domain;
 | 
			
		||||
 | 
			
		||||
namespace Presenter.SaveSystem {
 | 
			
		||||
	public class SaveGame {
 | 
			
		||||
		private readonly IGameRepository _repository;
 | 
			
		||||
		private readonly Score _score;
 | 
			
		||||
 | 
			
		||||
		public SaveGame(IGameRepository repository, Score score) {
 | 
			
		||||
			_repository = repository;
 | 
			
		||||
			_score = score;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public void Run() {
 | 
			
		||||
			_repository.SaveScore(_score);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								Assets/Scripts/Presenter/SaveSystem/SaveGame.cs.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								Assets/Scripts/Presenter/SaveSystem/SaveGame.cs.meta
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: c1e36f7baa3d4eccb7073f6b4b803621
 | 
			
		||||
timeCreated: 1713305232
 | 
			
		||||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
using System;
 | 
			
		||||
using Domain;
 | 
			
		||||
using Presenter;
 | 
			
		||||
using Presenter.SaveSystem;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
using View.UI;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -10,6 +11,9 @@ namespace View {
 | 
			
		|||
		public Score Score { private set; get; }
 | 
			
		||||
		public CustomInput CustomInput { private set; get; }
 | 
			
		||||
 | 
			
		||||
		public SaveGame Saver { private set; get; }
 | 
			
		||||
		public LoadGame Loader { private set; get; }
 | 
			
		||||
 | 
			
		||||
		private void Awake() {
 | 
			
		||||
			Score = new Score(20, 5);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -22,6 +26,10 @@ namespace View {
 | 
			
		|||
			ExpressionClick = new ExpressionClick(Score, inputCollections, spawner);
 | 
			
		||||
 | 
			
		||||
			CustomInput = new CustomInput();
 | 
			
		||||
 | 
			
		||||
			PlayerPrefsRepository repository = new();
 | 
			
		||||
			Saver = new SaveGame(repository, Score);
 | 
			
		||||
			Loader = new LoadGame(repository, Score, inputCollections);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -8,9 +8,9 @@ namespace View {
 | 
			
		|||
			_inputs = inputs;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public void UpdateView(int score) {
 | 
			
		||||
		public void UpdateView(int score, float growPercentage) {
 | 
			
		||||
			foreach (IExpressionInput input in _inputs)
 | 
			
		||||
				input.UpdateView(score);
 | 
			
		||||
				input.UpdateView(score, growPercentage);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								Assets/Scripts/View/SaveLoad.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Assets/Scripts/View/SaveLoad.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace View {
 | 
			
		||||
	public class SaveLoad : MonoBehaviour {
 | 
			
		||||
		private void Start() => LoadGame();
 | 
			
		||||
 | 
			
		||||
		private void LoadGame() => FindObjectOfType<Dependencies>().Loader.Run();
 | 
			
		||||
		private void SaveGame() => FindObjectOfType<Dependencies>().Saver.Run();
 | 
			
		||||
 | 
			
		||||
		private void OnApplicationQuit() => SaveGame();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								Assets/Scripts/View/SaveLoad.cs.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								Assets/Scripts/View/SaveLoad.cs.meta
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: 3c6dab5fe816434381b975fd75b667fc
 | 
			
		||||
timeCreated: 1713306082
 | 
			
		||||
| 
						 | 
				
			
			@ -11,13 +11,10 @@ namespace View.UI {
 | 
			
		|||
 | 
			
		||||
		private ExpressionClick _click;
 | 
			
		||||
		private CustomInput _customInput;
 | 
			
		||||
		private Score _score;
 | 
			
		||||
 | 
			
		||||
		[SerializeField] private FramedAnimator.FramedAnimator animator;
 | 
			
		||||
 | 
			
		||||
		private void Start() {
 | 
			
		||||
			_score = FindObjectOfType<Dependencies>().Score;
 | 
			
		||||
 | 
			
		||||
			_click = FindObjectOfType<Dependencies>().ExpressionClick;
 | 
			
		||||
			_customInput = FindObjectOfType<Dependencies>().CustomInput;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -26,8 +23,8 @@ namespace View.UI {
 | 
			
		|||
			CheckInput();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public void UpdateView(int score) {
 | 
			
		||||
			animator.PlayUntil(_score.GrowPercentage);
 | 
			
		||||
		public void UpdateView(int score, float growPercentage) {
 | 
			
		||||
			animator.PlayUntil(growPercentage);
 | 
			
		||||
			text.text = score.ToString();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,7 +31,7 @@ namespace View.UI {
 | 
			
		|||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public void UpdateView(int score) {
 | 
			
		||||
		public void UpdateView(int score, float growPercentage) {
 | 
			
		||||
			if (!_titleVisible) return;
 | 
			
		||||
			_titleVisible = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue