示例#1
0
    public void GameInit()
    {
        curCoroutine = null;
        IsTestMode   = false;
        createPos.SetActive(false);

        ChracterList.Clear();
        PlayerDataList.Clear();
        PlayerSequenceQueue.Clear();

        IsGameEnd = false;
        CurRound  = 1;

        Player1 = new PlayerData(0, 0, Team.PLAYER1, DeckManager.Instance.CurDeck);
        Player2 = new PlayerData(1, 1, Team.PLAYER2, DeckManager.Instance.CurDeck);

        PlayerDataList.Add(Player1);
        PlayerDataList.Add(Player2);

        PlayerDataList.Sort((x, y) =>
        {
            return(x.order.CompareTo(y.order));
        });

        foreach (var player in PlayerDataList)
        {
            EnqueuePlayerSequenceQueue(player);
        }

        NextSequencePlayerStart();
    }
    public static void UpdateData(PlayerData playerData)
    {
        PlayerDataList playerDataList = HasData() ? JsonUtility.FromJson <PlayerDataList>(PlayerPrefs.GetString(PLAYER_KEY)) : new PlayerDataList();

        playerDataList.UpdatePlayer(playerData);
        PlayerPrefs.SetString(PLAYER_KEY, JsonUtility.ToJson(playerDataList));
    }
示例#3
0
    void Start()
    {
        if (PlayerPrefs.HasKey("BestScore"))
        {
            try
            {
                string         json         = PlayerPrefs.GetString("BestScore");
                PlayerDataList dataFromFile = JsonUtility.FromJson <PlayerDataList>(json);

                int    number    = 1;
                string nameList  = "";
                string scoreList = "";

                foreach (PlayerData item in dataFromFile.players)
                {
                    nameList  += number.ToString() + ". " + item.PlayerName + "\n";
                    scoreList += item.Score + "\n";
                    number++;
                }

                PlayersList.text = nameList;
                ScoreList.text   = scoreList;
            }
            catch (System.Exception ex)
            {
                Debug.Log(ex.Message);
                Debug.Log("Miss file for upload");
            }
        }
    }
        public void Execute(Player player, string[] args)
        {
            var Arenas     = new List <BattleArenaMap>();
            var ArenaTexts = new List <string>();

            ArenaTexts.Add("");

            foreach (var w in RealmManager.Worlds)
            {
                var world = w.Value;
                if (w.Value.Name == "Battle Arena" && w.Value.Players.Count > 0 ||
                    w.Value.Name == "Free Battle Arena" && w.Value.Players.Count > 0)
                {
                    Arenas.Add(w.Value as BattleArenaMap);
                }
            }
            if (Arenas.Count > 0)
            {
                foreach (var w in Arenas)
                {
                    var ctext   = "Wave " + w.Wave + " - {0} {1}";
                    var players = new List <string>();
                    var solo    = 0;
                    foreach (var p in w.Players)
                    {
                        players.Add(p.Value.Name);
                        if (PlayerDataList.GetData(p.Value.Client.Account.Name).Solo)
                        {
                            solo++;
                        }
                    }
                    if (players.Count > 0)
                    {
                        ArenaTexts.Add(string.Format(ctext, string.Join(", ", players.ToArray()),
                                                     solo == players.Count ? " (SOLO)" : ""));
                    }
                }
            }

            if (ArenaTexts.Count == 1)
            {
                ArenaTexts.Add("None");
            }

            //player.SendInfo(string.Join("\n", ArenaTexts.ToArray()));

            player.Client.SendPacket(new TextBoxPacket
            {
                Title   = "Current Arenas:",
                Message = string.Join("\n", ArenaTexts.ToArray()),
                Button1 = "Ok"
            });
        }
示例#5
0
 // Start is called before the first frame update
 void OnEnable()
 {
     _loadButton.interactable  = false;
     _startButton.interactable = false;
     if (PlayerSaveManager.HasData())
     {
         _playerList = PlayerSaveManager.GetData();
         PopulateProfiles();
     }
     else
     {
         _playerList = new PlayerDataList();
     }
 }
        public void Execute(Player player, string[] args)
        {
            GlobalPlayerData PlayerData = PlayerDataList.GetData(player.Client.Account.Name);

            if (PlayerData.Solo)
            {
                PlayerData.Solo = false;
                player.SendInfo("Solo disabled! People can now join you!");
            }
            else
            {
                PlayerData.Solo = true;
                player.SendInfo("Solo enabled! People can no longer join you!");
            }
        }
