Compare commits

..

2 Commits

Author SHA1 Message Date
f36578c429 merging dev to avoid conflicts 2025-01-16 09:27:35 +01:00
75c890766c Centralised player data into game session 2025-01-15 17:25:18 +01:00
9 changed files with 63 additions and 41 deletions

View File

@ -335,6 +335,7 @@ MonoBehaviour:
player2: {fileID: 2249596435903131710}
scoreboard: {fileID: 634835458}
isDuoMode: 1
playerData: {fileID: 11400000, guid: 928d6efd735c3814d955e3f955a0264a, type: 2}
--- !u!4 &70882853
Transform:
m_ObjectHideFlags: 0

View File

@ -533,6 +533,7 @@ MonoBehaviour:
player2: {fileID: 0}
scoreboard: {fileID: 634835458}
isDuoMode: 0
playerData: {fileID: 11400000, guid: 928d6efd735c3814d955e3f955a0264a, type: 2}
--- !u!4 &93601729
Transform:
m_ObjectHideFlags: 0

View File

@ -7,7 +7,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9055f72a604bc3f4ba01bc120f0643d2, type: 3}
m_Name: PlayerData
@ -15,6 +15,6 @@ MonoBehaviour:
<InvincibilityTime>k__BackingField: 600
<JumpHeight>k__BackingField: 6
<LaneSwitchSpeed>k__BackingField: 20
<CurrentSpeed>k__BackingField: 10
<InitialSpeed>k__BackingField: 10
<SpeedAcceleration>k__BackingField: 0
<CurrentSpeed>k__BackingField: 401.62177
<SpeedAcceleration>k__BackingField: 1

View File

@ -1,13 +1,39 @@
using System.Collections;
using System;
using System.Collections;
using UnityEngine;
[CreateAssetMenu(fileName = "PlayerData", menuName = "ScriptableObjects/Player")]
public class PlayerData : ScriptableObject
public sealed class PlayerData : ScriptableObject
{
[field: SerializeField] public int InvincibilityTime { get; private set; }
// Serialize Fields
[field: SerializeField] public int InvincibilityTime { get; protected set; }
[field: SerializeField] public float JumpHeight { get; private set; }
[field: SerializeField] public float LaneSwitchSpeed { get; private set; }
[field: SerializeField] public float CurrentSpeed { get; set; }
[field: SerializeField] public float InitialSpeed { get; private set; }
[field: SerializeField] public float CurrentSpeed { get; private set; }
[field: SerializeField] public float SpeedAcceleration { get; private set; }
// Other attributes
private bool onPause = false;
private void Awake()
{
CurrentSpeed = InitialSpeed;
}
public void Reset()
{
CurrentSpeed = InitialSpeed;
}
public void Update()
{
if (!onPause)
CurrentSpeed += SpeedAcceleration / 1000;
}
public void isPaused(bool isPaused)
{
onPause = isPaused;
}
}

View File

@ -13,6 +13,7 @@ public class GameSession : MonoBehaviour,IResettable
[SerializeField] [CanBeNull] private Player player2;
[SerializeField] private Scoreboard scoreboard;
[SerializeField] private Boolean isDuoMode;
[SerializeField] private PlayerData playerData;
public static GameSession Instance { get; private set; }
public WorldCurver Curver { get; private set; }
@ -39,6 +40,7 @@ public class GameSession : MonoBehaviour,IResettable
}
private void Update()
{
playerData.Update();
_player1InputTranslator.Tick();
if (isDuoMode)
{
@ -63,6 +65,8 @@ public class GameSession : MonoBehaviour,IResettable
player2Holder.Init(true);
_player2InputTranslator = new InputTranslator<KeyBinding>(player2Holder, true);
}
playerData.Reset();
}
public void AddCommandTranslator(ICommandTranslator translator, bool isPlayer2)
@ -79,13 +83,7 @@ public class GameSession : MonoBehaviour,IResettable
public void PauseSession(bool isPaused)
{
if (isPaused)
_speedAtPause = player1.playerData.CurrentSpeed;
else
{
player1.playerData.CurrentSpeed = _speedAtPause;
}
playerData.isPaused(isPaused);
Time.timeScale = isPaused ? 0 : 1;
if (!_isSessionPaused && _player1InputTranslator.IsTranslationResticted(InputConstants.InGameCommands) && _player2InputTranslator.IsTranslationResticted(InputConstants.InGameCommands) )
{
@ -184,6 +182,7 @@ public class GameSession : MonoBehaviour,IResettable
public void ResetToDefault()
{
PauseSession(false);
playerData.Reset();
if(player1 !=null)
player1.ResetToDefault();
if (isDuoMode && player2 != null)
@ -191,4 +190,9 @@ public class GameSession : MonoBehaviour,IResettable
player2.ResetToDefault();
}
}
public PlayerData GetPlayerData()
{
return this.playerData;
}
}

