void GenerateSquardron(SquadronTable table) { Debug.Log("GenerateSquardron : " + ScheduleIndex); for (int i = 0; i < table.GetCount(); i++) { SquadronMemberStruct squadronMember = table.GetSquadronMember(i); SystemManager.Instance.GetCurrentSceneMain <InGameSceneMain>().EnemyManager.GenerateEnemy(squadronMember); } }
public void GenerateBoss() { SquadronMemberStruct data = new SquadronMemberStruct(); data.EnemyID = BossEnemyID; data.GeneratePointX = BossGeneratePos.x; data.GeneratePointY = BossGeneratePos.y; data.AppearPointX = BossAppearPos.x; data.AppearPointY = BossAppearPos.y; data.DisappearPointX = -15.0f; data.DisappearPointY = 0.0f; EnemyManager.GenerateEnemy(data); }
public void Reset(SquadronMemberStruct data) { if (isServer) { RpcReset(data); } else { CmdReset(data); if (isLocalPlayer) { ResetData(data); } } }
public bool GenerateEnemy(SquadronMemberStruct data) { if (!((FWNetworkManager)FWNetworkManager.singleton).isServer) { return(true); } string FilePath = SystemManager.Instance.EnemyTable.GetEnemy(data.EnemyID).FilePath; GameObject go = SystemManager.Instance.GetCurrentSceneMain <InGameSceneMain>().EnemyCacheSystem.Archive(FilePath, new Vector3(data.GeneratePointX, data.GeneratePointY, 0)); Enemy enemy = go.GetComponent <Enemy>(); enemy.Reset(data); enemy.AddList(); return(true); }
public void Reset(SquadronMemberStruct data) { // 정상적으로 NetworkBehaviour 인스턴스의 Update로 호출되어 실행되고 있을때 //CmdReset(data); // MonoBehaviour 인스턴스의 Update로 호출되어 실행되고 있을때의 꼼수 if (isServer) { RpcReset(data); // Host 플레이어인경우 RPC로 보내고 } else { CmdReset(data); // Client 플레이어인경우 Cmd로 호스트로 보낸후 자신을 Self 동작 if (isLocalPlayer) { ResetData(data); } } }
void ResetData(SquadronMemberStruct data) { EnemyStruct enemyStruct = SystemManager.Instance.EnemyTable.GetEnemy(data.EnemyID); CurrentHP = MaxHP = enemyStruct.MaxHP; Damage = enemyStruct.Damage; crashDamage = enemyStruct.CrashDamage; BulletSpeed = enemyStruct.BulletSpeed; FireRemainCount = enemyStruct.FireRemainCount; GamePoint = enemyStruct.GamePoint; AppearPoint = new Vector3(data.AppearPointX, data.AppearPointY, 0); DisappearPoint = new Vector3(data.DisappearPointX, data.DisappearPointY, 0); CurrentState = State.Ready; LastActionUpdateTime = Time.time; isDead = false; //죽은 녀석이 다시 캐시로 들어가는 경우가 있기 때문에 최초 reset마다 초기화 }
void ResetData(SquadronMemberStruct data) { EnemyStruct enemyStruct = SystemManager.Instance.EnemyTable.GetEnemy(data.EnemyID); CurrentHP = MaxHP = enemyStruct.MaxHP; // CurrentHP까지 다시 입력 Damage = enemyStruct.Damage; // 총알 데미지 crashDamage = enemyStruct.CrashDamage; // 충돌 데미지 BulletSpeed = enemyStruct.BulletSpeed; // 총알 속도 FireRemainCount = enemyStruct.FireRemainCount; // 발사할 총알 갯수 GamePoint = enemyStruct.GamePoint; // 파괴시 얻을 점수 AppearPoint = new Vector3(data.AppearPointX, data.AppearPointY, 0); // 입장시 도착 위치 DisappearPoint = new Vector3(data.DisappearPointX, data.DisappearPointY, 0); // 퇴장시 목표 위치 ItemDropRate = enemyStruct.ItemDropRate; // 아이템 생성 확률 ItemDropID = enemyStruct.ItemDropID; // 아이템 Drop 테이블 참조 인덱스 CurrentState = State.Ready; LastActionUpdateTime = Time.time; // isDead = false; // Enemy는 재사용되므로 초기화시켜줘야 함 }
public bool GenerateEnemy(SquadronMemberStruct data) { // 서버(호스트)가 아니라면 프리팹을 Generate하지 않고 모두 전송받아야한다. if (!((FWNetwortkManager)FWNetwortkManager.singleton).isServer) { return(true); } /* * enemyFactory 스크립트에서 Load메소르를 통하여 적 오브젝트를 go에 받음 * GameObject go = enemyFactory.Load(EnemyFactory.EnemyPath); */ //-> 윗 코드가 아래로 대체됨 // 해당 경로로 캐쉬 꺼내기 string filePath = SystemManager.Instance.EnemyTable.GetEnemy(data.EnemyID).FilePath; GameObject go = SystemManager.Instance.GetCurrentSceneMain <InGameSceneMain>().EnemyCacheSystem.Archive(filePath); if (!go) //생성 실패 { Debug.LogError("GenerateEnemy error!"); return(false); } //매개변수로 받은 position으로 go 위치 초기화 go.transform.position = new Vector3(data.GeneratePointX, data.GeneratePointY, 0); //go 게임 오브젝트는 Enemy 프리팹이므로 Enemy 스크립트를 불러와서 객체로 저장 Enemy enemy = go.GetComponent <Enemy>(); //enemy.FilePath = filePath; // enemy 내부의 파일 경로 지정 -> PrefabCacheSystem스크립트로 옮김 enemy.SetPosition(new Vector3(data.GeneratePointX, data.GeneratePointY, 0)); enemy.Reset(data); enemies.Add(enemy); return(true); }
public bool GenerateEnemy(SquadronMemberStruct data) { if (!NetworkManager.Singleton.IsServer) { return(false); } string filePath = SystemManager.Instance.EnemyTable.GetEnemy(data.EnemyId).FilePath; GameObject go = SystemManager .Instance .GetCurrentSceneMain <InGameSceneMain>() .EnemyCacheSystem .Archive(filePath); Enemy enemy = go.GetComponent <Enemy>(); Vector3 position = new Vector3(data.GeneratePointX, data.GeneratePointY, 0); enemy.SetPosition(position); enemy.ResetData(data); enemies.Add(enemy); return(true); }
public void RpcReset(SquadronMemberStruct data) { ResetData(data); base.SetDirtyBit(1); }