示例#7
0
    public static void SavePlayer(PlayerData data)
    {
        if (PlayerPrefs.HasKey("BestScore"))
        {
            try
            {
                string         json         = PlayerPrefs.GetString("BestScore");
                PlayerDataList dataFromFile = JsonUtility.FromJson <PlayerDataList>(json);

                dataFromFile.players.Add(data);

                dataFromFile.players.Sort();

                if (dataFromFile.players.Count > 10)
                {
                    dataFromFile.players.RemoveAt(dataFromFile.players.Count - 1);
                }



                json = JsonUtility.ToJson(dataFromFile);
                PlayerPrefs.SetString("BestScore", json);
                PlayerPrefs.Save();
            }
            catch (Exception ex)
            {
                Debug.Log(ex.Message);
                Debug.Log("Miss file for saving");
            }
        }
        else
        {
            //FileStream stream = new FileStream(path, FileMode.Create);
            List <PlayerData> list = new List <PlayerData>();
            list.Add(data);

            PlayerDataList playerDataList = new PlayerDataList(list);
            string         json           = JsonUtility.ToJson(playerDataList);
            PlayerPrefs.SetString("BestScore", json);
            PlayerPrefs.Save();

            //PlayerDataList dataFromFile = new PlayerDataList(list);
            //formatter.Serialize(stream, dataFromFile);

            //stream.Close();
        }
    }
