void DrawAttackState(ProjectedGameState projectedState) { Sprite tileTargetedSprite = ScenarioImageManager.GetTileTargetedSprite(); for (int i = 0; i < projectedState.attackedPositions.Count; i++) { EntityData activeEntity = projectedState.activeEntity; Vector2Int attackedPosition = projectedState.attackedPositions[i]; GenerateAndPositionCellImage(attackedPosition, 0f, tileTargetedSprite, activeEntity.IdentifyingColor); AttackCardData cardData = projectedState.action.card as AttackCardData; Sprite pointerSprite = cardData.cardImage; float rotation = GetImageRotation(projectedState.action.direction); GameObject abilityPointer = ScenarioImageManager.GetAbilityPointer(pointerSprite, rotation, transform); abilityPointer.transform.position = GetPointerImagePosition(activeEntity.Position, projectedState.action.direction); if (!drawingSelectedEntity) { Color pointerColor = Color.white; pointerColor.a = deselectedEntityActionOpacity; abilityPointer.GetComponent <Image>().color = pointerColor; } } }
void DrawPath_Between(EntityData entity, Vector2Int positionLastState, Vector2Int positionThisState, Vector2Int positionNextState) { PathType pathType = GetPathType(positionLastState, positionThisState, positionNextState); Sprite pathSprite = ScenarioImageManager.GetPathSprite(pathType); Direction directionOfEntrance = BoardHelperFunctions.GetDirectionFromPosition(positionThisState, positionLastState); GenerateAndPositionCellImage(positionThisState, GetImageRotation(directionOfEntrance), pathSprite, entity.IdentifyingColor); }
void DrawPath_Ending(EntityData entity, Vector2Int positionLastState, Vector2Int positionThisState) { if (positionThisState == positionLastState) { return; } Sprite pathSprite = ScenarioImageManager.GetPathSprite(PathType.Terminating); Direction directionOfEntrance = BoardHelperFunctions.GetDirectionFromPosition(positionThisState, positionLastState); GenerateAndPositionCellImage(positionThisState, GetImageRotation(directionOfEntrance), pathSprite, entity.IdentifyingColor); }
void GenerateAndPositionCellImage(Vector2Int position, float rotation, Sprite sprite, Color color) { GameObject instantiatedPathImage = ScenarioImageManager.GetOverlayImage(sprite, transform); instantiatedPathImage.transform.position = boardController.GetCellPosition(position); instantiatedPathImage.GetComponent <RectTransform>().rotation = Quaternion.Euler(new Vector3(0f, 0f, rotation)); if (!drawingSelectedEntity) { color = new Color(color.r, color.g, color.b, deselectedEntityActionOpacity); } instantiatedPathImage.GetComponent <Image>().color = color; }
public void UpdateDepictedTurn(Turn turn) { depictedTurn = turn; Sprite subjectSprite = turn.Entity.entitySprite; subjectIcon.sprite = subjectSprite; Sprite directionSprite = turn.moves.Count > 0 ? ScenarioImageManager.GetMovementSprite(turn.moves[0]) : ScenarioImageManager.GetEmptyActionSprite(); firstActionIcon.sprite = directionSprite; Sprite actionSprite = turn.action.card != null?ScenarioImageManager.GetActionSprite(turn.action.card.category, turn.action.direction) : ScenarioImageManager.GetEmptyActionSprite(); secondActionIcon.sprite = actionSprite; }
void DrawBump(EntityData bumpingEntity, ProjectedGameState projectedState, ProjectedGameState nextState, Bump bump) { Vector2Int positionTwoStatesAgo = projectedState .scenarioState .lastGameState .lastGameState .GetEntityWhere(e => e.ID == bumpingEntity.ID) .Position; Vector2Int positionThisState = bumpingEntity.Position; Vector2Int positionLastState = projectedState .scenarioState .lastGameState .GetEntityWhere(e => e.ID == bumpingEntity.ID) .Position; bool isEntitysFirstMove = positionLastState == positionTwoStatesAgo; bool bumpSucceeds = bumpingEntity.Position != positionLastState; if (bumpSucceeds) { DrawPath_Ending(bumpingEntity, positionLastState, positionThisState); DrawSuccessfulBumpEffect(positionThisState, BoardHelperFunctions.GetDirectionFromPosition(positionThisState, positionLastState)); DrawPath_Beginning(bump.bumpedEntity, positionThisState, bump.bumpedEntity.Position); } else if (isEntitysFirstMove) { Vector2Int bumpedEntityPosition = bump.bumpedEntity.Position; Sprite pathSprite = ScenarioImageManager.GetPathSprite(PathType.Beginning); Direction directionOfEntrance = BoardHelperFunctions.GetDirectionFromPosition(bumpedEntityPosition, positionThisState); GenerateAndPositionCellImage(positionThisState, GetImageRotation(directionOfEntrance), pathSprite, bumpingEntity.IdentifyingColor); DrawFailedBumpEffect(positionThisState, BoardHelperFunctions.GetDirectionFromPosition(positionThisState, bumpedEntityPosition)); } else { PathType pathType = GetFailedBumpPathType(positionTwoStatesAgo, positionThisState, bump.bumpedEntity.Position); Sprite pathSprite = ScenarioImageManager.GetPathSprite(pathType); Vector2Int bumpedEntityPosition = bump.bumpedEntity.Position; Direction directionOfEntrance = BoardHelperFunctions.GetDirectionFromPosition(positionThisState, positionTwoStatesAgo); GenerateAndPositionCellImage(positionThisState, GetImageRotation(directionOfEntrance), pathSprite, bumpingEntity.IdentifyingColor); DrawFailedBumpEffect(positionThisState, BoardHelperFunctions.GetDirectionFromPosition(positionThisState, bumpedEntityPosition)); } }
void DrawStagnation(ScenarioState state) { Clear(); List <Vector2Int> stagnatedPositions = state.stagnatedPositions; for (int i = 0; i < stagnatedPositions.Count; i++) { GameObject instantiatedStagnationTile = ScenarioImageManager.GetStagnationTile(transform); instantiatedStagnationTile.transform.position = boardController.GetCellPosition(stagnatedPositions[i]); } List <Vector2Int> threateningPositions = state.threatenedStagnationPositions; for (int i = 0; i < threateningPositions.Count; i++) { GameObject instantiatedThreatenedImage = ScenarioImageManager.GetOverlayImage(threateningStagnationSprite, transform); instantiatedThreatenedImage.transform.position = boardController.GetCellPosition(threateningPositions[i]); } }
IEnumerator BlinkPositionAttackedIndicator(Vector2Int position) { Vector2 canvasPosition = boardController.GetCellPosition(position); GameObject overlayIndicator = ScenarioImageManager.GetOverlayImage(attackedTileSprite, transform); overlayIndicator.transform.position = canvasPosition; Image overlayImage = overlayIndicator.GetComponent <Image>(); overlayImage.color = clear; float blinkInTime = positionAttackedBlinkTimer / 2f; float blinkOutTime = blinkInTime; float timeElapsed = 0f; while (timeElapsed < blinkInTime) { float percentageComplete = timeElapsed / blinkInTime; overlayImage.color = Color.Lerp(clear, opaque, percentageComplete); timeElapsed += Time.deltaTime; yield return(null); } timeElapsed = 0.0f; while (timeElapsed < blinkOutTime) { float percentageComplete = timeElapsed / blinkInTime; overlayImage.color = Color.Lerp(opaque, clear, percentageComplete); timeElapsed += Time.deltaTime; yield return(null); } Destroy(overlayImage); }
private void Awake() { instance = this; }
void DrawFailedBumpEffect(Vector2Int position, Direction entranceDirectionOfBumper) { Sprite bumpEffectSprite = ScenarioImageManager.GetPathSprite(PathType.Bumped); GenerateAndPositionCellEdgeImage(position, entranceDirectionOfBumper, bumpEffectSprite, Color.white); }
void DrawSuccessfulBumpEffect(Vector2Int position, Direction entranceDirectionOfBumper) { Sprite bumpEffectSprite = ScenarioImageManager.GetPathSprite(PathType.Bumped); GenerateAndPositionCellImage(position, GetImageRotation(entranceDirectionOfBumper), bumpEffectSprite, Color.white); }