void Start() { stateOfTable = 0; preState = T_STATE.CLEAR; doWork = false; targetPlayer = null; accessGround = null; guestGroup = new List <GameObject>(); orderMenus = new List <int>(); string strToID = transform.parent.gameObject.name; strToID = strToID.Split(' ')[1]; strToID = strToID.Replace("(", ""); // ( 제거 strToID = strToID.Replace(")", ""); // ) 제거 tableID = System.Convert.ToInt32(strToID) + 1; dirtyColor = new Color(0.4f, 0.4f, 0.4f); }
void StateChanged() //상태 변화 처리 { preState = stateOfTable; switch (stateOfTable) { case T_STATE.CLEAR: GetComponent <SpriteRenderer>().color = Color.white; break; case T_STATE.USING: break; case T_STATE.WAITING: break; case T_STATE.DIRTY: GetComponent <SpriteRenderer>().color = dirtyColor; break; case T_STATE.RESERVED: break; } }
void ProcessingEvent() //플레이어(클릭)에 대한 이벤트 처리 { if (targetPlayer.GetComponent <MyCharacterMove>().GetTargetGround() != accessGround) { //대상 플레이어의 목적지가 바뀌면 doWork = false; timer = 0.0f; targetPlayer = null; return; } if (targetPlayer.transform.position == accessGround.transform.position) { //플레이어가 도착하면 switch (stateOfTable) { //더러운 상태일 때 처리 case T_STATE.DIRTY: { //플레이어가 서빙중이라면 예외처리 if (targetPlayer.GetComponentInChildren <PlayerCharacterAnimation>().isServing) { doWork = false; timer = 0.0f; targetPlayer = null; return; } targetPlayer.GetComponentInChildren <PlayerCharacterAnimation>().isScrubbing = true; timer += Time.deltaTime; if (timer >= timeToScrub) { doWork = false; stateOfTable = T_STATE.CLEAR; targetPlayer.GetComponentInChildren <PlayerCharacterAnimation>().isScrubbing = false; targetPlayer = null; timer = 0.0f; } break; } //사용중 상태일 때 처리 case T_STATE.USING: { //플레이어가 서빙중이라면 예외처리 if (targetPlayer.GetComponentInChildren <PlayerCharacterAnimation>().isServing) { doWork = false; timer = 0.0f; targetPlayer = null; return; } if (isGuestOrder && orderMenus.Count > 0) { //주문할 메뉴가 정해져 있다면 timer += Time.deltaTime; targetPlayer.GetComponentInChildren <PlayerCharacterAnimation>().isTakeOrder = true; if (timer >= timeToOrder) { targetPlayer.GetComponentInChildren <PlayerCharacterAnimation>().isTakeOrder = false; for (int i = 0; i < guestGroup.Count; i++) { //그룹에 속한 손님들의 상태를 WAIT로 전환 guestGroup[i].GetComponent <GuestAction>().SetCurrentState(G_STATE.WAIT); } targetPlayer.GetComponent <PlayerConfig>().TakeOrderToPlayer(gameObject, orderMenus); //테이블 상태를 WAITING으로 변경하고 변수들 초기화 stateOfTable = T_STATE.WAITING; doWork = false; isGuestOrder = false; targetPlayer = null; } } break; } //대기중 상태일 때 처리 case T_STATE.WAITING: { PlayerCharacterAnimation playerState = targetPlayer.GetComponentInChildren <PlayerCharacterAnimation>(); PlayerConfig playerConfig = targetPlayer.GetComponent <PlayerConfig>(); //플레이어가 서빙 상태이고 주문을 시킨 테이블이 이 테이블 일 때 if (playerState.isServing && playerConfig.servingOrder.table == gameObject) { playerState.isServing = false; playerConfig.servingOrder = null; //그룹에 속한 손님들의 상태를 EAT로 전환 for (int i = 0; i < guestGroup.Count; i++) { guestGroup[i].GetComponent <GuestAction>().SetCurrentState(G_STATE.EAT); } } break; } } } //플레이어의 처리 완료 }