Continued working on event controls
This commit is contained in:
@@ -13,15 +13,17 @@ namespace Assets.Model
|
||||
public KeyCode keyCode;
|
||||
public Tile tile;
|
||||
public Tile successTile;
|
||||
public Tile failTile;
|
||||
public Vector3Int position;
|
||||
public bool isPlusTile;
|
||||
public bool isPerformed;
|
||||
|
||||
public EventControlTile(KeyCode keyCode, Tile tile, Tile successTile, Vector3Int position, bool isPlusTile = false)
|
||||
public EventControlTile(KeyCode keyCode, Tile tile, Tile successTile, Tile failTile, Vector3Int position, bool isPlusTile = false)
|
||||
{
|
||||
this.keyCode = keyCode;
|
||||
this.tile = tile;
|
||||
this.successTile = successTile;
|
||||
this.failTile = failTile;
|
||||
this.position = position;
|
||||
this.isPlusTile = isPlusTile;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -9,6 +9,7 @@ public class BugMovement : MonoBehaviour
|
||||
[SerializeField] private float movementSpeed = 10;
|
||||
[SerializeField] BoxCollider2D playerCollider;
|
||||
[SerializeField] EventControls eventControls;
|
||||
[SerializeField] Player player;
|
||||
|
||||
private int leftAccumalator = 0;
|
||||
private int rightAccumalator = 0;
|
||||
@@ -25,7 +26,7 @@ public class BugMovement : MonoBehaviour
|
||||
private void Update()
|
||||
{
|
||||
if (HasEncounteredPlayer())
|
||||
eventControls.TriggerEvent(playerCollider, GetComponent<BoxCollider2D>());
|
||||
eventControls.TriggerEvent(playerCollider, GetComponent<BoxCollider2D>(), player);
|
||||
|
||||
var totalFramesGoingLeft = framesPerSecond * secondsGoingLeft;
|
||||
var totalFramesGoingRight = framesPerSecond * secondsGoingRight;
|
||||
|
||||
@@ -11,6 +11,7 @@ public class EventControls : MonoBehaviour
|
||||
[SerializeField] private Camera camera;
|
||||
[SerializeField] private List<Tile> tiles;
|
||||
[SerializeField] private List<Tile> successTiles;
|
||||
[SerializeField] private List<Tile> failTiles;
|
||||
[SerializeField] private Tile plusTile;
|
||||
[SerializeField] private float framesPerControlTile = 15;
|
||||
[SerializeField] private int nextControlYOffset = 0;
|
||||
@@ -31,6 +32,7 @@ public class EventControls : MonoBehaviour
|
||||
private int eventCycleAccumalator = 0;
|
||||
private int tileMapClearDelayAccumalator = 0;
|
||||
private EventControlTile currentEventControl;
|
||||
private bool isInBattle = false;
|
||||
|
||||
private Collider2D currentPlayerCollider;
|
||||
private Collider2D currentEnemyCollider;
|
||||
@@ -42,7 +44,7 @@ public class EventControls : MonoBehaviour
|
||||
private int framesPerSecond => 60;
|
||||
private Vector3Int nextControlOffSetAsVector => new Vector3Int(nextControlXOffset, nextControlYOffset, 0);
|
||||
|
||||
public void TriggerEvent(Collider2D playerCollider, Collider2D enemyCollider)
|
||||
public void TriggerEvent(Collider2D playerCollider, Collider2D enemyCollider, Player player)
|
||||
{
|
||||
currentPlayerCollider = playerCollider;
|
||||
currentEnemyCollider = enemyCollider;
|
||||
@@ -51,6 +53,7 @@ public class EventControls : MonoBehaviour
|
||||
Physics2D.IgnoreCollision(playerCollider, enemyCollider, true);
|
||||
|
||||
eventTriggered = true;
|
||||
isInBattle = true;
|
||||
}
|
||||
|
||||
public bool IsEventTriggered()
|
||||
@@ -141,7 +144,7 @@ public class EventControls : MonoBehaviour
|
||||
.GetValueOrDefault();
|
||||
}
|
||||
|
||||
private bool PerformControlEvent()
|
||||
private void PerformControlEvent()
|
||||
{
|
||||
nextControlAccumalator = 0;
|
||||
|
||||
@@ -158,21 +161,35 @@ public class EventControls : MonoBehaviour
|
||||
{
|
||||
eventTriggered = false;
|
||||
eventCycleAccumalator = 0;
|
||||
// Destroy(currentEnemyCollider.gameObject);
|
||||
// currentEnemyCollider = null;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
else if (eventCycleAccumalator >= eventCycleInSeconds * framesPerSecond)
|
||||
{
|
||||
eventTriggered = false;
|
||||
isInBattle = false;
|
||||
eventCycleAccumalator = 0;
|
||||
Destroy(currentEnemyCollider.gameObject);
|
||||
currentEnemyCollider = null;
|
||||
currentEventControl = null;
|
||||
|
||||
player.ThrowUserInTheAirHurt();
|
||||
return;
|
||||
}
|
||||
else
|
||||
else if (FailedToClickCorrect(currentEventControl.keyCode))
|
||||
{
|
||||
eventCycleAccumalator++;
|
||||
tilemap.SetTile(currentEventControl.position, currentEventControl.failTile);
|
||||
eventTriggered = false;
|
||||
isInBattle = false;
|
||||
eventCycleAccumalator = 0;
|
||||
currentEventControl = null;
|
||||
|
||||
player.ThrowUserInTheAirHurt();
|
||||
return;
|
||||
}
|
||||
|
||||
return false;
|
||||
eventCycleAccumalator++;
|
||||
}
|
||||
|
||||
private void Reset()
|
||||
@@ -187,6 +204,7 @@ public class EventControls : MonoBehaviour
|
||||
|
||||
if (currentEnemyCollider != null)
|
||||
Physics2D.IgnoreCollision(currentPlayerCollider, currentEnemyCollider, false);
|
||||
if (!isInBattle)
|
||||
player.EnablePlayerMovement();
|
||||
|
||||
currentPlayerCollider = null;
|
||||
@@ -211,6 +229,7 @@ public class EventControls : MonoBehaviour
|
||||
return new EventControlTile(TileToKeyMappings.TileToKey[randomNumber],
|
||||
tiles[randomNumber],
|
||||
successTiles[randomNumber],
|
||||
failTiles[randomNumber],
|
||||
position);
|
||||
}
|
||||
|
||||
@@ -219,7 +238,15 @@ public class EventControls : MonoBehaviour
|
||||
return new EventControlTile(KeyCode.Escape,
|
||||
plusTile,
|
||||
null,
|
||||
null,
|
||||
position,
|
||||
true);
|
||||
}
|
||||
|
||||
private bool FailedToClickCorrect(KeyCode correctKey)
|
||||
{
|
||||
var allKeysButCorrect = TileToKeyMappings.TileToKey.Where(x => x != correctKey);
|
||||
|
||||
return allKeysButCorrect.Any(x => Input.GetKeyDown(x));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,10 +13,12 @@ public class Player : MonoBehaviour
|
||||
[SerializeField] private float wallLineCaseDistance = 0.5f;
|
||||
[SerializeField] private float runErrorThreshold = 0.05f;
|
||||
[SerializeField] private int startHealth = 3;
|
||||
private int currentHealth;
|
||||
[SerializeField] private int startStamina = 100;
|
||||
[SerializeField] private int coffeValuePercent = 10;
|
||||
[SerializeField] private int bugStaminaDamagePercent = 15;
|
||||
[SerializeField] private float hurtVelocity = 15f;
|
||||
|
||||
private int currentHealth;
|
||||
private int currentStamina;
|
||||
|
||||
[SerializeField] private SpriteRenderer healthBar;
|
||||
@@ -222,4 +224,9 @@ public class Player : MonoBehaviour
|
||||
{
|
||||
isMovementEnabled = true;
|
||||
}
|
||||
|
||||
public void ThrowUserInTheAirHurt()
|
||||
{
|
||||
GetComponent<Rigidbody2D>().velocity += new Vector2(Mathf.Sign(transform.localScale.x) * -1 * hurtVelocity, hurtVelocity);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,12 +143,12 @@ TextureImporter:
|
||||
name: GioBug0
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
x: 8
|
||||
y: 0
|
||||
width: 64
|
||||
height: 64
|
||||
alignment: 7
|
||||
pivot: {x: 0.5, y: 0}
|
||||
width: 51
|
||||
height: 43
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
@@ -164,12 +164,12 @@ TextureImporter:
|
||||
name: GioBug1
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 64
|
||||
x: 71
|
||||
y: 0
|
||||
width: 64
|
||||
height: 64
|
||||
alignment: 7
|
||||
pivot: {x: 0.5, y: 0}
|
||||
width: 51
|
||||
height: 44
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
|
||||
@@ -59,7 +59,7 @@ AnimatorStateMachine:
|
||||
m_ChildStates:
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: -2351193573875906098}
|
||||
m_Position: {x: 200, y: 0, z: 0}
|
||||
m_Position: {x: 270, y: 50, z: 0}
|
||||
m_ChildStateMachines: []
|
||||
m_AnyStateTransitions: []
|
||||
m_EntryTransitions: []
|
||||
|
||||
Reference in New Issue
Block a user