omTargetTestObject = new Listusing UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using omFrame;
using omFrame.Static;
using omFrame.Table;
using Autohand;
using FTS;
using FTS.Device;
using FTS.Component;
using omFrame.Utility;
using omFrame.Network;
using omFrame.Network.TCP.Packet;
using Newtonsoft.Json;
public class TailHook : MonoBehaviour
{
public TailHookManager curTailHookBase; // 현재
TailHookManager nextTailHookBase; // 다음
TailHook_NetManager netManager;
// 리스트 형식으로 시나리오 나열
public List<TailHookManager> m_actors = new List<TailHookManager>();
[Tooltip("미션 설명을 보여주기 위한 텍스트")]
public Text m_missionText;
[Header("확인용 리스트")]
public omTarget omtarget;
public bool omTargetBool = false;
public List<GameObject> omTargetTestObject = new List<GameObject>();
public List<omTarget> omTargetTestPlayer = new List<omTarget>();
[HideInInspector]
public int myID;
public TraineeType mytype = TraineeType.None;
omPlayerOwner m_omPlayerOwner;
void Awake()
{
m_actors.AddRange(GetComponentsInChildren<TailHookManager>(true));
//ActorList에 Actor가 있으면 처음 시나리오 넣기
if (m_actors.Count > 0)
{
foreach (var actor in m_actors)
{
actor.Init(NextActor);
actor.SetPilotRescue(this);
}
curTailHookBase = m_actors[0];
curTailHookBase.OpenScenario();
}
netManager = GetComponent<TailHook_NetManager>();
}
private void Start()
{
omtarget = FindObjectOfType<omTarget>();
myID = omFrameWork.Inst.Cache.CacheNet.GetMyID();
}
void Update()
{
//다음 시나리오로 넘기기 C
if (Input.GetKeyDown(KeyCode.C))
{
Debug.Log("다음 시나리오");
NextActor();
}
equipTeleport();
}
void OnExit()
{
Debug.Log("Program OnExit !");
}
//다음 시나리오로 넘어감
public void NextActor()
{
//다음 시나리오가 있을경우
if (m_actors.Count >= 2)
{
nextTailHookBase = m_actors[1];
CloseCurrActor();
OpenNextActor();
}
else if (m_actors.Count == 1)
{
OpenNextActor();
}
}
//다음 시나리오를 열어줌
public void OpenNextActor()
{
if (nextTailHookBase != null)
{
curTailHookBase = nextTailHookBase;
nextTailHookBase = null;
curTailHookBase.OpenScenario();
}
else
{
//다음 퀘스트가 없을경우 현재 Actor를 닫고 시스템을 종료
CloseCurrActor();
OnExit();
}
}
//현재 열려있는 Actor 닫기
public void CloseCurrActor()
{
if (curTailHookBase != null)
{
m_actors.Remove(curTailHookBase);
curTailHookBase.CloseScenario();
}
}
// 확인 값 받는 함수
void findTarget()
{
if (omtarget.stare == true)
{
// 나중에 태그 수정
foreach (GameObject player in GameObject.FindGameObjectsWithTag("Player"))
{
Debug.Log("확인 완료");
omTargetBool = true;
omTargetTestObject.Add(player);
}
}
else
{
// 나중에 태그 수정
foreach (GameObject player in GameObject.FindGameObjectsWithTag("Player"))
{
Debug.Log("제거");
omTargetBool = false;
omTargetTestObject.Remove(player);
}
}
}
IEnumerator findTargetDelay(float delay)
{
while (true)
{
yield return new WaitForSeconds(delay);
findTarget();
}
}
public void SetNetManager()
{
TailHookQuest[] qusets = curTailHookBase.m_questList.ToArray();
List<TailHook_NetQuest> netList = new List<TailHook_NetQuest>();
foreach (var quset in qusets)
{
netList.Add(quset.GetComponent<TailHook_NetQuest>());
}
netManager.SetNetQuest(netList.ToArray(), mytype);
}
// 텔레포트 장치 착용
void equipTeleport()
{
// GameObject.FindObjectOfType<omPlayerOwner>().m_CurrentPawn.TeleportEquipment(eEquipType.ET_RightHand, 1113, true);
m_omPlayerOwner = GameObject.FindObjectOfType<omPlayerOwner>();
m_omPlayerOwner.AddNetTeleportTraker();
// 텔레포트 장치가 돌아가는 값 보정
GameObject teleport = GameObject.Find("TeleportDevice_Hand(Clone)");
if (teleport != null)
{
teleport.transform.localPosition = new Vector3(0.011f, -0.028f, 0.004f);
teleport.transform.localRotation = Quaternion.Euler(0.044f, 108.69f, -9.446f);
}
}
#region 서버 받는 패킷 관련 Func
//--------------------------------------------------------------------------------
// 받는 패킷처리
//--------------------------------------------------------------------------------
public void SendAllText()
{
JsTailEventUpdate jsRes = omFrameWork.Inst.Cache.CacheNet.GetCache<JsTailEventUpdate>(ePACKET_ID.PID_TAILHOOK_EVENT_UPDATE);
if (jsRes == null)
return;
if ((TextScript)jsRes.qid == TextScript.Text9)
{
curTailHookBase.SetStop(false);
Debug.Log("*********" + jsRes.qid);
}
}
public void StopQuestRes()
{
JsTailStopUpdate jsRes = omFrameWork.Inst.Cache.CacheNet.GetCache<JsTailStopUpdate>(ePACKET_ID.PID_TAILHOOK_STOP_UPDATE);
if (jsRes == null)
return;
////넷이벤트한테 던짐
//if (curTailHookBase.m_curEvent == null)
// return;
}
#endregion
#region 서버 보내는 패킷 관련 Func
//--------------------------------------------------------------------------------
// 보내는 패킷처리
//--------------------------------------------------------------------------------
public void WatchPlayer(int qid)
{
omLayerUnit unit = omFrameWork.Inst.Layer.GetLastLayer();
unit?.SendTCPPacket(ePACKET_ID.PID_TAILHOOK_EVENT_UPDATE, new JsTailEventUpdate(myID, (int)mytype, qid));
}
public void StopQuestReq(int qid)
{
omLayerUnit unit = omFrameWork.Inst.Layer.GetLastLayer();
unit?.SendTCPPacket(ePACKET_ID.PID_TAILHOOK_STOP_UPDATE, new JsTailStopUpdate(myID, (int)mytype, qid));
}
public void FinishQuestReq(int qid)
{
omTCP.Query(ePACKET_ID.PID_TAILHOOK_FINISH_UPDATE, new JsTailFinishUpdate(myID, (int)mytype, qid));
}
#endregion
}