CardBase currentInfoCard = null; //当前信息面板显示的卡牌 public DuelScene(DuelMode duelMode) { myPlayer = new Player("玩家", this); switch (duelMode) { case DuelMode.Unknown: Debug.LogError("未选择决斗模式!"); return; case DuelMode.Single: opponentPlayer = new ComputerPlayer(this); break; case DuelMode.Net: opponentPlayer = new NetPlayer(this); break; default: break; } myPlayer.SetOpponentPlayer(opponentPlayer); opponentPlayer.SetOpponentPlayer(myPlayer); cardPre = Resources.Load <GameObject>(cardPrefabPath); myMonsterCardPositionAnchorList.Add(DuelCommonValue.myMonsterCardPosition0Anchor); myMonsterCardPositionAnchorList.Add(DuelCommonValue.myMonsterCardPosition1Anchor); myMonsterCardPositionAnchorList.Add(DuelCommonValue.myMonsterCardPosition2Anchor); myMonsterCardPositionAnchorList.Add(DuelCommonValue.myMonsterCardPosition3Anchor); myMonsterCardPositionAnchorList.Add(DuelCommonValue.myMonsterCardPosition4Anchor); myMagicTrapCardPositionAnchorList.Add(DuelCommonValue.myMagicTrapCardPosition0Anchor); myMagicTrapCardPositionAnchorList.Add(DuelCommonValue.myMagicTrapCardPosition1Anchor); myMagicTrapCardPositionAnchorList.Add(DuelCommonValue.myMagicTrapCardPosition2Anchor); myMagicTrapCardPositionAnchorList.Add(DuelCommonValue.myMagicTrapCardPosition3Anchor); myMagicTrapCardPositionAnchorList.Add(DuelCommonValue.myMagicTrapCardPosition4Anchor); opponentMonsterCardPositionAnchorList.Add(DuelCommonValue.opponentMonsterCardPosition0Anchor); opponentMonsterCardPositionAnchorList.Add(DuelCommonValue.opponentMonsterCardPosition1Anchor); opponentMonsterCardPositionAnchorList.Add(DuelCommonValue.opponentMonsterCardPosition2Anchor); opponentMonsterCardPositionAnchorList.Add(DuelCommonValue.opponentMonsterCardPosition3Anchor); opponentMonsterCardPositionAnchorList.Add(DuelCommonValue.opponentMonsterCardPosition4Anchor); opponentMagicTrapCardPositionAnchorList.Add(DuelCommonValue.opponentMagicTrapCardPosition0Anchor); opponentMagicTrapCardPositionAnchorList.Add(DuelCommonValue.opponentMagicTrapCardPosition1Anchor); opponentMagicTrapCardPositionAnchorList.Add(DuelCommonValue.opponentMagicTrapCardPosition2Anchor); opponentMagicTrapCardPositionAnchorList.Add(DuelCommonValue.opponentMagicTrapCardPosition3Anchor); opponentMagicTrapCardPositionAnchorList.Add(DuelCommonValue.opponentMagicTrapCardPosition4Anchor); }
public void KillCharacter() { if (this.Character == null || this.Character.IsDead) { return; } this.Character.SetHealth(0); if (GameMode.IsActive && this.GMTeamID >= TeamIdent.GMPlayer) { GameMode.ActiveMode.OnSuicide(this); } else if (this.DuelEnemy != null) { DuelMode.DuelWin(this.DuelEnemy); } }
public override void ReadScriptMessage(PacketReader stream) { ScriptMessages id = (ScriptMessages)stream.ReadByte(); //Log.Logger.Log(id); switch (id) { case ScriptMessages.JoinGame: FMSpawn(); break; case ScriptMessages.Spectate: FMSpectate(); break; case ScriptMessages.CharEdit: string oldName = charInfo.Name; charInfo.Read(stream); if (oldName != charInfo.Name) { SendPlayerInfoMessage(); } if (GMTeamID == TeamIdent.FFAPlayer) { FMSpawn(); } break; case ScriptMessages.DuelRequest: DuelMode.ReadRequest(this, stream); break; case ScriptMessages.ChatMessage: Chat.ReadMessage(this, stream); break; case ScriptMessages.DuelScoreBoard: DuelBoard.Instance.Toggle(this, stream.ReadBit()); break; case ScriptMessages.ModeSpectate: if (GameMode.IsActive) { GameMode.ActiveMode.JoinAsSpectator(this); } break; case ScriptMessages.TDMTeamSelect: if (TDMMode.IsActive) { TDMMode.ActiveMode.JoinTeam(this, stream.ReadByte()); } break; case ScriptMessages.TDMScoreBoard: TDMScoreBoard.Instance.Toggle(this, TDMMode.IsActive ? stream.ReadBit() : false); break; case ScriptMessages.ModeClassSelect: if (GameMode.IsActive) { GameMode.ActiveMode.SelectClass(this, stream.ReadByte()); } break; case ScriptMessages.BRJoin: if (BRMode.IsActive) { BRMode.ActiveMode.Join(this); } break; case ScriptMessages.HordeScoreBoard: HordeBoard.Instance.Toggle(this, HordeMode.IsActive ? stream.ReadBit() : false); break; } }
public override void ReadScriptMessage(PacketReader stream) { ScriptMessages id = (ScriptMessages)stream.ReadByte(); Log.Logger.Log(id); switch (id) { case ScriptMessages.GameInfo: ReadGameInfo(stream); break; case ScriptMessages.DuelRequest: DuelMode.ReadRequest(stream); break; case ScriptMessages.DuelStart: DuelMode.ReadStart(stream); break; case ScriptMessages.DuelWin: DuelMode.ReadWin(stream); break; case ScriptMessages.DuelEnd: DuelMode.ReadEnd(stream); break; case ScriptMessages.ChatMessage: Chat.ReadMessage(stream); break; case ScriptMessages.ChatTeamMessage: Chat.ReadTeamMessage(stream); break; case ScriptMessages.DuelScoreBoard: DuelBoardScreen.Instance.ReadMessage(stream); break; case ScriptMessages.PlayerInfo: PlayerInfo.ReadPlayerInfoMessage(stream); break; case ScriptMessages.PlayerInfoTeam: PlayerInfo.ReadPlayerInfoTeam(stream); break; case ScriptMessages.PlayerQuit: PlayerInfo.ReadPlayerQuitMessage(stream); break; case ScriptMessages.PointsMessage: int points = stream.ReadSByte(); Sumpfkraut.Menus.ScreenScrollText.AddText((points > 0 ? "Punkte +" : "Punkte ") + points); break; case ScriptMessages.ModeStart: GameMode.Start(stream.ReadString()); break; case ScriptMessages.ModePhase: GameMode.ReadPhase(stream); break; case ScriptMessages.TDMScoreBoard: TDMScoreBoard.Instance.ReadMessage(stream); break; case ScriptMessages.TDMWin: TDMMode.ReadWinMessage(stream); break; case ScriptMessages.HordeScoreBoard: HordeScoreBoard.Instance.ReadMessage(stream); break; case ScriptMessages.HordeWin: HordeMode.End(true); break; case ScriptMessages.HordeLoss: HordeMode.End(false); break; } }
static void PlayerActionButton(bool down) { var hero = ScriptClient.Client.Character; if (hero.IsDead) { return; } if (hero.IsUnconscious) { if (down && HordeMode.IsActive && PlayerInfo.HeroInfo.TeamID >= TeamIdent.GMPlayer && screamLock.IsReady) { NPCInst.Requests.Voice(hero, VoiceCmd.HELP); } return; } if (down && HordeMode.IsActive && PlayerInfo.HeroInfo.TeamID >= TeamIdent.GMPlayer && hero.HP > 1 && !hero.ModelInst.IsInAnimation()) { if (PlayerFocus.FocusVob is NPCInst npc && npc.IsUnconscious && npc.TeamID == hero.TeamID && npc.GetDistance(hero) < 300) { NPCInst.Requests.HelpUp(hero, npc); return; } } if (freeAim) { if (!IsWarmup()) { RequestShootFree(hero); } return; } if (hero.IsInFightMode) { var drawnWeapon = hero.GetDrawnWeapon(); if (drawnWeapon != null && drawnWeapon.IsWepRanged) { NPCInst.Requests.Aim(hero, down); } else if (down && KeyBind.MoveForward.IsPressed() && !IsWarmup()) { NPCInst.Requests.Attack(hero, FightMoves.Run); } } else if (down) { if (PlayerFocus.FocusVob is ItemInst item) { NPCInst.Requests.TakeItem(hero, item); } else if (!ArenaClient.GMJoined && PlayerFocus.FocusVob is NPCInst npc) { DuelMode.SendRequest(npc); } } }