private bool IsValidChangeBattlePos()
    {
        BATTLE_POS_GRID info = BASE_BATTLE_POS_Manager.GetInstance().GetInfo(0);

        if (info == null)
        {
            return(false);
        }
        BATTLE_POS_GRID bATTLE_POS_GRID = new BATTLE_POS_GRID();

        bATTLE_POS_GRID.Set(info, 0, false);
        for (int i = 0; i < 6; i++)
        {
            NkSoldierInfo nkSoldierInfo = this.m_kBattlePosSolList[i];
            if (nkSoldierInfo != null && nkSoldierInfo.IsValid())
            {
                if (nkSoldierInfo.GetBattlePos() >= 0)
                {
                    NrCharKindInfo charKindInfo = NrTSingleton <NrCharKindInfoManager> .Instance.GetCharKindInfo(nkSoldierInfo.GetCharKind());

                    if (charKindInfo != null)
                    {
                        if (!BASE_BATTLE_POS_Manager.GetInstance().IsEnablePos(charKindInfo, nkSoldierInfo.GetBattlePos(), bATTLE_POS_GRID))
                        {
                            return(false);
                        }
                        bATTLE_POS_GRID.SetBUID((short)nkSoldierInfo.GetSolPosIndex(), (byte)nkSoldierInfo.GetBattlePos(), charKindInfo.GetBattleSizeX(), charKindInfo.GetBattleSizeY());
                    }
                }
            }
        }
        return(true);
    }
Beispiel #2
0
    public void Add(BATTLE_POS kData)
    {
        BATTLE_POS_GRID bATTLE_POS_GRID = this.GetInfo(kData.GRID_ID);

        if (bATTLE_POS_GRID == null)
        {
            bATTLE_POS_GRID = new BATTLE_POS_GRID();
            bATTLE_POS_GRID.Set(kData.GRID_ID, kData.POS_WIDTH, kData.POS_HEIGHT);
            this.m_dicBattlePos.Add(kData.GRID_ID, bATTLE_POS_GRID);
        }
        if (bATTLE_POS_GRID.mListPos == null)
        {
            Debug.LogError(string.Format("Add Fail:{0},{1}", kData.GRID_ID, kData.CELL));
        }
        bATTLE_POS_GRID.mListPos[kData.CELL] = new Vector3(kData.POS_X, 0f, kData.POS_Y);
    }
Beispiel #3
0
    private void UpdateGrid(eBATTLE_ALLY Ally, short nStartPosIndex, BATTLE_POS_GRID kPosGrid)
    {
        List <NmBattleGrid> list = this.GetBattleGridList(Ally, nStartPosIndex);

        if (list == null)
        {
            return;
        }
        if (list.Count != kPosGrid.m_veBUID.Length)
        {
            KeyValuePair <eBATTLE_ALLY, int> key = new KeyValuePair <eBATTLE_ALLY, int>(Ally, (int)nStartPosIndex);
            Transform child = NkUtil.GetChild(this.mRoot.transform, string.Format("GRID{0}_{1}", (int)Ally, nStartPosIndex));
            if (child != null)
            {
                UnityEngine.Object.Destroy(child.gameObject);
            }
            this.m_BattlePosGrid.Remove(key);
            this.m_BattlePosGridSize.Remove(key);
            list = new List <NmBattleGrid>();
            GameObject gameObject = TBSUTIL.Attach(string.Format("GRID{0}_{1}", (int)Ally, nStartPosIndex), this.mRoot);
            for (int i = 0; i < kPosGrid.mListPos.Length; i++)
            {
                Vector3      pos          = kPosGrid.mListPos[i];
                short        bUID         = kPosGrid.m_veBUID[i];
                NmBattleGrid nmBattleGrid = NmBattleGrid.Create(Ally, nStartPosIndex, bUID, pos, i);
                nmBattleGrid.gameObject.transform.parent = gameObject.transform;
                list.Insert(list.Count, nmBattleGrid);
            }
            this.m_BattlePosGridSize.Add(key, new Vector2((float)kPosGrid.m_nWidthCount, (float)kPosGrid.m_nHeightCount));
            this.m_BattlePosGrid.Add(key, list);
            return;
        }
        for (int i = 0; i < list.Count; i++)
        {
            NmBattleGrid nmBattleGrid2 = list[i];
            if (!(nmBattleGrid2 == null))
            {
                nmBattleGrid2.SetBUID(kPosGrid.m_veBUID[i]);
            }
        }
    }
