Modified character state system. Added SuperJump without appropriate targeting UI

This commit is contained in:
AlexMamontow 2021-09-03 15:44:15 +03:00
parent e1dde52d70
commit c5f883829f
29 changed files with 513 additions and 197 deletions

View File

@ -44,6 +44,31 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-7864811333266388210
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: SuperJump
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 4786967278910117454}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.53125
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-7709086499349086692
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -184,13 +209,16 @@ AnimatorStateMachine:
m_Position: {x: 100, y: 190, z: 0}
- serializedVersion: 1
m_State: {fileID: -5420591165863964520}
m_Position: {x: 600, y: 40, z: 0}
m_Position: {x: 610, y: -50, z: 0}
- serializedVersion: 1
m_State: {fileID: 4854150556359437757}
m_Position: {x: 620, y: 180, z: 0}
m_Position: {x: 700, y: 50, z: 0}
- serializedVersion: 1
m_State: {fileID: 5596697925261898950}
m_Position: {x: 360, y: 240, z: 0}
- serializedVersion: 1
m_State: {fileID: 4786967278910117454}
m_Position: {x: 630, y: 220, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
@ -201,6 +229,28 @@ AnimatorStateMachine:
m_ExitPosition: {x: 790, y: -90, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: 7761001461743940837}
--- !u!1101 &-1565193609637757068
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 7761001461743940837}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.9050633
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
@ -215,31 +265,37 @@ AnimatorController:
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
m_Controller: {fileID: 0}
- m_Name: BackToIdle
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
m_Controller: {fileID: 0}
- m_Name: Build
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
m_Controller: {fileID: 0}
- m_Name: TreeAttack
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
m_Controller: {fileID: 0}
- m_Name: Move
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
m_Controller: {fileID: 0}
- m_Name: SuperJump
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
@ -457,6 +513,33 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &4786967278910117454
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: SuperJump
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: -1565193609637757068}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 097363ae0f4e1f447b1b623e24b9cd2e, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &4854150556359437757
AnimatorState:
serializedVersion: 6
@ -551,6 +634,7 @@ AnimatorState:
- {fileID: 4049465237675511472}
- {fileID: -7709086499349086692}
- {fileID: 1079191915755825572}
- {fileID: -7864811333266388210}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0

View File

@ -13,6 +13,6 @@ MonoBehaviour:
m_Name: bonus_att_0
m_EditorClassIdentifier:
bonusType: 0
bonusAction: {fileID: 11400000, guid: fa0a94f859c6c18469c594e9776e36a5, type: 2}
bonusAction: {fileID: 11400000, guid: c15acfd0a41c0aa4dad9984a0bf65905, type: 2}
icon: {fileID: 21300000, guid: cd80020b84891c542bb620ee4e16c472, type: 3}
bonusLevel: 0

View File

@ -14,6 +14,6 @@ MonoBehaviour:
m_EditorClassIdentifier:
duration: 3.15
distance: 1
actionState: 4
actionType: 2
buildPref: {fileID: 2876353875295318420, guid: 2fb427c4f691758448ac2c6450b27242,
type: 3}

View File

@ -14,6 +14,6 @@ MonoBehaviour:
m_EditorClassIdentifier:
duration: 3.15
distance: 1
actionState: 4
actionType: 2
buildPref: {fileID: 5119240428719783082, guid: a80c8a9443ee8d547b06a2f1d8b4900e,
type: 3}

View File

@ -14,6 +14,6 @@ MonoBehaviour:
m_EditorClassIdentifier:
duration: 3.15
distance: 1
actionState: 4
actionType: 2
buildPref: {fileID: 4810627989180709430, guid: 019d55682fa91934eaf2df23b6eb055e,
type: 3}

View File

@ -14,6 +14,6 @@ MonoBehaviour:
m_EditorClassIdentifier:
duration: 3.15
distance: 1
actionState: 4
actionType: 2
trapPref: {fileID: 8305872390849316384, guid: abdfd5b61d4a8664fb8222503bb9f3e8,
type: 3}

