public void UpdateLinkedCompetence(CompetenceThrow throwComp, CompetenceRecall recallComp, CompetenceSpecial specialCompetence) { switch (myActionType) { case ActionType.Throw: linkedCompetence = throwComp; break; case ActionType.Recall: linkedCompetence = recallComp; break; case ActionType.Special: linkedCompetence = specialCompetence; break; } tooltipCollider.SetTooltipInformations(TooltipInformationFactory.GetUsableCompetenceTooltip(linkedCompetence, tooltipCollider.GetTooltipInformations.forcedTooltipLPosition, tooltipCollider.GetTooltipInformations.tooltipForcedPositionType)); costText.text = linkedCompetence.GetActionPointsCost.ToString(); if (linkedCompetence.GetCompetenceImage != null) { myIcon.sprite = linkedCompetence.GetCompetenceImage; } }
public void EquipCompetence(Competence competence) { CompetenceThrow newThrowComp = competence as CompetenceThrow; if (newThrowComp != null) { equipedThrowCompetence = newThrowComp; } else { CompetenceRecall newRecallComp = competence as CompetenceRecall; if (newRecallComp != null) { equipedRecallCompetence = newRecallComp; } else { CompetenceSpecial newSpecialComp = competence as CompetenceSpecial; if (newSpecialComp != null) { equipedSpecialCompetence = newSpecialComp; } } } OnEquipCompetence?.Invoke(competence); OnSetChanged?.Invoke(equipedThrowCompetence, equipedRecallCompetence, equipedSpecialCompetence); }
public void UpdateSet(CompetenceThrow throwComp, CompetenceRecall recallComp, CompetenceSpecial specialComp) { throwCompetence = throwComp; recallCompetence = recallComp; specialCompetence = specialComp; OnRecallCompetenceChanged?.Invoke(recallCompetence); }
public void UpdateTeleportationPreview(Vector3 position, bool canTeleport, CompetenceRecall currentRecallComp) { movementGhostPreview.GetRenderer.material = canTeleport ? baseGhostMaterial : cantMoveThereMaterial; movementGhostPreview.transform.position = position; Dictionary <DiscScript, DiscTrajectoryParameters> discsInNewPositionRangeParameters = DiscListingFactory.GetDiscInRangeTrajectory(position, currentRecallComp); UpdateRecallPreview(discsInNewPositionRangeParameters, position); }
public void UpdateMovementPreview(List <Vector3> trajectory, CompetenceRecall currentRecallComp, int completelyUsedActionPoints, bool reachMax) { Vector3 startPosition = trajectory[0]; Vector3 targetPosition = trajectory[trajectory.Count - 1]; movementLinePreview.UpdateLine(trajectory, currentMovementDistances, completelyUsedActionPoints, reachMax); movementGhostPreview.transform.position = targetPosition; if (!justStartedMovementPreview) { Dictionary <DiscScript, DiscTrajectoryParameters> discsInNewPositionRangeParameters = DiscListingFactory.GetDiscInRangeTrajectory(targetPosition, currentRecallComp); UpdateRecallPreview(discsInNewPositionRangeParameters, targetPosition); } else { justStartedMovementPreview = false; } }
public static Dictionary <DiscScript, DiscTrajectoryParameters> GetDiscInRangeTrajectory(Vector3 targetPosition, CompetenceRecall recallCompetence) { List <DiscScript> recallableFromPosition = DiscListingFactory.GetSortedRecallableDiscs(recallCompetence, DiscManager.Instance.GetAllThrowedDiscs, DiscManager.Instance.GetAllInRangeDiscsFromPosition(targetPosition)); Dictionary <DiscScript, DiscTrajectoryParameters> allTrajParams = new Dictionary <DiscScript, DiscTrajectoryParameters>(); foreach (DiscScript disc in recallableFromPosition) { DiscTrajectoryParameters newTrajParams = DiscTrajectoryFactory.GetTrajectory(recallCompetence, disc.transform.position, targetPosition, DiscManager.Instance.GetAllThrowedDiscs, DiscManager.Instance.GetInRangeDiscs, disc); allTrajParams.Add(disc, newTrajParams); } return(allTrajParams); }
public static List <DiscScript> GetSortedRecallableDiscs(CompetenceRecall competence, List <DiscScript> throwedDiscs, List <DiscScript> inRangeDiscs) { return(GetSortedInRangeDiscs(competence.GetNumberOfRecalledDiscs, competence.GetRecallingOrder, competence.GetCanRecallUnthrowedDiscs, throwedDiscs, inRangeDiscs)); }
public void UpdateCurrentRecallCompetence(CompetenceRecall competenceRecall) { currentRecallCompetence = competenceRecall; }
public void StartMovementPreview(List <float> distances, List <Vector3> trajectory, CompetenceRecall currentRecallComp, int completelyUsedActionPoints, bool reachMax) { hitByDiscTrajectories = new Dictionary <DiscScript, Dictionary <GameObject, EnemyBase> >(); movementGhostPreview.GetRenderer.material = baseGhostMaterial; Vector3 startPosition = trajectory[0]; Vector3 targetPosition = trajectory[trajectory.Count - 1]; #region Circles if (showMovementCircles) { int newNumber = distances.Count; if (newNumber > movementCirclePreviews.Count) { for (int i = movementCirclePreviews.Count; i < newNumber; i++) { MovementCirclePreview newMovementCirclePreview = Instantiate(movementCirclePreviewPrefab, movementPreviewsParent); newMovementCirclePreview.ShowPreview(); movementCirclePreviews.Add(newMovementCirclePreview); } } Vector3 circlePos = new Vector3(startPosition.x, 0.01f, startPosition.z); for (int i = 0; i < newNumber; i++) { movementCirclePreviews[i].ShowPreview(); movementCirclePreviews[i].ChangeRadius(distances[i]); movementCirclePreviews[i].transform.position = circlePos; } for (int i = newNumber; i < movementCirclePreviews.Count; i++) { movementCirclePreviews[i].HidePreview(); } } #endregion currentMovementDistances = distances; movementLinePreview.ShowPreview(); movementLinePreview.UpdateLine(trajectory, currentMovementDistances, completelyUsedActionPoints, reachMax); movementGhostPreview.ShowPreview(); movementGhostPreview.transform.position = trajectory[trajectory.Count - 1]; Dictionary <DiscScript, DiscTrajectoryParameters> discsInNewPositionRangeParameters = DiscListingFactory.GetDiscInRangeTrajectory(targetPosition, currentRecallComp); StartRecallPreview(discsInNewPositionRangeParameters, targetPosition); justStartedMovementPreview = true; UpdateMovementPreview(trajectory, currentRecallComp, completelyUsedActionPoints, reachMax); foreach (EnemyBase enemy in EnemiesManager.Instance.GetAllInGameEnemiesOrdered) { enemy.DisplayAndActualisePreviewAttack(movementGhostPreview.transform); } }
public void StartTeleportationPreview(Vector3 startPos, Vector3 targetPos, bool canTeleport, CompetenceRecall currentRecallComp) { hitByDiscTrajectories = new Dictionary <DiscScript, Dictionary <GameObject, EnemyBase> >(); movementGhostPreview.GetRenderer.material = canTeleport ? baseGhostMaterial : cantMoveThereMaterial; discEffectZonePreview.gameObject.SetActive(true); discEffectZonePreview.transform.localScale = Vector3.one * DiscManager.Instance.recallRange; discEffectZonePreview.transform.position = startPos + Vector3.up * 0.01f; movementGhostPreview.gameObject.SetActive(true); movementGhostPreview.transform.position = targetPos; Dictionary <DiscScript, DiscTrajectoryParameters> discsInNewPositionRangeParameters = DiscListingFactory.GetDiscInRangeTrajectory(targetPos, currentRecallComp); StartRecallPreview(discsInNewPositionRangeParameters, targetPos); foreach (EnemyBase enemy in EnemiesManager.Instance.GetAllInGameEnemiesOrdered) { enemy.DisplayAndActualisePreviewAttack(movementGhostPreview.transform); } }