Merge remote-tracking branch 'origin/dev' into jason

# Conflicts:
#	Assets/Scripts/VampireEntity.cs
This commit is contained in:
Jason Durand 01 2022-04-02 19:18:50 -04:00
commit 271bd1d93f
14 changed files with 203 additions and 125 deletions

View File

@ -9,11 +9,10 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 197677485360569565}
- component: {fileID: 197677485360569564}
- component: {fileID: 197677485360569563}
- component: {fileID: 197677485360569566}
- component: {fileID: 3988163462708087662}
- component: {fileID: 2142155588016984618}
- component: {fileID: -8195126358453283336}
m_Layer: 0
m_Name: Gladiator
m_TagString: Gladiator
@ -37,55 +36,6 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &197677485360569564
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 197677485360569561}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &197677485360569563
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 197677485360569561}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &197677485360569566
MonoBehaviour:
m_ObjectHideFlags: 0
@ -99,7 +49,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
gameFlowManager: {fileID: 0}
<Health>k__BackingField: 100
<Health>k__BackingField: 40
healthBar: {fileID: 1378753993005748510}
bloodTokens: 1
<movementSpeed>k__BackingField: 2
@ -110,6 +60,8 @@ MonoBehaviour:
attackCooldown: 1
target: {fileID: 0}
halo: {fileID: 3772547392739388838}
deadColor: {r: 0.7075472, g: 0.030037368, b: 0.030037368, a: 1}
emptyColor: {r: 0.5660378, g: 0.5660378, b: 0.5660378, a: 0.4117647}
AIStats: {fileID: 11400000, guid: 9d8a9a664d932d0498d5eca7607eeb53, type: 2}
--- !u!58 &3988163462708087662
CircleCollider2D:
@ -148,6 +100,57 @@ Rigidbody2D:
m_SleepingMode: 1
m_CollisionDetection: 0
m_Constraints: 4
--- !u!212 &-8195126358453283336
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 197677485360569561}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: -1438510283
m_SortingLayer: 1
m_SortingOrder: 0
m_Sprite: {fileID: -2413806693520163455, guid: 4adeaf2d2b1c7417e89f026626d8264f, type: 3}
m_Color: {r: 0.04774831, g: 0.2735849, b: 0.08162382, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1, y: 1}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &3772547392739388838
GameObject:
m_ObjectHideFlags: 0

View File

@ -57,7 +57,7 @@ Canvas:
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0
m_SortingLayerID: 0
m_SortingLayerID: -1438510283
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!114 &2962150094107129824

View File

@ -91,11 +91,10 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 2399377275812995968}
- component: {fileID: 2399377275812995969}
- component: {fileID: 2399377275812995970}
- component: {fileID: 2399377275812995974}
- component: {fileID: 1427479462206541758}
- component: {fileID: 8912459659685944407}
- component: {fileID: 7325874221449804585}
m_Layer: 0
m_Name: Monster
m_TagString: Monster
@ -119,55 +118,6 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &2399377275812995969
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2399377275812995980}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &2399377275812995970
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2399377275812995980}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &2399377275812995974
MonoBehaviour:
m_ObjectHideFlags: 0
@ -181,7 +131,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
gameFlowManager: {fileID: 0}
<Health>k__BackingField: 100
<Health>k__BackingField: 40
healthBar: {fileID: 7668921808924868904}
bloodTokens: 0
<movementSpeed>k__BackingField: 2
@ -192,6 +142,8 @@ MonoBehaviour:
attackCooldown: 1
target: {fileID: 0}
halo: {fileID: 160873202674104038}
deadColor: {r: 0.7058824, g: 0.03137255, b: 0.03137255, a: 1}
emptyColor: {r: 0.5647059, g: 0.5647059, b: 0.5647059, a: 0.4117647}
AIStats: {fileID: 11400000, guid: 9d8a9a664d932d0498d5eca7607eeb53, type: 2}
thrownFromSafeZone: 0
thrownTargetPosition: {x: 0, y: 0, z: 0}
@ -232,6 +184,57 @@ CircleCollider2D:
m_Offset: {x: 0, y: 0}
serializedVersion: 2
m_Radius: 0.5
--- !u!212 &7325874221449804585
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2399377275812995980}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: -1438510283
m_SortingLayer: 1
m_SortingOrder: 0
m_Sprite: {fileID: -5177388603050735206, guid: 71ebafeef3c03457483266a33ab2b270, type: 3}
m_Color: {r: 0.14929691, g: 0.18158285, b: 0.5754717, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1, y: 1}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1001 &4861301622389167767
PrefabInstance:
m_ObjectHideFlags: 0
@ -239,6 +242,10 @@ PrefabInstance:
m_Modification:
m_TransformParent: {fileID: 2399377275812995968}
m_Modifications:
- target: {fileID: 2962150094107129825, guid: d1d8f8326b5490848a9400aa9bd6b2f4, type: 3}
propertyPath: m_Enabled
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2962150094107129826, guid: d1d8f8326b5490848a9400aa9bd6b2f4, type: 3}
propertyPath: m_Name
value: Health Bar Canvas
@ -335,6 +342,10 @@ PrefabInstance:
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2962150095602046905, guid: d1d8f8326b5490848a9400aa9bd6b2f4, type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d1d8f8326b5490848a9400aa9bd6b2f4, type: 3}
--- !u!224 &7668921808236339569 stripped

