//-----------------------------------------------------------------------------------------------------------------
    protected void Play(E_MPGameType gameType, string[] otherPlayers)
    {
        m_GameType     = gameType;
        m_OtherPlayers = otherPlayers.Length > 0 ? otherPlayers : null;

        Play();
    }
Beispiel #2
0
    E_MPGameType GetGameWithXpBonus()
    {
        PlayerPersistantInfo ppi = PPIManager.Instance.GetLocalPPI();

        if (ppi == null)
        {
            return(E_MPGameType.None);
        }

        int rank = ppi.Rank;

        for (E_MPGameType gameType = E_MPGameType.DeathMatch; gameType < E_MPGameType.None; ++gameType)
        {
            GameTypeInfo gameInfo = GameInfoSettings.GetGameInfo(gameType);
            if (gameInfo == null)
            {
                continue;
            }
            if (gameInfo.MinimalDesiredRankToPlay > rank)
            {
                continue;
            }
            if (ppi.IsFirstGameToday(gameType) == false)
            {
                continue;
            }

            return(gameType);
        }

        return(E_MPGameType.None);
    }
Beispiel #3
0
    public static void Load(string json)
    {
        JsonData data;

        try
        {
            data = JsonMapper.ToObject(json);
        }
        catch
        {
            data = new JsonData();
        }

        for (E_MPGameType gameType = E_MPGameType.DeathMatch; gameType < E_MPGameType.None; ++gameType)
        {
            string       gameTypeName = GameInfo.GetGameTypeName(gameType);
            GameTypeInfo gameInfo     = null;

            if (data.IsObject == true && data.HasValue(gameTypeName) == true)
            {
                JsonData gameData = data[gameTypeName];

                switch (gameType)
                {
                case E_MPGameType.DeathMatch:
                    gameInfo = JsonMapper.ToObject <DeathMatchInfo>(gameData.ToJson());
                    break;

                case E_MPGameType.ZoneControl:
                    gameInfo = JsonMapper.ToObject <ZoneControlInfo>(gameData.ToJson());
                    break;

                default:
                    throw new System.ArgumentOutOfRangeException("GameInfoSettings.Load() - unknown GameType '" + gameType + "'");
                }
            }
            else
            {
                switch (gameType)
                {
                case E_MPGameType.DeathMatch:
                    gameInfo = new DeathMatchInfo();
                    break;

                case E_MPGameType.ZoneControl:
                    gameInfo = new ZoneControlInfo();
                    break;

                default:
                    throw new System.ArgumentOutOfRangeException("GameInfoSettings.Load() - unknown GameType '" + gameType + "'");
                }
            }

#if IGNORE_DESIRED_RANK_TO_PLAY
            gameInfo.MinimalDesiredRankToPlay = 1;
#endif

            m_GameInfos[(int)gameType] = gameInfo;
        }
    }
    //-----------------------------------------------------------------------------------------------------------------
    protected void Play(E_MPGameType gameType)
    {
        m_GameType     = gameType;
        m_OtherPlayers = null;

        Play();
    }
Beispiel #5
0
    //public int        GetSuicides()       { int    value = 0; Array.ForEach(Games, (data) => { value += data.Suicides;    }); return value; }

    public GameData GetGameData(E_MPGameType gameType)
    {
        if ((int)gameType >= Games.Length)
        {
            return(default(GameData));
        }
        return(Games[(int)gameType]);
    }
Beispiel #6
0
 public static GameTypeInfo GetGameInfo(E_MPGameType gameType)
 {
     if (gameType == E_MPGameType.None)
     {
         return(default(GameTypeInfo));
     }
     return(m_GameInfos[(int)gameType] ?? default(GameTypeInfo));
 }
Beispiel #7
0
    public static string Save()
    {
        JsonData data = new JsonData(JsonType.Object);

        for (E_MPGameType gameType = E_MPGameType.DeathMatch; gameType < E_MPGameType.None; ++gameType)
        {
            string gameTypeName = GameInfo.GetGameTypeName(gameType);
            data[gameTypeName] = JsonMapper.ToObject(JsonMapper.ToJson(m_GameInfos[(int)gameType]));
        }

        return(data.ToJson());
    }