View File

@ -14,4 +14,4 @@ MonoBehaviour:
m_EditorClassIdentifier:
duration: 1
distance: 1
actionType: 3
actionType: 0

View File

@ -0,0 +1,17 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0169a7715dc4850439785448a35ff4a3, type: 3}
m_Name: SuperJump
m_EditorClassIdentifier:
duration: 2
distance: 1
actionType: 4

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c15acfd0a41c0aa4dad9984a0bf65905
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -14,7 +14,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
duration: 0.3
distance: 1
actionState: 5
actionType: 3
attackPref: {fileID: 5329242548601918259, guid: 87df8882a1fca7f4f83d9c9015eede7a,
type: 3}
damage: 60

View File

@ -2025,7 +2025,7 @@ Transform:
m_Children:
- {fileID: 526352758}
m_Father: {fileID: 0}
m_RootOrder: 15
m_RootOrder: 14
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &185995048
MonoBehaviour:
@ -5172,7 +5172,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 16
m_RootOrder: 15
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &471392440
PrefabInstance:
@ -5870,7 +5870,7 @@ Transform:
m_LocalScale: {x: 8, y: 8, z: 8}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 6
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &508187713
PrefabInstance:
@ -8555,7 +8555,7 @@ Transform:
- {fileID: 272588901}
- {fileID: 1605217076}
m_Father: {fileID: 0}
m_RootOrder: 12
m_RootOrder: 11
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &752477394
PrefabInstance:
@ -9046,7 +9046,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 9
m_RootOrder: 8
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &807330786
PrefabInstance:
@ -9966,7 +9966,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 7
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 135, y: 89.99999, z: 0}
--- !u!1 &868827590 stripped
GameObject:
@ -10186,7 +10186,7 @@ Transform:
m_Children:
- {fileID: 1946816076}
m_Father: {fileID: 0}
m_RootOrder: 14
m_RootOrder: 13
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &913312418 stripped
GameObject:
@ -11214,7 +11214,7 @@ Transform:
m_Children:
- {fileID: 1923264932}
m_Father: {fileID: 0}
m_RootOrder: 8
m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 70, y: 45.000004, z: 0}
--- !u!1001 &965368894
PrefabInstance:
@ -13107,7 +13107,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 10
m_RootOrder: 9
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1102420989
MonoBehaviour:
@ -18794,7 +18794,7 @@ Transform:
- {fileID: 1372657677}
- {fileID: 2040783569}
m_Father: {fileID: 0}
m_RootOrder: 18
m_RootOrder: 17
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1503763737
MonoBehaviour:
@ -20953,7 +20953,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 17
m_RootOrder: 16
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1639545075
PrefabInstance:
@ -22708,7 +22708,7 @@ Transform:
- {fileID: 622020284}
- {fileID: 1511619758}
m_Father: {fileID: 0}
m_RootOrder: 11
m_RootOrder: 10
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1801060023
MonoBehaviour:
@ -22975,7 +22975,7 @@ RectTransform:
- {fileID: 6614787374390785079}
- {fileID: 436034243}
m_Father: {fileID: 0}
m_RootOrder: 13
m_RootOrder: 12
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@ -24689,8 +24689,7 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1923264931}
m_LocalRotation: {x: 0.029971035, y: -0.000000004076362, z: 0.0000000075761575,
w: 0.9995508}
m_LocalRotation: {x: 0.029971035, y: 0.000000004076362, z: -0.000000007576159, w: 0.9995508}
m_LocalPosition: {x: 0, y: 0.87083435, z: -14.50833}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
@ -25376,7 +25375,7 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1946816075}
m_LocalRotation: {x: 0.5257311, y: -0.000000007318311, z: 0.000000004522964, w: 0.85065085}
m_LocalRotation: {x: 0.5257311, y: 0.0000000073183117, z: -0.0000000045229647, w: 0.85065085}
m_LocalPosition: {x: 0, y: 13, z: -6.5}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
@ -25645,75 +25644,6 @@ MonoBehaviour:
hCost: 0
fCost: 0
parent: {fileID: 0}
--- !u!1001 &1989109123
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 2307028534112872116, guid: 79d768bf87aadec478a5722da8c6d516,
type: 3}
propertyPath: m_Name
value: DamageBomb
objectReference: {fileID: 0}
- target: {fileID: 2310877354265898640, guid: 79d768bf87aadec478a5722da8c6d516,
type: 3}
propertyPath: m_RootOrder
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2310877354265898640, guid: 79d768bf87aadec478a5722da8c6d516,
type: 3}
propertyPath: m_LocalPosition.x
value: -1.0537146
objectReference: {fileID: 0}
- target: {fileID: 2310877354265898640, guid: 79d768bf87aadec478a5722da8c6d516,
type: 3}
propertyPath: m_LocalPosition.y
value: -0.14899969
objectReference: {fileID: 0}
- target: {fileID: 2310877354265898640, guid: 79d768bf87aadec478a5722da8c6d516,
type: 3}
propertyPath: m_LocalPosition.z
value: -1.3211665
objectReference: {fileID: 0}
- target: {fileID: 2310877354265898640, guid: 79d768bf87aadec478a5722da8c6d516,
type: 3}
propertyPath: m_LocalRotation.w
value: 0.7071068
objectReference: {fileID: 0}
- target: {fileID: 2310877354265898640, guid: 79d768bf87aadec478a5722da8c6d516,
type: 3}
propertyPath: m_LocalRotation.x
value: -0.7071068
objectReference: {fileID: 0}
- target: {fileID: 2310877354265898640, guid: 79d768bf87aadec478a5722da8c6d516,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2310877354265898640, guid: 79d768bf87aadec478a5722da8c6d516,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2310877354265898640, guid: 79d768bf87aadec478a5722da8c6d516,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2310877354265898640, guid: 79d768bf87aadec478a5722da8c6d516,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2310877354265898640, guid: 79d768bf87aadec478a5722da8c6d516,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 79d768bf87aadec478a5722da8c6d516, type: 3}
--- !u!1001 &1996405558
PrefabInstance:
m_ObjectHideFlags: 0
@ -26463,7 +26393,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 19
m_RootOrder: 18
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2036756630 stripped
GameObject:

