Skip to content
This repository has been archived by the owner on Apr 10, 2023. It is now read-only.

Commit

Permalink
Apply SRP part 2
Browse files Browse the repository at this point in the history
Extract scene management and player interactions and renderer behaviours from Player script to different single scripts
  • Loading branch information
Kassout committed Apr 10, 2023
1 parent d7d6b37 commit dc111e2
Show file tree
Hide file tree
Showing 14 changed files with 268 additions and 41 deletions.
99 changes: 98 additions & 1 deletion SOLID/SOLID/Assets/Scenes/GameScene.unity
Original file line number Diff line number Diff line change
Expand Up @@ -895,6 +895,10 @@ GameObject:
- component: {fileID: 837455034}
- component: {fileID: 837455033}
- component: {fileID: 837455035}
- component: {fileID: 837455039}
- component: {fileID: 837455038}
- component: {fileID: 837455037}
- component: {fileID: 837455036}
m_Layer: 0
m_Name: Player
m_TagString: Untagged
Expand Down Expand Up @@ -969,9 +973,9 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
playerAnimator: {fileID: 815885425}
playerRenderer: {fileID: 815885426}
raycastPoint: {fileID: 1706832592}
playerMovement: {fileID: 837455035}
playerRenderer: {fileID: 815885426}
ui_window: {fileID: 614753882}
--- !u!82 &837455034
AudioSource:
Expand Down Expand Up @@ -1082,6 +1086,55 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
movementSpeed: 3
--- !u!114 &837455036
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 837455029}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f9c1a23005f87b1438a70723632ebb7a, type: 3}
m_Name:
m_EditorClassIdentifier:
playerRenderer: {fileID: 815885426}
--- !u!114 &837455037
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 837455029}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a903c75f6d7102f46adbcb90bc291120, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &837455038
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 837455029}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d33e85a48496ba34a85fc07dfc567812, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &837455039
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 837455029}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7169d424f5174e441a0d1fddfdc9e9ab, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &844677121
GameObject:
m_ObjectHideFlags: 0
Expand Down Expand Up @@ -1179,6 +1232,50 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 844677121}
m_CullTransparentMesh: 0
--- !u!1 &1399134600
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1399134602}
- component: {fileID: 1399134601}
m_Layer: 0
m_Name: GameManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1399134601
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1399134600}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0f87a026d00bdc44a0f02fa26366f20, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!4 &1399134602
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1399134600}
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_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1431288408
GameObject:
m_ObjectHideFlags: 0
Expand Down
10 changes: 10 additions & 0 deletions SOLID/SOLID/Assets/Scripts/GameManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using UnityEngine;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour
{
private void Start()
{
SceneManager.LoadScene("PremadeLevel", LoadSceneMode.Additive);
}
}
11 changes: 11 additions & 0 deletions SOLID/SOLID/Assets/Scripts/GameManager.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

52 changes: 13 additions & 39 deletions SOLID/SOLID/Assets/Scripts/Player.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,28 @@
public class Player : MonoBehaviour
{
public Animator playerAnimator;
public SpriteRenderer playerRenderer;

public Transform raycastPoint;

[SerializeField]
private PlayerMovement playerMovement;

private PlayerMovement _playerMovement;
private PlayerRenderer _playerRenderer;
private PlayerAIInteractions _playerAIInteractions;

public GameObject ui_window;

private Vector2 movementVector;

private void Start()
{
playerMovement = GetComponent<PlayerMovement>();
SceneManager.LoadScene("PremadeLevel", LoadSceneMode.Additive);
_playerMovement = GetComponent<PlayerMovement>();
_playerRenderer = GetComponent<PlayerRenderer>();
_playerAIInteractions = GetComponent<PlayerAIInteractions>();
}
private void Update()
{
movementVector = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
movementVector.Normalize();
if (Input.GetAxisRaw("Fire1") > 0)
{
Interact();
_playerAIInteractions.Interact(_playerRenderer.IsSpriteFlipped);
}
}

Expand All @@ -46,43 +45,18 @@ private void FixedUpdate()
}
}

