override public bool Initialize(object[] args) { base.Initialize(args); m_pCharacter = args[0] as CharacterLogic; m_iSpeedInterval = (int)Math.Ceiling(0.01 * m_pCharacter.m_pInfo.m_pInstructionData.fire_range); m_iSpeedFlag = 1; m_eAttackState = AttackState.FinishAttack; return(true); }
public override bool Initialize(object [] args) { base.Initialize(args); m_pCharacter = args[0] as CharacterLogic; m_pTarget = (Vector2)args[1]; m_bIsLiving = (bool)args[2]; m_bCanIgnore = (bool)args[3]; return(true); }
override public bool Initialize(object[] args) { base.Initialize(args); m_pCharacter = args[0] as CharacterLogic; m_iDir = (int)args[1]; m_pTarget = (Vector2)args[2]; _isFinished = false; return(true); }
public BaseBomb() : base(0, 1, 10.0f, 100.0f, 1.0f, 1.0f) { _testRect = new Rect(-3, -3, 9, 9); m_pConfig = null; m_pHost = null; m_stShape = null; m_stBorder = null; m_pAttackInfo = new AttackInfo(); }
public void Throw_Bomb(SkillType x, CharacterLogic A, AttackBaseData AA) { Init_Round(); set_animation((int)x); if (A.go_down == true) { return; } thunder_bomb_num = 0; kill_bomb = 1.0f; DO_bomb_Action = true; bomb_num = 1; switch (x) { case SkillType.Normal: Throw_one_Bomb(A, AA); break; case SkillType.Cure: DO_bomb_Action = false; Throw_cure_bomb(A, AA); break; case SkillType.DoubleBomb: bomb_num = 2; Throw_two_Bomb(A, AA); break; case SkillType.TripleBomb: bomb_num = 3; Throw_three_Bomb(A, AA); break; case SkillType.Teleport: DO_bomb_Action = false; Throw_one_Bomb(A, AA); break; case SkillType.Robot: break; case SkillType.ThunderBomb: thunder_bomb_num = 6; bomb_num = 5; Throw_thunder_bomb(A, AA); break; case SkillType.Rocket: Rock_Bomb(); Throw_one_Bomb(A, AA); break; } }
public void ThrowBomb(CharacterLogic pHost, AttackBombData pData, bool is_foucs) //is_foucs 为camera是否跟踪 { SkillINstructionData self_skill = GameGOW.Get().DataMgr.GetSkillINstructionDataByID(SkillManager.CurrentSkillId == 0?0:100 + SkillManager.CurrentSkillId); pData.damage = self_skill.damage; pData.center_damage = self_skill.center_damage; BombData pBombData = GameGOW.Get().DataMgr.GetBombDataByID(pData.bomb_config_id); if (pBombData != null) { int uid; lock (locker) { uid = GameGOW.Get().GetNextUid(); } // Debug.Log("EEEEEEEEEEEEEEEEEEEEEEE-------------UID"+uid); BaseBomb m_stBombLogic = ObjectPools.CheckOut <BaseBomb>(uid, pHost, pBombData, pData); // Debug.Log("EEEEEEEEEEEEEEEEEEEEEEE-------------UID" + m_stBombLogic.Config.m_iResourceID); m_stBombLogic.Position = pHost.GetWeaponPosition(); float radian; if (SkillManager.CurrentSkillId == (int)SkillManager.SkillType.Rocket) { radian = MathUtil.AngleToRadian(pHost.GetFireAngle()) * pHost.m_pInfo.m_iFacing; GameGOW.Get().BattleMgr.m_pCurrentPlayer.m_pInfo.m_iFireAngle = SkillManager.PreAngle; } else { radian = MathUtil.AngleToRadian(pHost.GetFireAngle() + pHost.CalcObjectAngle()) * pHost.m_pInfo.m_iFacing; } float speedX = pHost.m_pInfo.m_iBombSpeed * Mathf.Cos(radian) * pHost.m_pInfo.m_iFacing; float speedY = pHost.m_pInfo.m_iBombSpeed * Mathf.Sin(radian); m_stBombLogic.Start(); if (SkillManager.thunder_bomb_num > 0) { speedX = 0.0f; speedY = 0.0f; float val = GameGOW.Get().MapMgr.m_stBound.xMax - GameGOW.Get().MapMgr.m_stBound.xMin; float add = val / 6; m_stBombLogic.Position = new Vector2(GameGOW.Get().MapMgr.m_stBound.xMin + add * SkillManager.thunder_bomb_num, GameGOW.Get().MapMgr.m_stBound.yMax - 10); } m_stBombLogic.SetSpeedXY(speedX, speedY); m_dicBombs[uid] = m_stBombLogic; if (OnBombNew != null) { OnBombNew(m_stBombLogic, is_foucs); } } }
public void Throw_three_Bomb(CharacterLogic A, AttackBaseData AA) { int temp = GameGOW.Get().BattleMgr.m_pCurrentPlayer.m_pInfo.m_iBombSpeed; GameGOW.Get().BattleMgr.m_pCurrentPlayer.m_pInfo.m_iBombSpeed -= 100; GameGOW.Get().BattleMgr.m_pCurrentPlayer.m_pInfo.m_iCurrentAngle -= 3; GameGOW.Get().BombMgr.ThrowBomb(A, AA as AttackBombData, false); GameGOW.Get().BattleMgr.m_pCurrentPlayer.m_pInfo.m_iBombSpeed += 100; GameGOW.Get().BattleMgr.m_pCurrentPlayer.m_pInfo.m_iCurrentAngle += 3; GameGOW.Get().BombMgr.ThrowBomb(A, AA as AttackBombData, true); GameGOW.Get().BattleMgr.m_pCurrentPlayer.m_pInfo.m_iBombSpeed += 100; GameGOW.Get().BattleMgr.m_pCurrentPlayer.m_pInfo.m_iCurrentAngle += 6; GameGOW.Get().BombMgr.ThrowBomb(A, AA as AttackBombData, false); }
public void Clear() { m_dicPlayerResult.Clear(); m_dicTeamResult.Clear(); m_bIsInBattle = false; m_stBattleInfo = null; m_iCurrentRoundPlayerIndex = 0; m_iCurrentRoundTime = ROUND_TIME; m_pCurrentPlayer = null; m_iPlayerCount = 0; m_iBattleStartTick = 0; m_iBattleEndTick = 0; m_iBossUID = 0; m_iWaitTime = 0; }
public CharacterLogic CreateCharacter(int uid, CharacterInstructionData pData) { if (m_dicCharacterLogic.ContainsKey(uid)) { return(m_dicCharacterLogic[uid]); } else { CharacterLogic pRet = ObjectPools.CheckOut <CharacterLogic>((int)uid, pData); m_dicCharacterLogic[uid] = pRet; if (OnCharacterNew != null) { OnCharacterNew(pRet); } return(pRet); } }
public void StartBattle(BattleInfo info, MapData pMapData) { m_iCurrentRoundPlayerIndex = 0; m_stBattleInfo = info; m_iCurrentRound = 0; m_iWaitTime = 0; InitPlayerInfo(pMapData); m_pCurrentPlayer = GameGOW.Get().CharacterMgr.GetCharacterByUid(info.m_listPlayers[m_iCurrentRoundPlayerIndex].m_iPlayerUID); m_iCurrentRoundTime = ROUND_TIME; //info.m_iRoundLimit * 60; AddEvents(); m_bIsInBattle = true; EventDispatcher.DispatchEvent("EventBattleStart", this, new ChangeControllerEvent(info.m_listPlayers[m_iCurrentRoundPlayerIndex].m_iPlayerUID)); }
public void Throw_one_Bomb(CharacterLogic A, AttackBaseData AA) { GameGOW.Get().BombMgr.ThrowBomb(A, AA as AttackBombData, true); }
override public bool Initialize(object[] args) { base.Initialize(args); m_pCharacter = args[0] as CharacterLogic; return(true); }
public void Bomb(Dictionary <int, bool> attackedMask = null) { // SounderManager.Get().PlaySound(1, "boom1"); bool flag = true; if (GameGOW.Get().MapMgr.IsOutMap(this.Position)) { flag = false; } if (flag) { SounderManager.Get().PlaySound(1, "sound/yinxiao/pet_boom_" + (int)SkillManager.CurrentSkillId); } if (SkillManager.DO_bomb_Action == true && flag) { DigMap(); } Vector2 boom_pos = new Vector2(); if (Network.gamemode == BattleType.AI_1v1) { boom_pos = this.Position; } else if (Network.NetworkMode == true) { boom_pos = Boom_pos; } else { boom_pos = this.Position; } for (int i = -1; i <= 1; i++) { if (GameGOW.Get().MapMgr.IsEmpty((int)(boom_pos.x + i), (int)(boom_pos.y + 5))) { boom_pos.x = (int)(boom_pos.x + i); boom_pos.y = (int)((int)(boom_pos.y + 5)); break; } } if (SkillManager.CurrentSkillId == 7) { /* * 能飞自杀 * if(flag && boom_pos.y==0) * { * * * } * else * { * if (flag) * SelfCharacterWalkAction.Set_m_pCharacter(boom_pos); * else * { * Debug.Log("WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"); * this.Stop(); * } * } */ if (flag) { SelfCharacterWalkAction.Set_m_pCharacter(boom_pos); } else { this.Stop(); } } List <TKPhysicalObj> bombList = GameGOW.Get().MapMgr.GetObjectsInMap(boom_pos, m_pConfig.m_fBombRange, null); int rr = 0; for (int i = 0; i < bombList.Count; ++i) { CharacterLogic pCharacter = bombList[i] as CharacterLogic; if (pCharacter != null) { pCharacter.Falling(); //attackmask m_pAttackInfo.m_Position = boom_pos; m_pAttackInfo.m_bIsCenterDamage = (attackedMask != null && attackedMask.ContainsKey(pCharacter.ID)); if (SkillManager.DO_bomb_Action == true || SkillManager.CurrentSkillId == 6) { BattleUtils.TriggerAttack(m_pAttackInfo, pCharacter, Boom_Skill); } } if ((SkillManager.DO_bomb_Action == false && SkillManager.CurrentSkillId == 7) && flag) { rr++; if (rr < 2) { this.Stop(); } } } //xue move from BombView.cs BombStatus++; SkillManager.bomb_num--; if (Network.gamemode == BattleType.AI_1v1 && SkillManager.bomb_num <= 0) { if (GameGOW.Get().BattleMgr.m_bIsInBattle == true) { if (GameGOW.Get().BattleMgr.m_pCurrentPlayer.ID == Network.playerid) { EventDispatcher.DispatchEvent("EventHideBattleJoyStickUI", null, null); } else { EventDispatcher.DispatchEvent("EventShowBattleJoyStickUI", null, null); } GameGOW.Get().BattleMgr.ChangeController_Quick(); if (GameGOW.Get().BattleMgr.Get_InBattle() == true && GameGOW.Get().BattleMgr.m_iCurrentRoundPlayerIndex % 2 == 1) { GameGOW.Get().AIMgr.Act_AI_1v1(); } } } else if (Network.NetworkMode == true) { } else { if (SkillManager.bomb_num <= 0) { GameGOW.Get().BattleMgr.ChangeController(); } } }
IEnumerator DelayBomb(CharacterLogic A, AttackBaseData attack, float delay_time) //延迟发炮,delay_time 为延迟时间 { yield return(new WaitForSeconds(delay_time)); GameGOW.Get().BombMgr.ThrowBomb(A, attack as AttackBombData, false); }
public void Throw_two_Bomb(CharacterLogic A, AttackBaseData AA) { GameGOW.Get().BombMgr.ThrowBomb(A, AA as AttackBombData, true); StartCoroutine(DelayBomb(A, AA, 0.2f)); }
public void Throw_cure_bomb(CharacterLogic A, AttackBaseData AA) { kill_bomb = -1.0f; Throw_one_Bomb(A, AA); }
private void DoChangeController() { Debug.Log("HHHHHHHHHHHHHH 1" + "here"); if (!m_bIsInBattle) { return; } m_iCurrentRoundTime = ROUND_TIME; m_iCurrentRoundPlayerIndex++; GameGOW.Get().MapMgr.RandomWind(); // Debug.Log("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"+ GameGOW.Get().MapMgr.WindPercent+"BBBBBBBBBBB"+Network.Wind); GameGOW.Get().PlayWind(2, -90f * GameGOW.Get().MapMgr.WindPercent, true); // Debug.Log("CCCCCC Wind wind_range wind_step "+ GameGOW.Get().MapMgr.WindPercent+" "+ GameGOW.Get().MapMgr.Wind + " "+ GameGOW.Get().MapMgr.wind_range + " "+ GameGOW.Get().MapMgr.wind_step ); if (m_iCurrentRoundPlayerIndex == m_iPlayerCount) { m_iCurrentRoundPlayerIndex = 0; m_iCurrentRound++; } #if xue while (m_stBattleInfo != null && m_stBattleInfo.m_listPlayers != null && GameGOW.Get().CharacterMgr.GetCharacterByUid(m_stBattleInfo.m_listPlayers[m_iCurrentRoundPlayerIndex].m_iPlayerUID) != null && GameGOW.Get().CharacterMgr.GetCharacterByUid(m_stBattleInfo.m_listPlayers[m_iCurrentRoundPlayerIndex].m_iPlayerUID).IsLiving == false) { m_iCurrentRoundPlayerIndex++; if (m_iCurrentRoundPlayerIndex == m_iPlayerCount) { m_iCurrentRoundPlayerIndex = 0; m_iCurrentRound++; } } #endif int uid; if (Network.gamemode == BattleType.AI_1v1) { uid = m_stBattleInfo.m_listPlayers[m_iCurrentRoundPlayerIndex].m_iPlayerUID; } else if (Network.NetworkMode == true) { uid = Network.next_playerid; for (int i = 0; i < GameGOW.Get().BattleMgr.m_stBattleInfo.m_listPlayers.Count; i++) { if (GameGOW.Get().BattleMgr.m_stBattleInfo.m_listPlayers[i].m_iPlayerUID == uid) { m_iCurrentRoundPlayerIndex = i; break; } } } else { uid = m_stBattleInfo.m_listPlayers[m_iCurrentRoundPlayerIndex].m_iPlayerUID; } SkillManager.CurrentSkillId = 0; Network.InitRound(); m_pCurrentPlayer = GameGOW.Get().CharacterMgr.GetCharacterByUid(uid); m_pCurrentPlayer.m_pInfo.m_bIsInRound = true; //m_pCurrentPlayer.m_pInfo.m_iMoveEnergy = m_pCurrentPlayer.m_pInfo.m_iMaxMoveEnergy; m_pCurrentPlayer.m_pInfo.m_iMoveEnergy = Math.Min(m_pCurrentPlayer.m_pInfo.m_iMaxMoveEnergy, m_pCurrentPlayer.m_pInfo.m_iMoveEnergy + m_pCurrentPlayer.m_pInfo.m_iAddEnergy); EventDispatcher.DispatchEvent("EventChangeController", null, new ChangeControllerEvent(uid)); }
static public int TriggerAttack(AttackInfo attackInfo, CharacterLogic dstObject, int Boom_Skill) { CharacterLogic pSrcObject = attackInfo.m_pFight; int iDamage = 0; DamageType eType = DamageType.NORMAL; float Range_boom = GameGOW.Get().DataMgr.GetBombDataByID(1).m_fBombRange; // SkillManager._debug("WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW WWWW " + attackInfo.m_Position.x + "-" + attackInfo.m_Position.y); // SkillManager._debug("WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW WWWW " + dstObject.Position.x + "-" + dstObject.Position.y); // SkillManager._debug("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCC " + get_distance(attackInfo.m_Position, dstObject.Position)); if (get_distance(attackInfo.m_Position, dstObject.Position) < Range_boom * 1.7 / 3) // { iDamage = GameGOW.Get().DataMgr.GetSkillINstructionDataByID(Boom_Skill == 0 ? 0 : 100 + SkillManager.CurrentSkillId).center_damage; } else if (get_distance(attackInfo.m_Position, dstObject.Position) < Range_boom) { double temp = (Range_boom - get_distance(attackInfo.m_Position, dstObject.Position)) * (3 / 1.7) / (Range_boom); iDamage = (int)(GameGOW.Get().DataMgr.GetSkillINstructionDataByID(Boom_Skill == 0 ? 0 : 100 + SkillManager.CurrentSkillId).center_damage *temp); if (iDamage >= 0 && iDamage < 28) { iDamage = 28; } } else { if (Boom_Skill == 6) { iDamage = -28; } else { iDamage = 28; } } /* * if (attackInfo.m_bIsCenterDamage) * { * iDamage = GameGOW.Get().DataMgr.GetSkillINstructionDataByID(SkillManager.CurrentSkillId == 0 ? 0 : 100 + SkillManager.CurrentSkillId).center_damage; * } * else * { * iDamage = GameGOW.Get().DataMgr.GetSkillINstructionDataByID(SkillManager.CurrentSkillId == 0 ? 0 : 100 + SkillManager.CurrentSkillId).damage; * } * /* * if(iDamage < 0) * { * iDamage = 0; * } */ if (Network.gamemode == BattleType.AI_1v1 || Network.NetworkMode == false) { int hp = dstObject.m_pInfo.m_iHP; float DD = iDamage; hp -= (int)DD; if (hp > dstObject.m_pInfo.m_iMaxHP) { hp = dstObject.m_pInfo.m_iMaxHP; } dstObject.OnDamage(hp, iDamage, eType); } else if (Network.NetworkMode == true) { if (GameGOW.Get().BattleMgr.m_pCurrentPlayer.ID == Network.playerid) { Network.Send_Damage(dstObject.ID, iDamage); } } return(iDamage); }