View File

@ -34,11 +34,10 @@ public class Player : MonoBehaviour, IResettable, ICommandTranslator
#region PlayerComponents
[SerializeField] internal PlayerData playerData;
public PlayerData playerData;
public IDamageable PlayerHealth { get; private set; }
public Statistics PlayerStatictics { get; private set; }
public PlayerData PlayerData { get { return playerData; } }
#endregion
@ -48,14 +47,8 @@ public class Player : MonoBehaviour, IResettable, ICommandTranslator
public LaneSystem LaneSystem
{
get
{
return laneSystem;
}
private set
{
laneSystem = value;
}
get => laneSystem;
private set => laneSystem = value;
}
@ -72,6 +65,7 @@ public class Player : MonoBehaviour, IResettable, ICommandTranslator
private void Awake()
{
playerData = GameSession.Instance.GetPlayerData();
GameSession.Instance.AddCommandTranslator(this, isPlayer2);
animator = GetComponent<Animator>();
if (animator)
@ -82,7 +76,6 @@ public class Player : MonoBehaviour, IResettable, ICommandTranslator
PlayerStatictics = GetComponent<Statistics>();
PlayerStateMachine = new PlayerStateMachine(this);
InvincibilityTime = playerData.InvincibilityTime;
playerData.CurrentSpeed = playerData.InitialSpeed;
}
private void OnEnable()
@ -97,7 +90,6 @@ public class Player : MonoBehaviour, IResettable, ICommandTranslator
private void Update()
{
playerData.CurrentSpeed += playerData.SpeedAcceleration / 1000;
PlayerStateMachine.Tick();
}
@ -176,7 +168,6 @@ public class Player : MonoBehaviour, IResettable, ICommandTranslator
LaneSystem.ResetToDefault();
Physics.SyncTransforms();
ReloadAnimator();
playerData.CurrentSpeed = playerData.InitialSpeed;
}
public void TranslateCommand(ECommand command, PressedState state)

View File

@ -8,7 +8,7 @@ public abstract class MovingState : PlayerState
private float speed; //SO
private float laneSwitchSpeed; //SO
protected const float gravity = -9.8f;
private float invincibilityTime => playerSM.PlayerData.InvincibilityTime;
private float invincibilityTime => playerSM.playerData.InvincibilityTime;
public MovingState(PlayerStateMachine playerStateMachine) : base(playerStateMachine)
{
this.playerSM = playerStateMachine;

View File

@ -11,7 +11,7 @@ public abstract class PlayerState : State<Player>
public PlayerState(PlayerStateMachine playerStateMachine)
{
playerSM = playerStateMachine;
playerData = playerStateMachine.PlayerData;
playerData = playerStateMachine.playerData;
playerTransform = playerStateMachine.PlayerTransform;
}
public override void Tick()

View File

@ -4,14 +4,13 @@ using UnityEngine.Animations.Rigging;
public class PlayerStateMachine : StateMachine<Player>
{
private Player player;
private PlayerData playerData;
public PlayerData playerData;
private Transform playerTransform;
public Transform PlayerTransform { get { return playerTransform; } }
public PlayerData PlayerData { get { return playerData; } }
public PlayerStateMachine(Player player)
{
this.player = player;
playerData = player.PlayerData;
playerData = GameSession.Instance.GetPlayerData();
playerTransform = player.transform;
InitStates();
}