View File

@ -6,7 +6,7 @@ using System;
public class ActionTargetingSystem : MonoBehaviour
{
public Action<TileInfo> OnFoundTarget;
public Action<TileInfo, ActionType> OnFoundTarget;
public Action OnLostTarget;
private PlayerState _playerState;
@ -49,7 +49,7 @@ public class ActionTargetingSystem : MonoBehaviour
if (targetTile != _playerState.currentActionTarget)
{
_playerState.currentActionTarget = targetTile;
OnFoundTarget?.Invoke(_playerState.currentActionTarget);
OnFoundTarget?.Invoke(_playerState.currentActionTarget, _playerState.currentAction.actionType);
}
}
else

View File

@ -29,7 +29,7 @@ public class ActionTriggerSystem : MonoBehaviour
//OnLostTarget?.Invoke();
StopAllCoroutines();
//Debug.Log("trigger current action");
if (_playerState.currentAction.actionState == CharacterState.Attack)
if (_playerState.currentAction.actionType == ActionType.Attack)
{
if (!GetComponent<AttackEnergyController>().IsReady())
{
@ -51,10 +51,11 @@ public class ActionTriggerSystem : MonoBehaviour
{
return;
}
_playerState.SetNewState(action.actionState);
_playerState.SetNewState(CharacterState.Action);
//Debug.Log("started state " + action.actionState);
transform.LookAt(_playerState.currentActionTarget.tilePosition);
action.StartActionOperations(_playerState.currentActionTarget);
action.StartActionOperations(_playerState.currentActionTarget, _playerState);
StartCoroutine(WaitTillActionEnd(action));
}
@ -70,7 +71,7 @@ public class ActionTriggerSystem : MonoBehaviour
if (_actionProgress > 0.7f && !actionImpact)
{
actionImpact = true;
action.Impact(target, _playerState.currentTile, _playerState.ownerIndex);
action.Impact(target, _playerState);
}
timer += Time.fixedDeltaTime;
_actionProgress = timer / waitTime;

View File

@ -18,11 +18,11 @@ public class Attack : PlayerAction
return permission;
}
public override void Impact(TileInfo targetTile, TileInfo currentTile, TileOwner owner)
public override void Impact(TileInfo targetTile, PlayerState currentPlayer)
{
base.Impact(targetTile, currentTile, owner);
Vector3 direction = targetTile.tilePosition - currentTile.tilePosition;
InitAttack(currentTile.tilePosition, direction, owner);
base.Impact(targetTile, currentPlayer);
Vector3 direction = targetTile.tilePosition - currentPlayer.currentTile.tilePosition;
InitAttack(currentPlayer.currentTile.tilePosition, direction, currentPlayer.ownerIndex);
}
private void InitAttack(Vector3 startPosition, Vector3 direction, TileOwner projOwner)

