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