View File

@ -80,6 +80,8 @@ MonoBehaviour:
attackCooldown: 0
target: {fileID: 0}
halo: {fileID: 0}
deadColor: {r: 1, g: 0, b: 0, a: 1}
emptyColor: {r: 1, g: 0, b: 0, a: 1}
playerStats: {fileID: 11400000, guid: 12a626b5a296d934ba078d222ad6ba98, type: 2}
--- !u!114 &1967503440015794769
MonoBehaviour:
@ -150,11 +152,11 @@ SpriteRenderer:
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingLayerID: 603553691
m_SortingLayer: 2
m_SortingOrder: 0
m_Sprite: {fileID: 7482667652216324306, guid: 48e93eef0688c4a259cb0eddcd8661f7, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_Color: {r: 0.03226238, g: 0.0766813, b: 0.23584908, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0

View File

@ -18,11 +18,13 @@ public class AIEntity : Entity
}
override protected void Update() {
base.Update();
if (currentState.UpdateState() is {} newState)
SwitchState(newState);
}
override protected void FixedUpdate() {
base.FixedUpdate();
if (currentState.FixedUpdateState() is {} newState)
SwitchState(newState);
}
@ -48,6 +50,15 @@ public class AIEntity : Entity
return false;
}
override public bool TakeDamage(float amount, Entity other){
Entity currTargetEntity = GetTarget().GetComponent<Entity>();
if(!(currTargetEntity is null)){
if(currTargetEntity.entityName == "Vampire")
SetTarget(other.transform);
}
return base.TakeDamage(amount, other);
}
protected abstract class BaseStateAI : BaseState{
protected AIEntity entity;
public BaseStateAI(AIEntity entity){
@ -163,7 +174,7 @@ public class AIEntity : Entity
private BaseState? Attack(){
Entity targetEntity = entity.GetTarget().GetComponent<Entity>();
if(targetEntity != null){
targetEntity.TakeDamage(entity.attackDmg);
targetEntity.TakeDamage(entity.attackDmg, entity);
bool isTargetAlive = targetEntity.IsAlive();
if(!isTargetAlive){
return new FindTargetState(entity);
@ -175,7 +186,7 @@ public class AIEntity : Entity
protected class DeadState : BaseStateAI{
public DeadState(AIEntity entity) : base(entity){
Debug.Log("Dead!");
}
public override BaseState? UpdateState(){

View File

@ -12,4 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 8de175900b604adb984b49af64538a07, type: 3}
m_Name: Arena Stats
m_EditorClassIdentifier:
secondsBetweenSpawners: 5
secondsBetweenSpawners: 15
initWaitToSpawn: 3
waveSize: 3

View File

@ -40,15 +40,20 @@ public class Arena : MonoBehaviour {
}
IEnumerator SpawnEnemies() {
yield return new WaitForSeconds(stats.secondsBetweenSpawners);
yield return new WaitForSeconds(stats.initWaitToSpawn);
int currentSpawner = 0;
while (true) {
SpawnEnemy(currentSpawner);
currentSpawner = Random.Range(0, spawners.Length);
int amountSpawned = 0;
while(true){
while (amountSpawned < stats.waveSize) {
currentSpawner = Random.Range(0, spawners.Length);
SpawnEnemy(currentSpawner);
amountSpawned++;
}
yield return new WaitForSeconds(stats.secondsBetweenSpawners);
amountSpawned = 0;
}
}
#if UNITY_EDITOR

View File

@ -3,4 +3,7 @@
[CreateAssetMenu]
public class ArenaStats : ScriptableObject {
[Min(0f)] public float secondsBetweenSpawners = 3f;
[Min(0f)] public float initWaitToSpawn = 3f;
[Min(0f)] public float waveSize = 3f;
}

View File

@ -24,13 +24,20 @@ public class Entity : MonoBehaviour {
protected float attackTimer;
[SerializeField] private Transform target;
public string entityName { get; protected set; }
private Collider atkCollider;
public Vector3 direction { get; set; }
public Rigidbody2D rb { get; private set; }
public Collider2D collider { get; private set; }
public SpriteRenderer renderer { get; private set; }
bool beingPushed;
[SerializeField] GameObject halo;
[SerializeField] Color deadColor = Color.red;
[SerializeField] Color emptyColor = Color.grey;
virtual protected void Awake() => rb = GetComponent<Rigidbody2D>();
virtual protected void Awake(){
rb = GetComponent<Rigidbody2D>();
collider = GetComponent<Collider2D>();
renderer = GetComponent<SpriteRenderer>();
}
protected virtual void Start() {
if (direction == Vector3.zero && !(this is VampireEntity))
@ -73,7 +80,7 @@ public class Entity : MonoBehaviour {
}
//Apply damage to the entity, returns true if it is still alive
public virtual bool TakeDamage(float amount) {
public virtual bool TakeDamage(float amount, Entity other) {
Health -= amount;
healthBar.SetHealthFraction(Health / initialHealth);
@ -113,7 +120,28 @@ public class Entity : MonoBehaviour {
rb.AddForce(impulse, ForceMode2D.Impulse);
}
protected virtual void OnDied() { }
protected virtual void OnDied() {
if(!(collider is null)){
collider.isTrigger = true;
}
if(!(rb is null)){
rb.isKinematic = true;
rb.velocity = Vector2.zero;
}
healthBar.gameObject.SetActive(false);
if(bloodTokens > 0){
renderer.color = deadColor;
renderer.sortingOrder = -1;
}else{
renderer.color = emptyColor;
renderer.sortingOrder = -2;
}
}
protected virtual void OnEmpty(){
renderer.color = emptyColor;
renderer.sortingOrder = -2;
}
public void EnableHalo() {
halo.SetActive(true);

View File

@ -12,6 +12,13 @@ public class Gladiator : AIEntity
base.enemies = new string[]{"Monster", "Vampire"};
}
override protected void Update(){
base.Update();
if(bloodTokens <= 0){
OnEmpty();
}
}
override protected bool IsTargetable(Entity other){
foreach (string name in enemies){
if(other.entityName == name && other.IsAlive()){

View File

@ -68,7 +68,7 @@ public class MinionThrower : MonoBehaviour {
if(minionHealthCost >= vampireEntity.Health) {
return;
}
vampireEntity.TakeDamage(minionHealthCost);
vampireEntity.TakeDamage(minionHealthCost, vampireEntity);
currentInitialCooldown = 2f; // TODO
currentCooldownTimer = currentInitialCooldown;

View File

@ -12,6 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 5a9c2f4541a74e86afc424d568e0f629, type: 3}
m_Name: Player Stats
m_EditorClassIdentifier:
movementSpeed: 3
movementSpeed: 4
suckSpeed: 1
bloodLossRate: 3
bloodLossRate: 2

View File

@ -19,7 +19,7 @@ public class VampireEntity : Entity {
base.Update();
if (gameFlowManager.CanDoAction)
TakeDamage(playerStats.bloodLossRate * Time.deltaTime);
TakeDamage(playerStats.bloodLossRate * Time.deltaTime, this);
}
// public override void TakeDamage(float amount) {

View File

@ -46,3 +46,9 @@ TagManager:
- name: Default
uniqueID: 0
locked: 0
- name: AI
uniqueID: 2856457013
locked: 0
- name: Player
uniqueID: 603553691
locked: 0