finished fixing events control

This commit is contained in:
2020-02-02 10:20:34 -05:00
parent a87e8ff093
commit c2977d355d
7 changed files with 243 additions and 110 deletions

View File

@@ -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;
}
}

View File

@@ -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
{

View File

@@ -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;
}
}