Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 4
0
        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;
            }
        }
Ejemplo n.º 5
0
        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);
                }
            }
        }