View File

@ -16,11 +16,10 @@ public class Build : PlayerAction
return permission;
}
public override void StartActionOperations(TileInfo targetTile)
public override void StartActionOperations(TileInfo targetTile, PlayerState currentPlayer)
{
base.StartActionOperations(targetTile);
base.StartActionOperations(targetTile, currentPlayer);
var spawnedTower = Instantiate(buildPref, targetTile.tilePosition, buildPref.transform.rotation);
TileManagment.AssignBuildingToTile(targetTile, spawnedTower);
//Debug.Log("startBuilding");
}
}

View File

@ -7,9 +7,9 @@ public class PlayerAction : ScriptableObject
public float duration = 1f;
public float distance = 1;
public CharacterState actionState = CharacterState.Attack;
//public CharacterState actionState = CharacterState.Attack;
//public CharacterSubState actionType = CharacterSubState.Attack;
public ActionType actionType = ActionType.Attack;
public virtual bool IsActionAllowed(TileInfo targetTile, PlayerState playerState)
{
if (!targetTile)
@ -20,12 +20,12 @@ public class PlayerAction : ScriptableObject
return targetTile != playerState.currentTile;
}
public virtual void StartActionOperations(TileInfo targetTile)
public virtual void StartActionOperations(TileInfo targetTile, PlayerState currentPlayer)
{
}
public virtual void Impact(TileInfo targetTile, TileInfo currentTile, TileOwner owner)
public virtual void Impact(TileInfo targetTile, PlayerState currentPlayer)
{
}
@ -35,11 +35,3 @@ public class PlayerAction : ScriptableObject
Debug.Log("final action");
}
}
public enum ActionType
{
Attack,
Build,
Capture,
Null
}

View File

