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); }
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); }
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]); } } }
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); }
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++; } } } }
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); }