finished fixing events control
This commit is contained in:
@@ -7,6 +7,8 @@ public class BugMovement : MonoBehaviour
|
||||
[SerializeField] private float secondsGoingLeft = 1;
|
||||
[SerializeField] private float secondsGoingRight = 1;
|
||||
[SerializeField] private float movementSpeed = 10;
|
||||
[SerializeField] public int eventTriggerCount = 3;
|
||||
[SerializeField] public int controlTriggerCounterEvent = 3;
|
||||
[SerializeField] Collider2D playerCollider;
|
||||
[SerializeField] EventControls eventControls;
|
||||
[SerializeField] Player player;
|
||||
@@ -14,6 +16,7 @@ public class BugMovement : MonoBehaviour
|
||||
private int leftAccumalator = 0;
|
||||
private int rightAccumalator = 0;
|
||||
private Rigidbody2D rigidBody;
|
||||
private bool isMovementDisabled = false;
|
||||
|
||||
private int framesPerSecond => 60;
|
||||
|
||||
@@ -27,6 +30,8 @@ public class BugMovement : MonoBehaviour
|
||||
{
|
||||
if (HasEncounteredPlayer())
|
||||
eventControls.TriggerEvent(playerCollider, GetComponent<Collider2D>(), player);
|
||||
if (isMovementDisabled)
|
||||
return;
|
||||
|
||||
var totalFramesGoingLeft = framesPerSecond * secondsGoingLeft;
|
||||
var totalFramesGoingRight = framesPerSecond * secondsGoingRight;
|
||||
@@ -65,4 +70,14 @@ public class BugMovement : MonoBehaviour
|
||||
{
|
||||
return rigidBody.IsTouchingLayers(LayerMask.GetMask(LayerNames.Player));
|
||||
}
|
||||
|
||||
public void DisableMovement()
|
||||
{
|
||||
isMovementDisabled = true;
|
||||
}
|
||||
|
||||
public void EnableMovement()
|
||||
{
|
||||
isMovementDisabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,11 +13,19 @@ public class EventControls : MonoBehaviour
|
||||
[SerializeField] private List<Tile> successTiles;
|
||||
[SerializeField] private List<Tile> failTiles;
|
||||
[SerializeField] private Tile plusTile;
|
||||
|
||||
[SerializeField] private float framesPerControlTile = 15;
|
||||
[SerializeField] private int nextControlYOffset = 0;
|
||||
private int nextControlXOffset => 0 - maxNumberOfControlTiles + 1;
|
||||
[SerializeField] private float tileMapClearDelayInSeconds = 0.5f;
|
||||
[SerializeField] private int maxNumberOfControlTiles = 2;
|
||||
private int numberOfEventsCount = 0;
|
||||
|
||||
private int maxNumberOfEvents => currentEnemyCollider.gameObject
|
||||
.GetComponent<BugMovement>()
|
||||
.eventTriggerCount;
|
||||
private int maxNumberOfControlTiles => currentEnemyCollider.gameObject
|
||||
.GetComponent<BugMovement>()
|
||||
.controlTriggerCounterEvent;
|
||||
|
||||
private Tilemap tilemap;
|
||||
|
||||
@@ -33,6 +41,7 @@ public class EventControls : MonoBehaviour
|
||||
private int tileMapClearDelayAccumalator = 0;
|
||||
private EventControlTile currentEventControl;
|
||||
private bool isInBattle = false;
|
||||
private bool hasFailed = false;
|
||||
|
||||
private Collider2D currentPlayerCollider;
|
||||
private Collider2D currentEnemyCollider;
|
||||
@@ -46,10 +55,15 @@ public class EventControls : MonoBehaviour
|
||||
|
||||
public void TriggerEvent(Collider2D playerCollider, Collider2D enemyCollider, Player player)
|
||||
{
|
||||
if (isInBattle)
|
||||
return;
|
||||
|
||||
currentPlayerCollider = playerCollider;
|
||||
currentEnemyCollider = enemyCollider;
|
||||
|
||||
enemyCollider.gameObject.GetComponent<SpriteRenderer>().enabled = false;
|
||||
enemyCollider.gameObject.GetComponent<BugMovement>().DisableMovement();
|
||||
|
||||
player.StartEncounter();
|
||||
Physics2D.IgnoreCollision(playerCollider, enemyCollider, true);
|
||||
|
||||
@@ -160,10 +174,18 @@ public class EventControls : MonoBehaviour
|
||||
currentEventControl = null;
|
||||
if (eventControlTilesInCycle.Where(x => !x.isPlusTile && !x.isPerformed).Count() == 0)
|
||||
{
|
||||
numberOfEventsCount++;
|
||||
eventTriggered = false;
|
||||
eventCycleAccumalator = 0;
|
||||
// Destroy(currentEnemyCollider.gameObject);
|
||||
// currentEnemyCollider = null;
|
||||
|
||||
if (maxNumberOfControlTiles == numberOfEventsCount)
|
||||
{
|
||||
player.EndEncounter();
|
||||
isInBattle = false;
|
||||
// Destroy(currentEnemyCollider.gameObject);
|
||||
// currentEnemyCollider = null;
|
||||
hasFailed = false;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
@@ -174,9 +196,16 @@ public class EventControls : MonoBehaviour
|
||||
isInBattle = false;
|
||||
eventCycleAccumalator = 0;
|
||||
currentEventControl = null;
|
||||
|
||||
numberOfEventsCount = 0;
|
||||
hasFailed = true;
|
||||
|
||||
player.ThrowUserInTheAirHurt();
|
||||
SoundManagerScript.PlaySound("bug laugh");
|
||||
|
||||
currentEnemyCollider.gameObject.GetComponent<SpriteRenderer>().enabled = true;
|
||||
currentEnemyCollider.gameObject.GetComponent<BugMovement>().EnableMovement();
|
||||
player.EndEncounter();
|
||||
|
||||
return;
|
||||
}
|
||||
else if (FailedToClickCorrect(currentEventControl.keyCode))
|
||||
@@ -187,8 +216,15 @@ public class EventControls : MonoBehaviour
|
||||
isInBattle = false;
|
||||
eventCycleAccumalator = 0;
|
||||
currentEventControl = null;
|
||||
numberOfEventsCount = 0;
|
||||
hasFailed = true;
|
||||
|
||||
player.ThrowUserInTheAirHurt();
|
||||
|
||||
currentEnemyCollider.gameObject.GetComponent<SpriteRenderer>().enabled = true;
|
||||
currentEnemyCollider.gameObject.GetComponent<BugMovement>().EnableMovement();
|
||||
player.EndEncounter();
|
||||
|
||||
SoundManagerScript.PlaySound("bug laugh");
|
||||
return;
|
||||
}
|
||||
@@ -206,16 +242,26 @@ public class EventControls : MonoBehaviour
|
||||
eventDrawn = false;
|
||||
numberOfControlTilesSet = 0;
|
||||
|
||||
if (currentEnemyCollider != null)
|
||||
Physics2D.IgnoreCollision(currentPlayerCollider, currentEnemyCollider, false);
|
||||
if (!isInBattle)
|
||||
if (maxNumberOfControlTiles == numberOfEventsCount)
|
||||
{
|
||||
currentEnemyCollider.gameObject.GetComponent<SpriteRenderer>().enabled = true;
|
||||
player.EndEncounter();
|
||||
}
|
||||
if (currentEnemyCollider != null && hasFailed)
|
||||
Physics2D.IgnoreCollision(currentPlayerCollider, currentEnemyCollider, false);
|
||||
|
||||
currentPlayerCollider = null;
|
||||
currentEnemyCollider = null;
|
||||
numberOfEventsCount = 0;
|
||||
currentPlayerCollider = null;
|
||||
currentEnemyCollider = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
eventTriggered = true && !hasFailed;
|
||||
isInBattle = true && !hasFailed;
|
||||
|
||||
if (hasFailed)
|
||||
{
|
||||
if (currentEnemyCollider != null)
|
||||
Physics2D.IgnoreCollision(currentPlayerCollider, currentEnemyCollider, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -231,5 +231,6 @@ public class Player : MonoBehaviour
|
||||
public void ThrowUserInTheAirHurt()
|
||||
{
|
||||
GetComponent<Rigidbody2D>().velocity += new Vector2(Mathf.Sign(transform.localScale.x) * -1 * hurtVelocity, hurtVelocity);
|
||||
isFighting = false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user