Merge branch 'dev' into yann

This commit is contained in:
Yann Dupont 01 2022-04-03 18:59:44 -04:00
commit cf81f1c621
12 changed files with 121 additions and 53 deletions

View File

@ -62381,7 +62381,9 @@ MonoBehaviour:
- position: {x: 10, y: -10}
direction: {x: 0, y: 1}
stats: {fileID: 11400000, guid: fe319ad8c9a37b84e8b45268c913d54c, type: 2}
entityPrefab: {fileID: 2004725698506461420, guid: f75821098c495cb43a0bff5d9ef0a671, type: 3}
lightGladiator: {fileID: 2004725698506461419, guid: f75821098c495cb43a0bff5d9ef0a671, type: 3}
regularGladiator: {fileID: 2004725698506461419, guid: f75821098c495cb43a0bff5d9ef0a671, type: 3}
heavyGladiator: {fileID: 1373848176550804357, guid: 99423d7c9a753554e87e6bb7e555018b, type: 3}
<gladiatorParent>k__BackingField: {fileID: 793317230}
<minionParent>k__BackingField: {fileID: 1787272690}
<graveyard>k__BackingField: {fileID: 1550580935}

View File

@ -169,6 +169,18 @@ PrefabInstance:
propertyPath: attackSounds.Array.size
value: 5
objectReference: {fileID: 0}
- target: {fileID: 197677485360569566, guid: b25a487d193f24049b6a791adf592b2e, type: 3}
propertyPath: attackCooldown
value: 5
objectReference: {fileID: 0}
- target: {fileID: 197677485360569566, guid: b25a487d193f24049b6a791adf592b2e, type: 3}
propertyPath: <cost>k__BackingField
value: 15
objectReference: {fileID: 0}
- target: {fileID: 197677485360569566, guid: b25a487d193f24049b6a791adf592b2e, type: 3}
propertyPath: <Health>k__BackingField
value: 80
objectReference: {fileID: 0}
- target: {fileID: 197677485360569566, guid: b25a487d193f24049b6a791adf592b2e, type: 3}
propertyPath: <renderer>k__BackingField
value:
@ -196,6 +208,12 @@ PrefabInstance:
- target: {fileID: 218553800040352715, guid: b25a487d193f24049b6a791adf592b2e, type: 3}
propertyPath: m_RootOrder
value: 4
propertyPath: <attackDmg>k__BackingField
value: 40
objectReference: {fileID: 0}
- target: {fileID: 197677485360569566, guid: b25a487d193f24049b6a791adf592b2e, type: 3}
propertyPath: <movementSpeed>k__BackingField
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1378753993384522801, guid: b25a487d193f24049b6a791adf592b2e, type: 3}
propertyPath: m_AnchorMax.x

View File

@ -160,6 +160,16 @@ PrefabInstance:
- target: {fileID: 2399377275812995974, guid: 5f633c05dee3f4b4784f5702b2365f02, type: 3}
propertyPath: deathSounds.Array.size
value: 3
propertyPath: attackCooldown
value: 0.7
objectReference: {fileID: 0}
- target: {fileID: 2399377275812995974, guid: 5f633c05dee3f4b4784f5702b2365f02, type: 3}
propertyPath: <cost>k__BackingField
value: 5
objectReference: {fileID: 0}
- target: {fileID: 2399377275812995974, guid: 5f633c05dee3f4b4784f5702b2365f02, type: 3}
propertyPath: <Health>k__BackingField
value: 30
objectReference: {fileID: 0}
- target: {fileID: 2399377275812995974, guid: 5f633c05dee3f4b4784f5702b2365f02, type: 3}
propertyPath: <renderer>k__BackingField
@ -177,6 +187,17 @@ PrefabInstance:
propertyPath: deathSounds.Array.data[2]
value:
objectReference: {fileID: 8300000, guid: 2bfd74251b8800843abb9121b2e543f2, type: 3}
propertyPath: <attackDmg>k__BackingField
value: 5
objectReference: {fileID: 0}
- target: {fileID: 2399377275812995974, guid: 5f633c05dee3f4b4784f5702b2365f02, type: 3}
propertyPath: <attackRange>k__BackingField
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2399377275812995974, guid: 5f633c05dee3f4b4784f5702b2365f02, type: 3}
propertyPath: <movementSpeed>k__BackingField
value: 4
objectReference: {fileID: 0}
- target: {fileID: 2399377275812995980, guid: 5f633c05dee3f4b4784f5702b2365f02, type: 3}
propertyPath: m_Name
value: Goblin Variant

