/// <summary> /// 结束战斗 /// </summary> /// <param name="needCalcResult">是否需要计算结果, 玩家主动退出情况不需要计算结果</param> public void StopBattle(bool needCalcResult = true) { if (needCalcResult) { _CheckFinalBattleResult(); } if (GameGOW.Get().Winner_Id == 2) { SounderManager.Get().PlaySound(1, "sound/win01"); } else { SounderManager.Get().PlaySound(1, "sound/shibai_09"); } RemoveEvents(); m_bIsInBattle = false; m_stBattleInfo = null; m_iCurrentRound = 0; m_iBattleEndTick = (int)GameGOW.Get().TickerMgr.TickCount; EventDispatcher.DispatchEvent("EventBattleStop", this, null); }
public static int SetSound(int index, int type) { if (type != -1) { SounderManager.Get().SetSound(index, type); } if (index == 0) { return(SounderManager.Get().yinyue); } else { return(SounderManager.Get().yinxiao); } }
public override void Execute() { //有剩余时间力度条才会增加减少, if (m_eAttackState == AttackState.PrepareAttack) { if (m_pCharacter.m_pInfo.m_bInBombSpeedUp && GameGOW.Get().BattleMgr.m_iCurrentRoundTime > 0) { if (m_pCharacter.m_pInfo.m_iBombSpeed < 0) { m_iSpeedFlag = -m_iSpeedFlag; m_pCharacter.m_pInfo.m_iBombSpeed = 0; } else if (m_pCharacter.m_pInfo.m_iBombSpeed > m_pCharacter.m_pInfo.m_pInstructionData.fire_range) { m_iSpeedFlag = -m_iSpeedFlag; m_pCharacter.m_pInfo.m_iBombSpeed = m_pCharacter.m_pInfo.m_pInstructionData.fire_range; } else { m_pCharacter.m_pInfo.m_iBombSpeed += m_iSpeedInterval * m_iSpeedFlag; } } else//时间到不开炮自动切换对象 { if (GameGOW.Get().BattleMgr.m_iCurrentRoundTime > 0 && m_pCharacter.IsLiving == true) // { SounderManager.Get().PlaySound(1, "sound/shooting04"); m_pCharacter.Body.DoAction(CharacterStateType.ATTACK); LOG.Log("CharacterStateType.ATTACK"); m_eAttackState = AttackState.InAttack; } else { Finish(); } } } else if (m_eAttackState == AttackState.InAttack) { if (m_pCharacter.m_pInfo.m_eCurrentStateType != CharacterStateType.ATTACK || m_pCharacter.m_pInfo.m_iCurrentFrame == m_pCharacter.m_pInfo.m_pCurrentStateData.total_frame) { Finish(); } } }
public static void Play_Sound(int index, string audio) { SounderManager.Get().PlaySound(index, audio); }
public static void CMD_PUSHGAMEDATA(NetworkMsg msg) { Res_game xmsg = new Res_game(); using (MemoryStream stream = new MemoryStream(msg.data)) { xmsg = ProtoBuf.Serializer.Deserialize <Res_game>(stream); } //Debug.Log("xue****sdid****:" + xmsg.m_iRoomID + ":" + xmsg.m_iTableID + ":" + xmsg.m_icmd + ":" + Enum.GetName(typeof(GameID), xmsg.m_icmd) + ":------" + Network.xue++); if (xmsg.m_icmd == (int)GameID.Ready) { Res_ready res = new Res_ready(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Res_ready>(stream); } Network.battleinfo.m_iMapIndex = res.m_iMapID; #if xue Network.battleinfo.m_eBattleType = BattleType.NORMAL_PVP; Network.battleinfo.m_iTimeLimit = GameDefine.INFINITE; #endif int ma = res.m_iSeatSum; List <string> username = res.m_strName; List <int> teamid = res.m_iTeamID; List <int> playerid = res.m_aiSeatPlayer; for (int i = 0; i < ma; i++) { PlayerInfo p1 = new PlayerInfo(); p1.m_strName = username[i]; p1.m_iPlayerUID = playerid[i]; p1.m_iTeam = teamid[i]; Network.Pid_Tid.Add(playerid[i], teamid[i]); #if xue //Debug.Log("xue*****************:" + ":name:" + username[i] + ":playerid:" + playerid[i] + "teamid" + teamid[i] + "mapid:" + res.m_iMapID); #endif Network.battleinfo.m_listPlayers.Add(p1); if (Network.playerid == playerid[i]) { Network.playerindex = i; } else { Network.playerid2 = playerid[i]; } } CMD_MAP_MATCH_result = (int)ResultID.result_enter_game; } else if (xmsg.m_icmd == (int)GameID.Ready_Notify) { Notify_ready res = new Notify_ready(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Notify_ready>(stream); } Network.seat_binary = (Network.seat_binary) | (1 << (res.m_iSeat)); Network.GameReady_pic[res.m_iSeat] = res.m_iPic; Network.seat_res++; } else if (xmsg.m_icmd == (int)GameID.Choose) { Res_choose res = new Res_choose(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Res_choose>(stream); } Network.battleinfo.m_iRoundLimit = res.m_iRound; #if xue Network.battleinfo.m_eBattleType = BattleType.NORMAL_PVP; Network.battleinfo.m_iTimeLimit = GameDefine.INFINITE; #endif int ma = Network.battleinfo.m_listPlayers.Count; List <int> tankid = res.m_iTankID; for (int i = 0; i < ma; i++) { Network.battleinfo.m_listPlayers[i].m_iInstructionID = tankid[i]; Network.battleinfo.m_listPlayers[i].m_iHP = GameGOW.Get().DataMgr.GetCharacterInstructionByID(tankid[i]).m_iHP; Network.battleinfo.m_listPlayers[i].m_iMoveEnergy = GameGOW.Get().DataMgr.GetCharacterInstructionByID(tankid[i]).m_iMoveEnergy; Network.battleinfo.m_listPlayers[i].m_iAddEnergy = GameGOW.Get().DataMgr.GetCharacterInstructionByID(tankid[i]).m_iAddEnergy; #if xue //Debug.Log("xue*****************:tankid:" + tankid[i]); #endif } CMD_MAP_MATCH_result = (int)ResultID.result_choose_done; } else if (xmsg.m_icmd == (int)GameID.Choose_Notify) { Notify_choose res = new Notify_choose(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Notify_choose>(stream); } //Debug.Log("xue^^^^^^^^^^^^^^^^^ " + res.m_iSeat + ":" + res.m_iTankID + " " + Network.xue++); if (res.m_iTankID < 0) { Network.GameChoose_num[res.m_iSeat + 1] = (-res.m_iTankID) + 100; } else { Network.GameChoose_num[res.m_iSeat + 1] = res.m_iTankID; Network.GameChooseStatus = -1; } } else if (xmsg.m_icmd == (int)GameID.Load) { Res_loading res = new Res_loading(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Res_loading>(stream); } int index = 1; for (int i = 0; i < Network.battleinfo.m_listPlayers.Count; i++) { if (Network.battleinfo.m_listPlayers[i].m_iPlayerUID == res.m_iOptID) { index = i; break; } } Network.GameLoading_num[index + 1] = res.m_ilen; if (res.m_ilen == 200) { Network.GameLoading = 10; } else if (Network.playerid == res.m_iOptID) { Network.GameLoading++; } } else if (xmsg.m_icmd == (int)GameID.Move) { Res_move res = new Res_move(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Res_move>(stream); } CharacterLogic m_pCurrentPlayer = GameGOW.Get().CharacterMgr.GetCharacterByUid(res.m_iOptID); int type = res.m_iDirection; //var m_pCharacterLogic = GameGOW.Get().BattleMgr.m_pCurrentPlayer; m_pCurrentPlayer.OnDirectionKeyChanged(type); if (type == 0 || res.m_iIntervalTime == 1) { Vector2 v2 = new Vector2(res.m_iPosX, res.m_iPosY); m_pCurrentPlayer.Position = v2; } } else if (xmsg.m_icmd == (int)GameID.Round) { Res_round res = new Res_round(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Res_round>(stream); } Network.Round = res.m_iRound; Network.Wind = res.m_iWind; Network.next_playerid = res.m_iOptID; if (res.m_iOptID != Network.playerid) { EventDispatcher.DispatchEvent("EventHideBattleJoyStickUI", null, null); } //技能冷却 /* * if (Network.playerid == GameGOW.Get().BattleMgr.m_stBattleInfo.m_listPlayers[GameGOW.Get().BattleMgr.m_iCurrentRoundPlayerIndex].m_iPlayerUID) * { * if (SkillManager.CurrentSkillId != 0) * { * Network.Skill_CD[SkillManager.CurrentSkillId]--; * } * * for (int i = 0; i < 20; i++) * { * if (i == SkillManager.CurrentSkillId) * { * if (Network.Skill_CD[i] == -1) * { * Network.Skill_CD[i] = 2; * } * continue; * } * else if (Network.Skill_CD[i] > 0) * { * Network.Skill_CD[i]--; * } * //Debug.Log("xue^^^^^" + i + " " + Network.Skill_CD[i] + " " + Network.xue++); * } * } */ SkillManager.CurrentSkillId = 0; if (res.m_iOptID == Network.playerid) { EventDispatcher.DispatchEvent("EventShowBattleJoyStickUI", null, null); } Network.InitRound(); GameGOW.Get().BattleMgr.ChangeController_Quick(); } else if (xmsg.m_icmd == (int)GameID.Attach) { Res_attack res = new Res_attack(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Res_attack>(stream); } int speed = res.m_iPower; float angle = res.m_iAngle; SkillManager.CurrentSkillId = res.m_iBombType; CharacterLogic m_pCurrentPlayer = GameGOW.Get().CharacterMgr.GetCharacterByUid(res.m_iOptID); //var m_pCharacterLogic = GameGOW.Get().BattleMgr.m_pCurrentPlayer; /** * m_pCurrentPlayer.OnFunctionKeyDown(0x11); * * GameGOW.Get().BattleMgr.m_pCurrentPlayer.m_pInfo.m_iBombSpeed = speed; * GameGOW.Get().BattleMgr.m_pCurrentPlayer.m_pInfo.m_iFireAngle = angle; * Network.Attacking = 2; * m_pCurrentPlayer.OnFunctionKeyUp(0x11); **/ Network.Round = res.m_iRound; m_pCurrentPlayer.m_pInfo.m_iBombSpeed = speed; m_pCurrentPlayer.m_pInfo.m_iFireAngle = angle; Network.Attacking = 2; m_pCurrentPlayer.m_pInfo.m_bInBombSpeedUp = false; GameGOW.Get().PlaySkill((SkillManager.SkillType)SkillManager.CurrentSkillId, m_pCurrentPlayer, Network.attackbasedata); } else if (xmsg.m_icmd == (int)GameID.Boom) { Res_Boom res = new Res_Boom(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Res_Boom>(stream); } float x = res.m_ix; float y = res.m_iy; SounderManager.Get().FunNet(res.BombID, res.Kind, x, y); /* * GameGOW.Get().BombMgr.GetBombByUID(res.BombID).Boom_pos = new Vector2(x, y); * Debug.Log("xue^^^^" + res.BombID + " " + GameGOW.Get().BombMgr.GetBombByUID(res.BombID).Boom_pos.x + " " + * GameGOW.Get().BombMgr.GetBombByUID(res.BombID).Boom_pos.y + " " + Network.xue++); * if (res.Kind == false) * { * GameGOW.Get().BombMgr.GetBombByUID(res.BombID).Net_Boom_Status = 1; * //BaseBomb.Net_Boom_Status = 1; * } * else * { * GameGOW.Get().BombMgr.GetBombByUID(res.BombID).Net_Boom_Status = 2; * //BaseBomb.Net_Boom_Status = 2; * } */ } else if (xmsg.m_icmd == (int)GameID.Damage) { OnGame_HP res = new OnGame_HP(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <OnGame_HP>(stream); } //执行掉血 DamageType eType = DamageType.NORMAL; CharacterLogic dstObject = GameGOW.Get().CharacterMgr.GetCharacterByUid(res.m_iPlayerID); int hp = dstObject.m_pInfo.m_iHP; float DD = res.hpValues; hp -= (int)DD; if (hp > dstObject.m_pInfo.m_iMaxHP) { hp = dstObject.m_pInfo.m_iMaxHP; } dstObject.OnDamage(hp, res.hpValues, eType); } else if (xmsg.m_icmd == (int)GameID.Die) { Notify_disconnect res = new Notify_disconnect(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Notify_disconnect>(stream); } GameGOW.Get().CharacterMgr.GetCharacterByUid(res.m_iOptID).Dead(); } else if (xmsg.m_icmd == (int)GameID.Disconnect) { Notify_disconnect res = new Notify_disconnect(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Notify_disconnect>(stream); } //处理掉线 } else if (xmsg.m_icmd == (int)GameID.Over) { Res_over res = new Res_over(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Res_over>(stream); } if (res.m_iOverStatus == (int)GameResID.game_result_win) { GameGOW.Get().Winner_Id = 2; GameGOW.Get().BattleMgr.StopBattle(); } else if (res.m_iOverStatus == (int)GameResID.game_result_fail) { GameGOW.Get().Winner_Id = 1; GameGOW.Get().BattleMgr.StopBattle(); } else if (res.m_iOverStatus == (int)GameResID.game_result_exception) { EventDispatcher.DispatchEvent("EventBackHost", null, null); } else { GameGOW.Get().Winner_Id = 1; GameGOW.Get().BattleMgr.StopBattle(); } Network.addgold = res.m_iGetGold; Network.addexp = res.m_iGetExp; Network.adddiamond = res.m_iGetDiamond; Network.gold += Network.addgold; Network.exp += Network.addexp; Network.diamond += Network.adddiamond; Add_Friend_List = new Dictionary <string, int>(); Invite_Friend_List = new Dictionary <string, int>(); } else if (xmsg.m_icmd == (int)GameID.Quit) { GameGOW.Get().BattleMgr.m_bIsInBattle = false; } else if (xmsg.m_icmd == (int)GameID.Chat) { Notify_chat res = new Notify_chat(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Notify_chat>(stream); } if (res.m_iChatID >= 1000 && res.m_iChatID < 2000) { var info = GameGOW.Get().CharacterMgr.GetCharacterByUid(res.m_iOptID).m_pInfo; info.EmojiID = res.m_iChatID; } else { LuaHelper.Play_Sound(2, "sound/girlsound/girl_0" + (res.m_iChatID - 2000)); var info = GameGOW.Get().CharacterMgr.GetCharacterByUid(res.m_iOptID).m_pInfo; info.MessageID = res.m_iChatID; } } }
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(); } } }
public void Tick(uint tickCount) { if (!m_bIsInBattle) { return; } if (tickCount - m_iBattleStartTick > m_stBattleInfo.m_iTimeLimit) { if (Network.gamemode == BattleType.AI_1v1) { GameGOW.Get().BattleMgr.m_bIsInBattle = false; //StopBattle(); } else if (Network.NetworkMode == true) { //GameGOW.Get().BattleMgr.m_bIsInBattle = false; //Network.Send_Over(Network.Pid_Tid[Network.playerid], GameGOW.Get().Winner_Id != Network.Pid_Tid[Network.playerid]); } else { StopBattle(); } } if (m_iWaitTime >= 0) { --m_iWaitTime; if (m_iWaitTime == 0) { DoChangeController(); } } if (Network.gamemode == BattleType.AI_1v1) { if (Network.Attacking != 2) { --m_iCurrentRoundTime; } } else if (Network.NetworkMode == true) { if (Network.Attacking != 2) { --m_iCurrentRoundTime; } } else { --m_iCurrentRoundTime; } if (m_iCurrentRoundTime > 60 && m_iCurrentRoundTime <= 360 && m_iCurrentRoundTime % 60 == 0 && m_bIsInBattle) { // Debug.Log("++++++++++++++++++++++++++++++++++++++++++++"+m_bIsInBattle); SounderManager.Get().PlaySound(3, "sound/yinxiao/08"); } if (m_iCurrentRoundTime <= 60) {//时间到, 切换行动对象 if (Network.gamemode == BattleType.AI_1v1) { if (Network.Attacking == 0) { 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.Attacking == 1) { Network.Attacking = 2; GameGOW.Get().BattleMgr.m_pCurrentPlayer.OnFunctionKeyUp(0x11); } } if (Network.NetworkMode == true) { int index = GameGOW.Get().BattleMgr.m_iCurrentRoundPlayerIndex; int id = GameGOW.Get().BattleMgr.m_stBattleInfo.m_listPlayers[index].m_iPlayerUID; if (Network.playerid == id && Network.Moving == false && Network.PreMove != 0) { Network.Moving = true; var m_pCharacterLogic = GameGOW.Get().BattleMgr.m_pCurrentPlayer; Network.Send_Move(false, 0, 0, m_pCharacterLogic.Position.x, m_pCharacterLogic.Position.y); } if (Network.playerid == id && Network.Attacking == 1) { Network.Attacking = 2; var m_pCharacterLogic = GameGOW.Get().BattleMgr.m_pCurrentPlayer; Network.Send_Attach(false); } } else { ChangeController(); } } }