Initial Commit

This commit is contained in:
2026-03-16 14:38:46 +02:00
commit b8f7327a21
2327 changed files with 253610 additions and 0 deletions
+110
View File
@@ -0,0 +1,110 @@
using FlappyBird.Core;
using UnityEngine;
using Zenject;
namespace FlappyBird.Pipes
{
public class PipeView : MonoBehaviour, global::FlappyBird.Core.IPoolable
{
private const string UpperPipeName = "Pipe_Upper";
private const string LowerPipeName = "Pipe_Lower";
private const string ScoreTriggerName = "ScoreTrigger";
private Transform _cachedTransform;
private Transform _upperPipe;
private Transform _lowerPipe;
private Transform _scoreTrigger;
private SpriteRenderer _upperRenderer;
private SpriteRenderer _lowerRenderer;
private BoxCollider2D _scoreTriggerCollider;
private PipeScoreTrigger _pipeScoreTrigger;
private FlappyBird.Core.IScoreManager _scoreManager;
public float XPosition => _cachedTransform.position.x;
[Inject]
public void Construct(FlappyBird.Core.IScoreManager scoreManager)
{
_scoreManager = scoreManager;
}
private void Awake()
{
_cachedTransform = transform;
_upperPipe = _cachedTransform.Find(UpperPipeName);
_lowerPipe = _cachedTransform.Find(LowerPipeName);
_scoreTrigger = _cachedTransform.Find(ScoreTriggerName);
if (_upperPipe != null)
{
_upperRenderer = _upperPipe.GetComponent<SpriteRenderer>();
}
if (_lowerPipe != null)
{
_lowerRenderer = _lowerPipe.GetComponent<SpriteRenderer>();
}
if (_scoreTrigger != null)
{
_scoreTriggerCollider = _scoreTrigger.GetComponent<BoxCollider2D>();
_pipeScoreTrigger = _scoreTrigger.GetComponent<PipeScoreTrigger>();
if (_pipeScoreTrigger == null)
{
_pipeScoreTrigger = _scoreTrigger.gameObject.AddComponent<PipeScoreTrigger>();
}
_pipeScoreTrigger.Initialize(_scoreManager);
}
}
public void SetWorldPosition(Vector3 position)
{
_cachedTransform.position = position;
}
public void MoveLeft(float distance)
{
_cachedTransform.position += Vector3.left * distance;
}
public void ConfigureGap(float gapCenterY, float gapSize, float scoreTriggerWidth)
{
if (_upperPipe == null || _lowerPipe == null || _upperRenderer == null || _lowerRenderer == null)
{
return;
}
float upperHalfHeight = _upperRenderer.size.y * 0.5f;
float lowerHalfHeight = _lowerRenderer.size.y * 0.5f;
float gapHalf = gapSize * 0.5f;
_upperPipe.localPosition = new Vector3(0f, gapCenterY + gapHalf + upperHalfHeight, 0f);
_lowerPipe.localPosition = new Vector3(0f, gapCenterY - gapHalf - lowerHalfHeight, 0f);
if (_scoreTrigger != null)
{
_scoreTrigger.localPosition = new Vector3(0f, gapCenterY, 0f);
}
if (_scoreTriggerCollider != null)
{
_scoreTriggerCollider.size = new Vector2(scoreTriggerWidth, gapSize);
_scoreTriggerCollider.offset = Vector2.zero;
}
}
public void OnSpawned()
{
if (_pipeScoreTrigger != null)
{
_pipeScoreTrigger.ResetTrigger();
}
}
public void OnDespawned()
{
}
}
}