sea-battle/Assets/Scripts/Pirate/FortInitializer.cs
2026-01-09 08:45:22 +03:00

62 lines
1.7 KiB
C#

using System.Collections.Generic;
using UnityEngine;
public class FortInitializer : MonoBehaviour
{
[SerializeField] private GameObject[] forts;
[SerializeField] private List<ParticleSystem> effects; // ÷àñòèöû íà ñöåíå
public GameObject fort;
public CannonBattery EnemyBattery;
public EnemyCommand EnemyCommand;
public GameManager gameManager;
public PirateCommand pirateCommand;
[SerializeField] private Ñaptain cap;
private void Start()
{
SpawnFort(0);
}
public void FortSwitch(int index)
{
SpawnFort(index);
}
private void SpawnFort(int index)
{
if (fort != null)
{
Destroy(fort);
}
// Ñîçäà¸ì ôîðò êàê äî÷åðíèé îáúåêò òåêóùåãî îáúåêòà (èëè ìîæåøü ïåðåäàòü ëþáîé äðóãîé transform)
fort = Instantiate(forts[index], transform);
// Òåïåðü îí â ëîêàëüíûõ êîîðäèíàòàõ, ïîýòîìó íóæíî çàäàòü ëîêàëüíóþ ïîçèöèþ
fort.transform.localPosition = forts[index].GetComponent<Fort>().Poz;
fort.transform.localRotation = Quaternion.identity;
fort.transform.localScale = Vector3.one;
Fort fortScript = fort.GetComponent<Fort>();
EnemyBattery = fortScript.EnemyBattery;
EnemyCommand = fortScript.EnemyCommand;
gameManager.enemyBattery = EnemyBattery;
EnemyCommand.pirateTeam = pirateCommand;
pirateCommand.enemyTeam = EnemyCommand;
pirateCommand.ResetAllPiratesToHome();
if (cap != null) cap.enemyTeam = EnemyCommand;
gameManager.battery.ResetAllCannons();
// Çàïóñêàåì ýôôåêò äëÿ òåêóùåãî èíäåêñà
if (index < effects.Count && effects[index] != null)
{
effects[index].Play();
}
}
}