일단 PlayerTurn = true랑 TurnOver = true 두 개 선언함

PlayerTurn은 시나리오 같은 데선 false로 시작하게 눈치껏 만들어놓고.... 암튼


PlayerTurn은 A팀과 B팀 사이를 오가는 데 사용하고

TurnOver는 PlayerTurn을 바꾸느냐 마느냐에 작용함


먼저 전에 쓰던 deploy를 고침

이미 18개가 배치된 상태에서 oDeploy의 정보를 각각의 오브젝트에 옮기는 방식이었는데...

대신에 oDeploy에 저장된 A1~A9, B1~B9까지의 정보를 차례대로 나눠주면서 oUnitA와 oUnitB 오브젝트를 9개씩 만듦 (혹은 그보다 적을 수 있음)

여기서 오브젝트를 만들 때 리스트에 저장하는 거임 oUnitA[0]부터 oUnitA[8]까지.... B도 마찬가지

당연하지만 1번의 정보는 [0], 2번의 정보는 [1]... 이렇게 들어가니까 공격 순서도 똑같이 배분됨


이제 여기서 oRoundManager는 턴의 판별을 위해 리스트 RoundOrder를 만들음

먼저 필드의 oUnitMaster 오브젝트 숫자를 기준으로 삼고(이는 oUnitA와 oUnitB의 부모임 즉 둘 다 셈) for문을 만들음


var a = -1;

var b = -1;

for(i=0; i<instance_number(oUnitMaster); i++;)

{

if(global.PlayerTurn = true)

{

if(a < ds_list_size(oUnitA)-1)

{

a++;

TypeCheck(oUnitA[a]);

ds_list_add(RoundOrder, oUnitA[a]);

if(global.TurnOver = true) global.PlayerTurn = false;

else break;

}

else global.PlayerTurn = false

}

else { ...}

}


a는 -1부터 시작하되 처음에 a가 1 증가해서 0부터 시작하는 거임

a값은 a팀과 b팀 사이에서 리스트에 차출된 사원 숫자를 공유하지 않도록 함

서포터만 9개 넣은 경우 리스트 사이즈보다 큰 숫자[9]를 호출해서 오류가 나는 경우도 막음


TypeCheck()함수는 대상에 접근해서 대상의 UnitType를 기반으로 global.TurnOver를 반환하는 간단한 기능임

지원가는 false고 나머지는 true를 반환함

그래서 마지막에 global.TurnOver가 true면 PlayerTurn이 넘어가고 아니면 유지되면서 oUnitA[0] 다음으로 oUnitA[1]이 RoundOrder에 등록되는 것임

턴이 넘어갔으면 oUnitA[0] 다음에 oUnitB[0]가 오겠고...


else에는 B쪽이 등록하는 내용임 여기는 턴을 넘길때 내용만 반대고 나머진 똑같음


그리고 행동으로 넘어가서 이 RoundOrder의 순서대로 행동을 실행하고....

턴 종료 판정이 나오면 oRoundManager의 user event 1을 불러옴

여기서 기존의 RoundOrder리스트를 파괴하고 user event 0을 불러옴

그리고 위의 내용은 user event 0에 집어넣는 것으로 두 번째 불러올 때는 리스트를 파괴하고 새로 만드는 방식을 반복하는 거임

또 승패 판정때도 이 RoundOrder 리스트를 파괴함...


문제가 있을수도 있는데 아무튼 oDeploy를 교체하고 나서 시험해볼 것임...