@ -0,0 +1,110 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
[CreateAssetMenu(fileName = "New SuperJump", menuName = "Actions/New SuperJump")]
public class SuperJump : PlayerAction
{
//public GameObject actionPref;
//public GameObject standartAttackGroundImpact;
private TileInfo _target;
private List<TileInfo> _capTiles = new List<TileInfo>();
public override bool IsActionAllowed(TileInfo targetTile, PlayerState playerState)
{
if (!targetTile)
return false;
bool permission = base.IsActionAllowed(targetTile, playerState);
permission = permission && targetTile.canBeAttacked;
_capTiles = GetActualCapTargets(GameData.playerLevel, targetTile, playerState);
foreach (var enemy in playerState.enemies)
{
if (_capTiles.Contains(enemy.currentTile))
{
return false;
}
}
return permission;
}
public override void FinishActionOperations(PlayerState currentPlayer)
{
base.FinishActionOperations(currentPlayer);
currentPlayer.currentTile = _target;
_target = null;
}
public override void Impact(TileInfo targetTile, PlayerState currentPlayer)
{
base.Impact(targetTile, currentPlayer);
var capController = currentPlayer.GetComponent<CaptureController>();
foreach (TileInfo tile in _capTiles)
{
if (tile.tileOwnerIndex != currentPlayer.ownerIndex)
{
capController.CaptureTile(tile);
}
}
}
public override void StartActionOperations(TileInfo targetTile, PlayerState currentPlayer)
{
base.StartActionOperations(targetTile, currentPlayer);
_target = targetTile;
currentPlayer.transform.DOMove(_target.tilePosition, duration);
currentPlayer.transform.LookAt(_target.tilePosition);
currentPlayer.targetMoveTile = _target;
currentPlayer.targetMoveTile.canMove = false;
currentPlayer.currentTile.canMove = true;
//moveVFX.Play();
}
private List<TileInfo> GetAllPossibleCapTargets(TileInfo targetTile, PlayerState playerState)
{
Vector3 playerDir = targetTile.tilePosition - playerState.currentTile.tilePosition;
Vector3 playerDirR = Quaternion.AngleAxis(-60, Vector3.up) * playerDir;
Vector3 playerDirL = Quaternion.AngleAxis(60, Vector3.up) * playerDir;
List<TileInfo> tiles = new List<TileInfo>();
tiles.Add(targetTile); //0
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + playerDir)); //1
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + 2*playerDir)); //2
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + 3*playerDir)); //3
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + 2*playerDir+ playerDirL)); //4
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + 2 * playerDir + playerDirR)); //5
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + playerDir + playerDirL)); //6
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + playerDir + playerDirR)); //7
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + 4 * playerDir)); //8
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + 3*playerDir + playerDirL)); //9
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + 3 * playerDir + playerDirR)); //10
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + 2 * playerDir + 2 * playerDirL)); //11
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + 2 * playerDir + 2 * playerDirR)); //12
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + playerDir + 2 * playerDirL)); //13
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + playerDir + 2 * playerDirR)); //14
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + 2 * playerDirL)); //15
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + 2 * playerDirR)); //16
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + playerDirL)); //17
tiles.Add(TileManagment.GetTile(tiles[0].tilePosition + playerDirR)); //18
return tiles;
}
private List<TileInfo> GetActualCapTargets(int playerLevel, TileInfo target, PlayerState player)
{
List<TileInfo> allTargets = GetAllPossibleCapTargets(target, player);
List<TileInfo> actualTargets = new List<TileInfo>();
for (int i = 0; i <= playerLevel; i++)
{
actualTargets.Add(allTargets[i]);
}
return actualTargets;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0169a7715dc4850439785448a35ff4a3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -18,9 +18,9 @@ public class Trap : PlayerAction
return permission;
}
public override void StartActionOperations(TileInfo targetTile)
public override void StartActionOperations(TileInfo targetTile, PlayerState currentPlayer)
{
base.StartActionOperations(targetTile);
base.StartActionOperations(targetTile, currentPlayer);
_target = targetTile;
}

View File