Beispiel #8
0
    public static string GetGameTypeName(E_MPGameType gameType)
    {
        switch (gameType)
        {
        case E_MPGameType.ZoneControl:
            return("ZC");

        case E_MPGameType.DeathMatch:
            return("DM");

        default:
            throw new System.ArgumentOutOfRangeException("GameInfo.GetGameTypeName() - unknown GameType '" + gameType + "'");
        }
    }
Beispiel #9
0
    public void PrepareForGame(E_MPGameType type, bool randomMap = false)
    {
        GameType = type;

        if (type == E_MPGameType.DeathMatch)
        {
            GameSetup = DeathMatchSetup;
        }
        else if (type == E_MPGameType.ZoneControl)
        {
            GameSetup = ZoneControlSetup;
        }

        CurrentLevelIndex = 0;
        int validIndex = 0;

        if (randomMap)
        {
            int validCount = 0;

            for (int i = 0; i < GameSetup.MPLevels.Count; ++i)
            {
                if (GameSetup.MPLevels[i].Disabled == false)
                {
                    validCount++;
                }
            }

            System.Random random = new System.Random(System.Environment.TickCount + System.Diagnostics.Process.GetCurrentProcess().Id);
            validIndex = random.Next(validCount);
        }

        // Find first non-disabled level
        for (int i = 0; i < GameSetup.MPLevels.Count; ++i)
        {
            if (GameSetup.MPLevels[i].Disabled == false)
            {
                if (validIndex == 0)
                {
                    CurrentLevelIndex = i;
                    break;
                }

                validIndex--;
            }
        }
    }
Beispiel #10
0
 protected void UpdateGameInfoDM(E_MPGameType type,
                                 int KillsLimit,
                                 float TimeLimit,
                                 int RoundPerLevel,
                                 string levelName,
                                 int round,
                                 float spawnTimeProtection)
 {
     Printf("updating game info");
     GameState.GameType            = type;
     GameState.DMInfo.KillsLimit   = KillsLimit;
     GameState.DMInfo.TimeLimit    = TimeLimit;
     GameState.RoundPerLevel       = RoundPerLevel;
     GameState.LevelName           = levelName;
     GameState.Round               = round;
     GameState.SpawnTimeProtection = spawnTimeProtection;
 }
Beispiel #11
0
 protected void UpdateGameInfoZC(E_MPGameType type,
                                 int GoodTickets,
                                 int BadTickets,
                                 int RoundPerLevel,
                                 string levelName,
                                 int round,
                                 float spawnTimeProtection)
 {
     Printf("updating game info");
     GameState.GameType = type;
     GameState.ZCInfo.TeamScore[E_Team.Bad]  = BadTickets;
     GameState.ZCInfo.TeamScore[E_Team.Good] = GoodTickets;
     GameState.RoundPerLevel       = RoundPerLevel;
     GameState.LevelName           = levelName;
     GameState.Round               = round;
     GameState.SpawnTimeProtection = spawnTimeProtection;
 }
Beispiel #12
0
    public void Read(BitStream stream)
    {
        GameType    = stream.Read <E_MPGameType>();
        Team        = stream.Read <E_Team>();
        Winner      = stream.ReadBoolean();
        Place       = stream.ReadChar();
        Experience  = stream.ReadInt16();
        Money       = stream.ReadInt16();
        Gold        = stream.ReadInt16();
        NewRank     = stream.ReadBoolean();
        MissionExp  = stream.ReadInt16();
        MissioMoney = stream.ReadInt16();
        FirstRound  = stream.ReadBoolean();

        PlayersScore.Clear();
        PlayersScore.InsertRange(0, stream.Read <PlayerResult[]>());
    }