View File

@ -120,8 +120,8 @@ MonoBehaviour:
gameFlowManager: {fileID: 0}
playerStats: {fileID: 11400000, guid: 12a626b5a296d934ba078d222ad6ba98, type: 2}
minionPrefabs:
- {fileID: 2674681564269481473, guid: 6385a50f8549b2141a1daf3577c54d0a, type: 3}
- {fileID: 4435383994544937624, guid: d6075d2fe32cab14082dfc6d5f5ebc59, type: 3}
- {fileID: 2674681564269481473, guid: 6385a50f8549b2141a1daf3577c54d0a, type: 3}
aimArrow: {fileID: 5124059627794595469}
--- !u!114 &7967951869135974023
MonoBehaviour:

View File

@ -17,6 +17,7 @@ public class AIEntity : Entity {
public bool facingRight { get; private set; } = true;
protected Vector3 moatExtents;
protected bool isAvoiding = false;
[field: SerializeField] public float cost{ get; private set; } = 10f;
override protected void Start() {
base.Start();
@ -287,6 +288,7 @@ public class AIEntity : Entity {
entity.animator.Play("Attack");
entity.soundManager.PlaySound(entity.attackSource, entity.attackSounds, randomPitch: true, createTempSourceIfBusy: true);
targetEntity.TakeDamage(entity.attackDmg, entity);
entity.rb.velocity = Vector3.zero;
bool isTargetAlive = targetEntity.IsAlive();
if (!isTargetAlive) {
return new FindTargetState(entity);

View File

@ -14,4 +14,9 @@ MonoBehaviour:
m_EditorClassIdentifier:
secondsBetweenSpawners: 15
initWaitToSpawn: 3
waveSize: 3
initWaveSize: 3
maxWaveSize: 10
waveIncrease: 1
increaseWaveStep: 3
lightRatio: 0.25
heavyRatio: 0.1

View File

@ -22,13 +22,17 @@ public class Arena : MonoBehaviour {
[SerializeField]
[Required]
ArenaStats stats = null!;
[SerializeField]
[Required]
GameObject entityPrefab = null!;
[field: SerializeField]
[field: Required]
public Transform gladiatorParent { get; private set; } = null!;
//TODO Add some kind of "MinLength(1)" attribute;
[SerializeField] [Required]
public AIEntity lightGladiator = null!;
[SerializeField] [Required]
public AIEntity regularGladiator = null!;
[SerializeField] [Required]
public AIEntity heavyGladiator = null!;
[field: SerializeField]
[field: Required]
@ -55,7 +59,7 @@ public class Arena : MonoBehaviour {
void OnDestroy() => gameFlowManager.stateChanged -= OnGameFlowStateChanged;
void SpawnEnemy(int spawnerIndex) {
void SpawnEnemy(int spawnerIndex, AIEntity entityPrefab) {
if (!gameFlowManager.CanDoAction)
return;
@ -72,20 +76,31 @@ public class Arena : MonoBehaviour {
yield return new WaitForSeconds(stats.initWaitToSpawn);
currWaveSize = stats.initWaveSize;
int currentSpawner = 0;
int lightAmountSpawned = 0;
int heavyAmountSpawned = 0;
int amountSpawned = 0;
int wave = 1;
while (true) {
while(true){
soundManager.PlaySound(waveSource, waveSounds, randomPitch: true, createTempSourceIfBusy: true);
while (amountSpawned < currWaveSize) {
currentSpawner = Random.Range(0, spawners.Length);
SpawnEnemy(currentSpawner);
if(currWaveSize >= .5*stats.maxWaveSize && lightAmountSpawned <= stats.maxWaveSize * stats.lightRatio){
SpawnEnemy(currentSpawner, lightGladiator);
lightAmountSpawned++;
}else if(currWaveSize >= .8*stats.maxWaveSize && heavyAmountSpawned <= stats.maxWaveSize * stats.heavyRatio){
SpawnEnemy(currentSpawner, heavyGladiator);
heavyAmountSpawned++;
}else{
SpawnEnemy(currentSpawner, regularGladiator);
}
amountSpawned++;
}
if (wave++ >= stats.increaseWaveStep) {
if ((currWaveSize += stats.waveIncrease) > stats.maxWaveSize) currWaveSize = stats.maxWaveSize;
if(wave++ >= stats.increaseWaveStep){
if((currWaveSize += stats.waveIncrease) > stats.maxWaveSize) currWaveSize=stats.maxWaveSize;
}
amountSpawned = 0;
lightAmountSpawned = 0;
heavyAmountSpawned = 0;
yield return new WaitForSeconds(stats.secondsBetweenSpawners);
}

View File

@ -8,5 +8,6 @@ public class ArenaStats : ScriptableObject {
[Min(0f)] public int maxWaveSize = 10;
[Min(0f), Tooltip("The amount of gladiator to add to wave")] public int waveIncrease = 1;
[Min(0f), Tooltip("How many waves before we increase by WaveIncrease")] public int increaseWaveStep = 3;
[Range(0f, 1f), Tooltip("Percentage of gladiator who are light")] public float lightRatio = 0.25f;
[Range(0f, 1f), Tooltip("Percentage of gladiator who are heavy")] public float heavyRatio = 0.1f;
}

View File

@ -11,7 +11,7 @@ public class MinionThrower : MonoBehaviour {
[SerializeField] [Required]
PlayerStats playerStats = null!;
public Entity[] minionPrefabs = null!;
public AIEntity[] minionPrefabs = null!;
public GameObject aimArrow = null!;
bool isInThrowMode;
@ -21,7 +21,6 @@ public class MinionThrower : MonoBehaviour {
PlayerMovement movement = null!;
float currentCooldownTimer;
float currentInitialCooldown;
void Awake() {
vampireEntity = GetComponent<VampireEntity>();
@ -31,7 +30,7 @@ public class MinionThrower : MonoBehaviour {
}
void Start() {
foreach (Entity minion in minionPrefabs) {
foreach (AIEntity minion in minionPrefabs) {
minionBar.AddMinionType(minion);
}
minionBar.UpdateReload(0f);
@ -40,7 +39,7 @@ public class MinionThrower : MonoBehaviour {
void FixedUpdate() {
if (currentCooldownTimer > 0f) {
currentCooldownTimer -= Time.fixedDeltaTime;
minionBar.UpdateReload(currentCooldownTimer / currentInitialCooldown);
minionBar.UpdateReload(currentCooldownTimer / playerStats.currentInitialCooldown);
}
}
@ -78,15 +77,15 @@ public class MinionThrower : MonoBehaviour {
return;
}
float minionHealthCost = 10f; // TODO
float minionHealthCost = minionBar.GetCurrentMinion().cost;
if (minionHealthCost >= vampireEntity.Health) {
return;
}
vampireEntity.TakeDamage(minionHealthCost, vampireEntity);
currentInitialCooldown = 2f; // TODO
currentCooldownTimer = currentInitialCooldown;
minionBar.UpdateReload(currentCooldownTimer / currentInitialCooldown);
currentCooldownTimer = playerStats.currentInitialCooldown;
minionBar.UpdateReload(currentCooldownTimer / playerStats.currentInitialCooldown);
var newMinion = Instantiate(minionBar.GetCurrentMinion().gameObject, arena.minionParent)
.GetComponent<Monster>();

View File

@ -15,3 +15,5 @@ MonoBehaviour:
movementSpeed: 4
suckSpeed: 1
bloodLossRate: 2
<MinJoystickValueForThrowing>k__BackingField: 0.4
currentInitialCooldown: 0.5

View File

@ -13,4 +13,7 @@ public class PlayerStats : ScriptableObject {
[field: SerializeField] [field: Range(0f, 1f)]
public float MinJoystickValueForThrowing { get; private set; } = .4f;
[field: SerializeField] [field: Min(0f)]
public float currentInitialCooldown = 0.5f;
}

View File

@ -7,12 +7,12 @@ public class MinionBar : MonoBehaviour {
public GameObject minionIconPrefab;
List<Entity> minionTypes;
List<AIEntity> minionTypes;
List<MinionIcon> minionIcons;
int currentIndex;
void Awake() {
minionTypes = new List<Entity>();
minionTypes = new List<AIEntity>();
minionIcons = new List<MinionIcon>();
}
@ -39,7 +39,7 @@ public class MinionBar : MonoBehaviour {
// print("new selected minion type : " + currentIndex.ToString());
}
public void AddMinionType(Entity newMinionPrefab) {
public void AddMinionType(AIEntity newMinionPrefab) {
minionTypes.Add(newMinionPrefab);
MinionIcon newIcon = Instantiate(minionIconPrefab, transform)
.GetComponent<MinionIcon>();
@ -67,7 +67,7 @@ public class MinionBar : MonoBehaviour {
}
}
public Entity GetCurrentMinion() {
public AIEntity GetCurrentMinion() {
return minionTypes[currentIndex];
}