示例#8
0
    public void GetScore(Team team, int score)
    {
        if (IsTestMode)
        {
            return;
        }

        var findPlayer = PlayerDataList.Find(v => v.team == team);

        findPlayer?.GetScore(score);

        //전 라운드의 후공 플레이어
        var pevLastPlayer = PlayerDataList
                            .Find(v => v.order == (PlayerDataList.Count - 1));

        var firstTeam = Team.NONE;
        var winTeam   = Team.NONE;

        //후공 플레이어가 점수를 획득했다면
        if (findPlayer != null &&
            pevLastPlayer.index == findPlayer.index)
        {
            //역순으로 정렬
            PlayerDataList.Sort((x, y) =>
            {
                return(y.order.CompareTo(x.order));
            });

            firstTeam = PlayerDataList.First().team;

            //전 라운드 순서의 역순으로 인큐
            for (int i = 0; i < PlayerDataList.Count; i++)
            {
                PlayerDataList[i].order = i;
                PlayerDataList[i].UseIndexList.Clear();
                EnqueuePlayerSequenceQueue(PlayerDataList[i]);
            }
        }
        //후공 플레이어가 점수를 획득하지 못했다면
        else
        {
            //전판 순서 그대로 정렬
            PlayerDataList.Sort((x, y) =>
            {
                return(x.order.CompareTo(y.order));
            });

            firstTeam = PlayerDataList.First().team;

            //전 라운드 순서로 인큐
            for (int i = 0; i < PlayerDataList.Count; i++)
            {
                PlayerDataList[i].order = i;
                PlayerDataList[i].UseIndexList.Clear();
                EnqueuePlayerSequenceQueue(PlayerDataList[i]);
            }
        }

        SetCameraToHousePos();

        CurRound += 1;
        if (CurRound > ROUND_COUNT)
        {
            //게임 종료
            IsGameEnd = true;

            winTeam = Player1.Score > Player2.Score ? Team.PLAYER1 : Team.PLAYER2;

            curCoroutine = StartCoroutine(NextRoundWait(
                                              (scoreUI) => scoreUI.SetWinLoseRoot(winTeam == Player1.team),
                                              () =>
            {
                RemoveAllData();
                None();

                var selectUI = UIManager.Instance.IsUIOpened <GameMainUI>();
                if (selectUI != null)
                {
                    selectUI.Close();
                }

                UIManager.Instance.Get <MainMenuUI>();

                curCoroutine = null;
            }));
        }
        else
        {
            curCoroutine = StartCoroutine(NextRoundWait(
                                              (scoreUI) => scoreUI.SetFirstAttackRoot(firstTeam == Player1.team),
                                              () =>
            {
                RemoveAllData();
                NextSequencePlayerStart();

                curCoroutine = null;
            }));
        }
    }
 public void Execute(Player player, string[] args)
 {
     try
     {
         GlobalPlayerData PlayerData = PlayerDataList.GetData(player.Client.Account.Name);
         if (args.Length > 0)
         {
             string subcommand = args[0];
             if (subcommand == "list")
             {
                 string glist = "Players in your group: ";
                 foreach (var i in PlayerData.JGroup)
                 {
                     if (glist != "Players in your group: ")
                     {
                         glist = glist + ", " + i;
                     }
                     else
                     {
                         glist = glist + i;
                     }
                 }
                 player.SendInfo(glist);
             }
             else if (subcommand == "add" && args.Length > 1)
             {
                 foreach (var i in PlayerData.JGroup)
                 {
                     if (i.Value == args[1].ToLower())
                     {
                         player.SendInfo("Player already added!");
                         return;
                     }
                 }
                 PlayerData.JGroup.TryAdd(PlayerData.JGroup.Count, args[1].ToLower());
                 player.SendInfo("Added " + args[1] + "!");
             }
             else if (subcommand == "del" && args.Length > 1)
             {
                 int remc = 0;
                 foreach (var i in PlayerData.JGroup)
                 {
                     if (i.Value == args[1].ToLower())
                     {
                         string absolutelynothingdisregardthis;
                         player.SendInfo("Removed player " + i.Value + "!");
                         remc++;
                         PlayerData.JGroup.TryRemove(i.Key, out absolutelynothingdisregardthis);
                     }
                 }
                 if (remc < 1)
                 {
                     player.SendInfo("Player not found!");
                 }
             }
         }
         else
         {
             if (PlayerData.UsingGroup)
             {
                 PlayerData.UsingGroup = false;
                 player.SendInfo("Group-only join disabled!");
             }
             else
             {
                 PlayerData.UsingGroup = true;
                 player.SendInfo("Group-only join enabled!");
             }
         }
     }
     catch
     {
         player.SendInfo("Unexpected error in command!");
     }
 }
        public void Execute(Player player, string[] args)
        {
            string name = string.Join(" ", args.ToArray()).Trim();

            try
            {
                GlobalPlayerData PlayerData = PlayerDataList.GetData(player.Client.Account.Name);
                foreach (var w in RealmManager.Worlds)
                {
                    World world = w.Value;
                    if (w.Key != 0)
                    {
                        foreach (var i in world.Players)
                        {
                            if (i.Value.Client.Account.Name.ToLower() == name.ToLower())
                            {
                                GlobalPlayerData iPlayerData = PlayerDataList.GetData(i.Value.Client.Account.Name);
                                if (!(player.Client.Account.Rank > 2))
                                {
                                    if (world.Name != "Vault")
                                    {
                                        if (world.Name != "Guild Hall")
                                        {
                                            TryJoin(player, iPlayerData, world, i.Value); return;
                                        }
                                        else
                                        {
                                            if ((world as GuildHall).Guild == player.Guild)
                                            {
                                                TryJoin(player, iPlayerData, world, i.Value); return;
                                            }
                                            else
                                            {
                                                player.SendInfo("Player is in " + i.Value.Guild + "'s guild hall!");
                                                return;
                                            }
                                        }
                                    }
                                    else
                                    {
                                        if (world.Name == "Vault")
                                        {
                                            player.SendInfo("Player is in Vault!");
                                            return;
                                        }
                                        else if (world.Name == "Guild Hall")
                                        {
                                            player.SendInfo("Player is in Guild Hall!");
                                            return;
                                        }
                                        else
                                        {
                                            if (!iPlayerData.UsingGroup)
                                            {
                                                player.Client.Reconnect(new ReconnectPacket()
                                                {
                                                    Host   = "",
                                                    Port   = 2050,
                                                    GameId = world.Id,
                                                    Name   = i.Value.Name + "'s Vault",
                                                    Key    = Empty <byte> .Array,
                                                });
                                                return;
                                            }
                                            else
                                            {
                                                foreach (var o in iPlayerData.JGroup)
                                                {
                                                    if (o.Value == player.Client.Account.Name.ToLower())
                                                    {
                                                        player.Client.Reconnect(new ReconnectPacket()
                                                        {
                                                            Host   = "",
                                                            Port   = 2050,
                                                            GameId = world.Id,
                                                            Name   = i.Value.Name + "'s Vault",
                                                            Key    = Empty <byte> .Array,
                                                        });
                                                        return;
                                                    }
                                                }
                                                player.SendInfo("Not in " + i.Value.Client.Account.Name + "'s group!");
                                                return;
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    player.Client.Reconnect(new ReconnectPacket()
                                    {
                                        Host   = "",
                                        Port   = 2050,
                                        GameId = world.Id,
                                        Name   = i.Value.Owner.Name,
                                        Key    = Empty <byte> .Array,
                                    });
                                    return;
                                }
                            }
                        }
                    }
                }
                player.SendHelp("Use /visit <playername>");
            }
            catch
            {
                player.SendInfo("Unexpected error in command!");
            }
        }