@ -19,11 +19,11 @@ public class TreeAttack : PlayerAction
return permission;
}
public override void Impact(TileInfo targetTile, TileInfo currentTile, TileOwner owner)
public override void Impact(TileInfo targetTile, PlayerState currentPlayer)
{
base.Impact(targetTile, currentTile, owner);
Vector3 direction = targetTile.tilePosition - currentTile.tilePosition;
var currentProjectile = Instantiate(attackPref, currentTile.tilePosition + attackPref.transform.position, attackPref.transform.rotation);
base.Impact(targetTile, currentPlayer);
Vector3 direction = targetTile.tilePosition - currentPlayer.currentTile.tilePosition;
var currentProjectile = Instantiate(attackPref, currentPlayer.currentTile.tilePosition + attackPref.transform.position, attackPref.transform.rotation);
currentProjectile.transform.LookAt(targetTile.tilePosition + attackPref.transform.position);
//InitAttack(currentTile.tilePosition, direction, owner);
TreeHealthController tree = targetTile.buildingOnTile.GetComponent<TreeHealthController>();

View File

@ -29,15 +29,18 @@ public class AnimationController : MonoBehaviour
case CharacterState.Move:
activationTrigger = "Move";
break;
case CharacterState.Attack:
activationTrigger = "Attack";
break;
case CharacterState.Build:
activationTrigger = "Build";
break;
case CharacterState.TreeAttack:
activationTrigger = "TreeAttack";
case CharacterState.Action:
activationTrigger = GetActionName(_playerState);
break;
/*case CharacterState.Attack:
activationTrigger = "Attack";
break;
case CharacterState.Build:
activationTrigger = "Build";
break;
case CharacterState.TreeAttack:
activationTrigger = "TreeAttack";
break;*/
}
if (activationTrigger != "")
@ -45,5 +48,26 @@ public class AnimationController : MonoBehaviour
_characterAnimator.SetTrigger(activationTrigger);
}
}
private string GetActionName(PlayerState player)
{
var charSubState = player.currentAction.actionType;
string result = "";
switch (charSubState)
{
case ActionType.Attack:
result = "Attack";
break;
case ActionType.Build:
result = "Build";
break;
case ActionType.TreeAttack:
result = "TreeAttack";
break;
case ActionType.SuperJump:
result = "SuperJump";
break;
}
return result;
}
}

View File

@ -28,7 +28,7 @@ public class AttackEnergyController : MonoBehaviour
private void OnPlayerAttack(CharacterState newState)
{
if (newState != CharacterState.Attack)
if (newState != CharacterState.Action || _playerState.currentAction.actionType!=ActionType.Attack)
{
return;
}

View File

@ -100,7 +100,7 @@ public class CaptureController : MonoBehaviour
}
}
private void CaptureTile(TileInfo tile)
public void CaptureTile(TileInfo tile)
{
TileManagment.ChangeTileOwner(tile, _playerState);
_playerState.SetNewState(CharacterState.Idle);

View File

@ -6,6 +6,7 @@ using System;
public class GameData : MonoBehaviour
{
public static int coins = 0;
public static int playerLevel = 5;
public static Action OnCoinsCollected;
public static void AddCoin(int amount)

View File

@ -11,7 +11,7 @@ public class PlayerState : MonoBehaviour
public TileOwner ownerIndex = TileOwner.Ariost;
public CharacterState prevState = CharacterState.Idle;
public CharacterState currentState = CharacterState.Idle;
//public CharacterSubState currentSubState = CharacterSubState.None;
//public ActionType currentSubState = ActionType.None;
public TileInfo currentTile;
public TileInfo targetMoveTile;
@ -21,7 +21,7 @@ public class PlayerState : MonoBehaviour
public Action OnInitializied;
public Action<CharacterState> OnCharStateChanged;
//public Action<CharacterSubState> OnSubStateChanged;
public Action<ActionType> OnSubStateChanged;
public Action OnActionChanged;
public Action OnDefaultAction;
public Action OnActionInterrupt;
@ -68,17 +68,21 @@ public class PlayerState : MonoBehaviour
if (currentState != newState)
{
prevState = currentState;
currentState = newState;
currentState = newState;
/*if (newState == CharacterState.Action)
{
currentSubState = currentAction.actionType;
}*/
OnCharStateChanged?.Invoke(newState);
}
}
/*public void SetNewSubState(CharacterSubState newSubState)
{
if (currentSubState != newSubState)
/*public void SetNewCharSubState(ActionType newActionType)
{
if (currentSubState != newActionType)
{
currentSubState = newSubState;
OnSubStateChanged?.Invoke(newSubState);
currentSubState = newActionType;
OnSubStateChanged?.Invoke(newActionType);
}
}*/
@ -142,14 +146,15 @@ public class PlayerState : MonoBehaviour
}
}
public enum CharacterState
public enum CharacterState
{
Idle,
Capture,
Move,
Attack,
Action,
/*Attack,
Build,
TreeAttack,
TreeAttack,*/
Dead
}
@ -159,8 +164,11 @@ public enum ControlType
AI
}
/*public enum CharacterSubState
public enum ActionType
{
Targeting,
None,
}*/
None,
Attack,
Build,
TreeAttack,
SuperJump
}