Beispiel #13
0
    void OnRefreshReceived(string inPrimaryKey, string messageId, string messageText)
    {
        //Debug.Log(">>>> REFRESH: "+messageText);

        JsonData data = JsonMapper.ToObject(messageText);

        int gametype;

        if (int.TryParse(data["gametype"].ToString(), out gametype) == true)
        {
            m_Gametype = (E_MPGameType)gametype;
        }
        else
        {
            m_Gametype = E_MPGameType.DeathMatch;
        }

        JsonData friends = data["friends"];

        m_Friends = new FriendInfo[friends.Count - 1];
        int idx = 0;

        for (int i = 0; i < friends.Count; i++)
        {
            JsonData item = friends[i];

            string primaryKey = (string)item["primaryKey"];
            if (primaryKey == m_PrimaryKey)
            {
                continue;
            }

            m_Friends[idx] = new FriendInfo()
            {
                PrimaryKey = primaryKey,
                Nickname   = (string)item["nickname"],
                Rank       = (int)item["rank"],
                IsReady    = (bool)item["status"]
            };

            idx++;
        }

        SetDirty();
    }
Beispiel #14
0
    void OnPlayPressed(E_MPGameType gameType)
    {
        Game.Settings.SetInt("Gametype", m_GametypeRoller.Selection);

        List <string> friends = new List <string>();

        for (int idx = 0; idx < LobbyGang.Friends.Length; ++idx)
        {
            LobbyGang.FriendInfo friend = GetFriend(idx);
            if (friend == null)
            {
                continue;
            }
            if (friend.IsReady == false)
            {
                continue;
            }

            friends.Add(friend.PrimaryKey);
        }

        Play(gameType, friends.ToArray());
    }
Beispiel #15
0
    public bool IsFirstGameToday(E_MPGameType gameType)
    {
        DateTime date = GuiBaseUtils.EpochToDate(PlayerData.Stats.GetGameData(gameType).LastFinishedGameDate);

        return((CloudDateTime.UtcNow.Date - date.Date).TotalDays > 0 ? true : false);
    }
Beispiel #16
0
    // HANDLERS

    void OnPlayPressed(E_MPGameType gameType)
    {
        Play(gameType);
    }
Beispiel #17
0
    void ScheduleNotifications()
    {
        if (CloudUser.instance.isUserAuthenticated == false)
        {
            return;
        }

        DateTime now   = CloudDateTime.UtcNow;
        DateTime today = now.Date;

        // 2xXP bonus or conditional reward notification
        DateTime     date     = now.AddHours(1);
        E_MPGameType gameType = GetGameWithXpBonus();

        switch (gameType)
        {
        case E_MPGameType.DeathMatch:
            SheduleNotification(NotifyId.DeathMatch2xXP, TextDatabase.instance[00507000], date);
            break;

        case E_MPGameType.ZoneControl:
            SheduleNotification(NotifyId.ZoneControl2xXP, TextDatabase.instance[00507001], date);
            break;

        default:
            string text;
            if (GetConditionalRewardText(now, out text) == true)
            {
                SheduleNotification(NotifyId.ConditionalReward, text, date);
            }
            break;
        }

        // daily reward notification
        date = today.AddDays(1);
        SheduleNotification(NotifyId.InstantReward, TextDatabase.instance[00507002], date);

        // level up notification
        date = today.AddDays(2);
        if (Random.Range(0, 100) > 50)
        {
            SheduleNotification(NotifyId.DeathMatch, TextDatabase.instance[00507003], date);
        }
        else
        {
            SheduleNotification(NotifyId.ZoneControl, TextDatabase.instance[00507004], date);
        }

        // play with friends notification
        if (GameCloudManager.friendList.friends.Count > 0)
        {
            date = today.AddDays(4);
            if (Random.Range(0, 100) > 50)
            {
                SheduleNotification(NotifyId.DeathMatchFriends, TextDatabase.instance[00507005], date);
            }
            else
            {
                SheduleNotification(NotifyId.ZoneControlFriends, TextDatabase.instance[00507006], date);
            }
        }
    }