Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
 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);
    }
Ejemplo n.º 5
0
    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);
            }
        }
    }
Ejemplo n.º 6
0
    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마다 초기화
    }
Ejemplo n.º 7
0
    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);
    }
Ejemplo n.º 9
0
    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);
    }
Ejemplo n.º 10
0
 public void RpcReset(SquadronMemberStruct data)
 {
     ResetData(data);
     base.SetDirtyBit(1);
 }