private void Interact()
{
Debug.DrawRay(raycastPoint.position, playerRenderer.flipX ? Vector3.left : Vector3.right, Color.red);
RaycastHit2D hit = Physics2D.Raycast(raycastPoint.position, playerRenderer.flipX ? Vector3.left : Vector3.right,1);
if(hit.collider != null)
{
if (hit.collider.GetComponent<NPC_Enemy>())
{
hit.collider.GetComponent<NPC_Enemy>().GetHit();
}
else if (hit.collider.GetComponent<NPC_Friendly>())
{
hit.collider.GetComponent<NPC_Friendly>().Talk();
}
}

}

private void MovePlayer(Vector2 movementVector)
{
playerAnimator.SetBool("Walk", true);
playerMovement.MovePlayer(movementVector);

if (Mathf.Abs(movementVector.x) > 0.1f)
playerRenderer.flipX = Vector3.Dot(transform.right, movementVector) < 0;
_playerMovement.MovePlayer(movementVector);

_playerRenderer.RenderPlayer(movementVector);
}

public void ReceiveDamaged()
{
StopAllCoroutines();
StartCoroutine(FlashRed());
_playerRenderer.FlashRed();
}

private IEnumerator FlashRed()
{
playerRenderer.color = Color.red;
yield return new WaitForSeconds(0.1f);
playerRenderer.color = Color.white;
}

}
24 changes: 24 additions & 0 deletions SOLID/SOLID/Assets/Scripts/PlayerAIInteractions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using UnityEngine;

public class PlayerAIInteractions : MonoBehaviour
{
[SerializeField]
private Transform raycastPoint;

public void Interact(bool isSpriteFlipped)
{
Debug.DrawRay(raycastPoint.position, isSpriteFlipped ? Vector3.left : Vector3.right, Color.red);
RaycastHit2D hit = Physics2D.Raycast(raycastPoint.position, isSpriteFlipped ? Vector3.left : Vector3.right,1);
if(hit.collider != null)
{
if (hit.collider.GetComponent<NPC_Enemy>())
{
hit.collider.GetComponent<NPC_Enemy>().GetHit();
}
else if (hit.collider.GetComponent<NPC_Friendly>())
{
hit.collider.GetComponent<NPC_Friendly>().Talk();
}
}
}
}
11 changes: 11 additions & 0 deletions SOLID/SOLID/Assets/Scripts/PlayerAIInteractions.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions SOLID/SOLID/Assets/Scripts/PlayerAnimations.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerAnimations : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{

}
}
11 changes: 11 additions & 0 deletions SOLID/SOLID/Assets/Scripts/PlayerAnimations.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions SOLID/SOLID/Assets/Scripts/PlayerInput.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerInput : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{

}
}
11 changes: 11 additions & 0 deletions SOLID/SOLID/Assets/Scripts/PlayerInput.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

31 changes: 31 additions & 0 deletions SOLID/SOLID/Assets/Scripts/PlayerRenderer.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using System.Collections;
using UnityEngine;

public class PlayerRenderer : MonoBehaviour
{
[SerializeField]
private SpriteRenderer playerRenderer;

public bool IsSpriteFlipped => playerRenderer.flipX;

public void RenderPlayer(Vector2 movement)
{
if (Mathf.Abs(movement.x) > 0.1f)
{
playerRenderer.flipX = Vector3.Dot(transform.right, movement) < 0;
}
}

public void FlashRed()
{
StopAllCoroutines();
StartCoroutine(FlashRedCoroutine());
}

private IEnumerator FlashRedCoroutine()
{
playerRenderer.color = Color.red;
yield return new WaitForSeconds(0.1f);
playerRenderer.color = Color.white;
}
}
11 changes: 11 additions & 0 deletions SOLID/SOLID/Assets/Scripts/PlayerRenderer.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
using System.Collections.Generic;
using UnityEngine;

public class PlayeSounds : MonoBehaviour
public class PlayerSounds : MonoBehaviour
{
public AudioSource audioSource;
public void PlayStepSound()
Expand Down

0 comments on commit dc111e2

Please sign in to comment.