Beispiel #4
0
    public bool IsEnablePos(NrCharKindInfo pkCharKindInfo, short nGridPos, BATTLE_POS_GRID battle_Grid)
    {
        if (nGridPos < 0)
        {
            return(false);
        }
        byte battleSizeX = pkCharKindInfo.GetBattleSizeX();
        byte battleSizeY = pkCharKindInfo.GetBattleSizeY();
        int  num         = (int)nGridPos % battle_Grid.m_nWidthCount;
        int  num2        = (int)nGridPos / battle_Grid.m_nWidthCount;

        if (num + (int)battleSizeX > battle_Grid.m_nWidthCount)
        {
            return(false);
        }
        if (num2 + (int)battleSizeY > battle_Grid.m_nHeightCount)
        {
            return(false);
        }
        for (int i = 0; i < (int)battleSizeY; i++)
        {
            for (int j = 0; j < (int)battleSizeX; j++)
            {
                int num3 = num + j + (num2 + i) * battle_Grid.m_nWidthCount;
                if (num3 < 0 || num3 >= battle_Grid.m_nHeightCount * battle_Grid.m_nWidthCount)
                {
                    return(false);
                }
                if (battle_Grid.m_veBUID[num3] >= 0)
                {
                    return(false);
                }
                if (!battle_Grid.m_vebActive[num3])
                {
                    return(false);
                }
            }
        }
        return(true);
    }
Beispiel #5
0
    private void Insert(eBATTLE_ALLY Ally, short nStartPosIndex, BATTLE_POS_GRID kPosGrid)
    {
        KeyValuePair <eBATTLE_ALLY, int> key = new KeyValuePair <eBATTLE_ALLY, int>(Ally, (int)nStartPosIndex);

        if (this.m_BattlePosGrid.ContainsKey(key))
        {
            this.UpdateGrid(Ally, nStartPosIndex, kPosGrid);
            return;
        }
        List <NmBattleGrid> list       = new List <NmBattleGrid>();
        GameObject          gameObject = TBSUTIL.Attach(string.Format("GRID{0}_{1}", (int)Ally, nStartPosIndex), this.mRoot);

        for (int i = 0; i < kPosGrid.mListPos.Length; i++)
        {
            Vector3      pos          = kPosGrid.mListPos[i];
            short        bUID         = kPosGrid.m_veBUID[i];
            NmBattleGrid nmBattleGrid = NmBattleGrid.Create(Ally, nStartPosIndex, bUID, pos, i);
            nmBattleGrid.gameObject.transform.parent = gameObject.transform;
            list.Insert(list.Count, nmBattleGrid);
        }
        this.m_BattlePosGridSize.Add(key, new Vector2((float)kPosGrid.m_nWidthCount, (float)kPosGrid.m_nHeightCount));
        this.m_BattlePosGrid.Add(key, list);
    }
 public void Set(BATTLE_POS_GRID obj, int nRotate, bool bInfinityBattle = false)
 {
     this.GRID_ID        = obj.GRID_ID;
     this.m_nWidthCount  = obj.m_nWidthCount;
     this.m_nHeightCount = obj.m_nHeightCount;
     this.m_veBUID       = new short[this.m_nWidthCount * this.m_nHeightCount];
     this.mListPos       = new Vector3[this.m_nWidthCount * this.m_nHeightCount];
     this.m_vebActive    = new bool[this.m_nWidthCount * this.m_nHeightCount];
     for (int i = 0; i < this.m_veBUID.Length; i++)
     {
         this.m_veBUID[i]    = obj.m_veBUID[i];
         this.m_vebActive[i] = obj.m_vebActive[i];
     }
     if (nRotate == 0)
     {
         for (int i = 0; i < this.m_veBUID.Length; i++)
         {
             this.mListPos[i] = obj.mListPos[i];
         }
     }
     else if (nRotate == 270)
     {
         int num = 0;
         for (int i = 0; i < this.m_nWidthCount; i++)
         {
             for (int j = this.m_nHeightCount - 1; j >= 0; j--)
             {
                 this.mListPos[num] = obj.mListPos[j * this.m_nHeightCount + i];
                 num++;
             }
         }
     }
     else if (nRotate == 180)
     {
         if (bInfinityBattle)
         {
             int num2 = 0;
             for (int i = 0; i < this.m_nHeightCount; i++)
             {
                 for (int j = 0; j < this.m_nWidthCount; j++)
                 {
                     this.mListPos[num2] = obj.mListPos[this.mListPos.Length - this.m_nWidthCount * (i + 1) + j];
                     num2++;
                 }
             }
         }
         else
         {
             for (int i = 0; i < this.m_veBUID.Length; i++)
             {
                 this.mListPos[i] = obj.mListPos[this.mListPos.Length - i - 1];
             }
         }
     }
     else if (nRotate == 90)
     {
         int num3 = 0;
         for (int i = this.m_nWidthCount - 1; i >= 0; i--)
         {
             for (int j = 0; j < this.m_nHeightCount; j++)
             {
                 this.mListPos[num3] = obj.mListPos[j * this.m_nHeightCount + i];
                 num3++;
             }
         }
     }
 }
