From 576c113fadde0791c40fad63b374f9430f875af5 Mon Sep 17 00:00:00 2001
From: miepzerino <o.skotnik@gmail.com>
Date: Wed, 27 Dec 2023 18:17:22 +0000
Subject: [PATCH] Changed drops, no need just go directly into inventory
---
Assets/Scripts/PlayerController.cs | 174 +++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 143 insertions(+), 31 deletions(-)
diff --git a/Assets/Scripts/PlayerController.cs b/Assets/Scripts/PlayerController.cs
index ed9f0d7..ca18e3d 100644
--- a/Assets/Scripts/PlayerController.cs
+++ b/Assets/Scripts/PlayerController.cs
@@ -1,12 +1,9 @@
using Assets.Scripts.Enums;
using Assets.Scripts.Helpers;
using System;
-using System.Collections;
-using System.ComponentModel.Design;
-using Unity.VisualScripting;
+using System.Linq;
using UnityEngine;
using UnityEngine.InputSystem;
-using UnityEngine.Tilemaps;
[RequireComponent(typeof(Rigidbody2D))]
public class PlayerController : MonoBehaviour
@@ -19,16 +16,22 @@
[NonSerialized]
public Rigidbody2D rb;
+ [NonSerialized]
+ public Damageable health;
+
+ BoxCollider2D boxCollider;
Animator animator;
Animator animator_rotor;
public GameObject rotorGO;
TouchingDirections touchingDirections;
- [NonSerialized]
- public Damageable health;
// Time it takes to drill
- public float drillingTime = 1f;
+ [SerializeField]
+ private float drillingTime = 1f;
private float timeSinceDrill = 0f;
+ private bool drillToPosition;
+ private Vector3 drillTilePosition;
+ private Vector3 drillOriginalPosition;
[SerializeField]
private bool _isMoving;
@@ -54,15 +57,63 @@
animator_rotor.SetBool(AnimationStrings.Player.isFlying, value);
}
}
- [SerializeField]
- private bool _isDrilling;
public bool IsDrilling
{
- get { return _isDrilling; }
+ get { return IsDrillingDown || IsDrillingLeftRight; }
set
{
- _isDrilling = value;
- //animator.SetBool(AnimationStrings.Player.isDrilling, value);
+ if (value)
+ {
+ Debug.Assert(false, "Can't set IsDrilling this way, use IsDrillingLeftRight or IsDrillingDown!");
+ }
+ if (IsDrillingDown)
+ {
+ IsDrillingDown = false;
+ }
+ if (IsDrillingLeftRight)
+ {
+ IsDrillingLeftRight = false;
+ }
+ }
+ }
+ [SerializeField]
+ private bool _isDrillingLeftRight;
+ public bool IsDrillingLeftRight
+ {
+ get { return _isDrillingLeftRight; }
+ set
+ {
+ _isDrillingLeftRight = value;
+ animator.SetBool(AnimationStrings.Player.isDrillingLeftRight, value);
+ animator_rotor.SetBool(AnimationStrings.Player.isFlying, false);
+ if (value)
+ {
+ animator.speed = 1 / drillingTime;
+ }
+ else
+ {
+ animator.speed = 1f;
+ }
+ }
+ }
+ [SerializeField]
+ private bool _isDrillingDown;
+ public bool IsDrillingDown
+ {
+ get { return _isDrillingDown; }
+ set
+ {
+ _isDrillingDown = value;
+ animator.SetBool(AnimationStrings.Player.isDrillingDown, value);
+ animator_rotor.SetBool(AnimationStrings.Player.isFlying, false);
+ if (value)
+ {
+ animator.speed = 1 / drillingTime;
+ }
+ else
+ {
+ animator.speed = 1f;
+ }
}
}
@@ -89,7 +140,17 @@
}
}
+ private void OnEnable()
+ {
+ CharacterEvents.characterDrillingToPosition += (DrillingToPosition);
+ //CharacterEvents.characterDrillingToPositionAbort += (DrillingToPositionAbort);
+ }
+ private void OnDisable()
+ {
+ CharacterEvents.characterDrillingToPosition -= (DrillingToPosition);
+ //CharacterEvents.characterDrillingToPositionAbort -= (DrillingToPositionAbort);
+ }
private void Awake()
{
@@ -98,19 +159,22 @@
animator_rotor = rotorGO.GetComponent<Animator>();
touchingDirections = GetComponent<TouchingDirections>();
health = GetComponent<Damageable>();
+ boxCollider = GetComponent<BoxCollider2D>();
if (SaveSystem.isGameLoaded)
{
- GameObject uiManager = GameObject.Find("GameManager");
- uiManager.GetComponent<GameManager>().GameLoaded();
- SaveData save = SaveSystem.LoadPlayer();
- health.MaxHealth = save.maxHealth;
- health.Health = save.health;
- transform.position = VectorHelper.ConvertToVector3(save.position);
- rb.velocity = VectorHelper.ConvertToVector2(save.velocity);
- SaveSystem.isGameLoaded = false;
+ LoadPlayer();
}
}
+ private void LoadPlayer()
+ {
+ SaveDataPlayer save = SaveSystem.LoadPlayer();
+ health.MaxHealth = save.maxHealth;
+ health.Health = save.health;
+ transform.position = VectorHelper.ConvertToVector3(save.position);
+ rb.velocity = VectorHelper.ConvertToVector2(save.velocity);
+ }
+
private void FixedUpdate()
{
if (CanMove)
@@ -181,14 +245,22 @@
if (IsDrilling)
{
rb.velocity = Vector2.zero;
- if (timeSinceDrill > drillingTime)
+ if (drillToPosition)
{
- IsDrilling = false;
- timeSinceDrill = 0;
- }
- else
- {
- timeSinceDrill += Time.deltaTime;
+ if (timeSinceDrill < drillingTime)
+ {
+ gameObject.transform.position = Vector3.Lerp(drillOriginalPosition, drillTilePosition, timeSinceDrill / drillingTime);
+ //Debug.Log("drillTilePosition: " + drillTilePosition);
+ //Debug.Log("timeSinceDrill: " + timeSinceDrill);
+ timeSinceDrill += Time.deltaTime;
+ }
+ else
+ {
+ boxCollider.enabled = true;
+ IsDrilling = false;
+ drillToPosition = false;
+ timeSinceDrill = 0;
+ }
}
}
}
@@ -207,15 +279,12 @@
IsMoving = false;
IsFlying = false;
//moveInput = Vector2.zero;
-
}
}
private void Drill(DrillDirection drillDirection)
{
- IsDrilling = true;
ContactPoint2D[] contactPoints = new ContactPoint2D[1];
- Debug.Log("drillDirection: " + drillDirection.ToString());
//rb.GetContacts(contactPoints);
switch (drillDirection)
{
@@ -228,10 +297,53 @@
case DrillDirection.Down:
touchingDirections.groundHits[0].collider.GetContacts(contactPoints);
break;
+ default:
+ Debug.Assert(false, "Add DrillDirection here!");
+ break;
}
- CharacterEvents.characterDrill.Invoke(contactPoints[0], drillDirection);
+ //Debug.Log(contactPoints[0].otherRigidbody?.gameObject.name);
+ if (contactPoints.Any(x => x.otherRigidbody?.name == "Tilemap"))
+ {
+ CharacterEvents.characterDrill.Invoke(contactPoints.Single(x => x.otherRigidbody?.name == "Tilemap"), drillDirection);
+ }
}
+ private void DrillingToPosition(Vector3 tilePosition, DrillDirection drillDirection)
+ {
+ boxCollider.enabled = false;
+ switch (drillDirection)
+ {
+ case DrillDirection.Left:
+ case DrillDirection.Right:
+ IsDrillingLeftRight = true;
+ break;
+ case DrillDirection.Down:
+ IsDrillingDown = true;
+ break;
+ default:
+ Debug.Assert(false, "Add DrillDirection here!");
+ break;
+ }
+ //Debug.Log("DrillingToPosition() called");
+ //Debug.Log(gameObject.transform.position);
+ drillToPosition = true;
+ drillTilePosition = tilePosition;
+ //Debug.Log("drillTilePosition: " + drillTilePosition);
+ drillOriginalPosition = gameObject.transform.position;
+ //Debug.Log("drillOriginalPosition: " + drillOriginalPosition);
+ }
+ //private void DrillingToPositionAbort()
+ //{
+ // IsDrilling = false;
+ // //Debug.Log("DrillingToPosition() called");
+ // //Debug.Log(gameObject.transform.position);
+ // drillToPosition = false;
+ // //drillTilePosition = null;
+ // //Debug.Log("drillTilePosition: " + drillTilePosition);
+ // drillOriginalPosition = gameObject.transform.position;
+ // //Debug.Log("drillOriginalPosition: " + drillOriginalPosition);
+ //}
+
//private void DrillLeftOrRight()
//{
// ContactPoint2D[] contactPoints = new ContactPoint2D[1];
--
Gitblit v1.10.0