View File

@ -37,7 +37,7 @@ public class PlayerUIController : MonoBehaviour
_attackEnergy = GetComponent<AttackEnergyController>();
_targetingSystem.OnFoundTarget += UpdateAttackUI;
_targetingSystem.OnFoundTarget += UpdateActionUI;
_targetingSystem.OnLostTarget += StopUpdateAttackUI;
_playerState.OnCharStateChanged += StartUpdatingProgressUI;
@ -47,6 +47,16 @@ public class PlayerUIController : MonoBehaviour
_attackEnergy.OnAttackEnergyChanged += UpdateEnergyUI;
}
private void UpdateActionUI(TileInfo target, ActionType actionType)
{
Vector3 targetPos = target.tilePosition;
if (targetPos != null)
{
_attackUI.gameObject.SetActive(true);
_attackUI.LookAt(targetPos);
}
}
private void UpdateEnergyUI(float curEnergy, float maxEnergy)
{
attackEnergyUI.UpdateBar(curEnergy, maxEnergy);
@ -66,10 +76,10 @@ public class PlayerUIController : MonoBehaviour
string actionTypeText = "";
switch (newState)
{
case CharacterState.Attack:
/*case CharacterState.Attack:
actionTypeText = "Attack";
GetActionProgress += GetCurrentActionProgress;
break;
break;*/
case CharacterState.Capture:
actionTypeText = "Capturing...";
GetActionProgress += GetCaptureProgress;
@ -80,14 +90,18 @@ public class PlayerUIController : MonoBehaviour
case CharacterState.Idle:
StopUpdateProgressUI();
return;
case CharacterState.Build:
case CharacterState.Action:
actionTypeText = GetActionText(_playerState);
GetActionProgress += GetCurrentActionProgress;
break;
/*case CharacterState.Build:
actionTypeText = "Building...";
GetActionProgress += GetCurrentActionProgress;
break;
case CharacterState.TreeAttack:
actionTypeText = "Attack";
GetActionProgress += GetCurrentActionProgress;
break;
break;*/
default:
return;
@ -96,6 +110,28 @@ public class PlayerUIController : MonoBehaviour
StartCoroutine(_progressUICoroutine);
}
private string GetActionText(PlayerState player)
{
var charSubState = player.currentAction.actionType;
string result = "";
switch (charSubState)
{
case ActionType.Attack:
result = "Attack";
break;
case ActionType.Build:
result = "Build...";
break;
case ActionType.TreeAttack:
result = "TreeAttack";
break;
case ActionType.SuperJump:
result = "SuperJump";
break;
}
return result;
}
private void StopUpdateProgressUI()
{
_progressUI.StopUpdateUI();
@ -138,15 +174,6 @@ public class PlayerUIController : MonoBehaviour
{
_attackUI.gameObject.SetActive(false);
}
private void UpdateAttackUI(TileInfo target)
{
Vector3 targetPos = target.tilePosition;
if (targetPos != null)
{
_attackUI.gameObject.SetActive(true);
_attackUI.LookAt(targetPos);
}
}
}

File diff suppressed because one or more lines are too long