Beispiel #7
0
    public bool CreateBulletUnit(BULLET_INFO BulletInfo, NkBattleChar pkSourceChar, NkBattleChar pkTargetchar, float fStartTime)
    {
        if (BulletInfo == null)
        {
            return(false);
        }
        if (pkSourceChar == null)
        {
            return(false);
        }
        if (pkTargetchar == null)
        {
            return(false);
        }
        this.m_BulletInfo = BulletInfo;
        this.m_SourceChar = pkSourceChar;
        this.m_TargetChar = pkTargetchar;
        this.m_fStartTime = fStartTime;
        if (this.m_SourceChar.CastedTarget.m_bDeadReaservation)
        {
            Debug.Log("Already Dead Char Request Bullet");
        }
        Vector3 vector  = Vector3.zero;
        Vector3 vector2 = Vector3.zero;
        Vector3 vector3 = Vector3.zero;

        if (this.m_BulletInfo.MOVE_TYPE == eBULLET_MOVE_TYPE.eBULLET_MOVE_TYPE_PASS)
        {
            BATTLE_POS_GRID battleGrid  = Battle.BATTLE.GetBattleGrid(pkSourceChar.Ally, pkSourceChar.GetStartPosIndex());
            BATTLE_POS_GRID battleGrid2 = Battle.BATTLE.GetBattleGrid(pkTargetchar.Ally, pkTargetchar.GetStartPosIndex());
            if (battleGrid == null)
            {
                return(false);
            }
            vector          = battleGrid.GetCenterBack();
            this.m_PosStart = vector;
            vector.y        = 0f;
            if (battleGrid2 == null)
            {
                return(false);
            }
            vector3             = battleGrid2.GetCenterBack();
            this.m_BulletPosEnd = vector3;
            vector3.y           = 0f;
            vector2             = pkTargetchar.GetCenterPosition();
            this.m_HitPosEnd    = vector2;
            vector2.y           = 0f;
        }
        else
        {
            vector              = pkSourceChar.GetShotPosition();
            this.m_PosStart     = vector;
            vector.y            = 0f;
            vector3             = pkTargetchar.GetCenterPosition();
            this.m_BulletPosEnd = vector3;
            vector3.y           = 0f;
            vector2             = pkTargetchar.GetCenterPosition();
            this.m_HitPosEnd    = vector2;
            vector2.y           = 0f;
        }
        float num  = Vector3.Distance(vector, vector3);
        float num2 = Vector3.Distance(vector, vector2);

        if (this.m_BulletInfo.MOVE_TYPE == eBULLET_MOVE_TYPE.eBULLET_MOVE_TYPE_LINE || this.m_BulletInfo.MOVE_TYPE == eBULLET_MOVE_TYPE.eBULLET_MOVE_TYPE_CURVE || this.m_BulletInfo.MOVE_TYPE == eBULLET_MOVE_TYPE.eBULLET_MOVE_TYPE_PASS)
        {
            if (this.m_BulletInfo.SPEED > 0f)
            {
                this.m_fBulletEndTime = fStartTime + num / this.m_BulletInfo.SPEED;
                this.m_fHitEndTime    = fStartTime + num2 / this.m_BulletInfo.SPEED;
            }
            else
            {
                this.m_fBulletEndTime = fStartTime;
                this.m_fHitEndTime    = fStartTime;
            }
            if (this.m_BulletInfo.MOVE_TYPE == eBULLET_MOVE_TYPE.eBULLET_MOVE_TYPE_CURVE)
            {
                this.m_BulletPosEnd = this.m_TargetChar.CastedTarget.GetCharPos();
                this.m_HitPosEnd    = this.m_TargetChar.CastedTarget.GetCharPos();
                this.calculateInitialVelocity();
            }
        }
        else if (this.m_BulletInfo.MOVE_TYPE == eBULLET_MOVE_TYPE.eBULLET_MOVE_TYPE_NONE)
        {
            this.m_fBulletEndTime = fStartTime;
            this.m_fHitEndTime    = fStartTime;
        }
        this.m_nEffectIndex = NrTSingleton <NkEffectManager> .Instance.AddEffect(this.m_BulletInfo.EFFECT_KIND, this.m_PosStart);

        this.m_EffectUnit = NrTSingleton <NkEffectManager> .Instance.GetEffectUnit(this.m_nEffectIndex);

        if (this.m_EffectUnit != null)
        {
            this.m_EffectUnit.CastedTarget.LifeTime = float.PositiveInfinity;
        }
        return(true);
    }