Exemple #1
0
    public void TargetMail_SearchResults(NetworkConnection target, string searchResults)
    {
        if (mail == null)
        {
            mail = FindObjectOfType <UCE_UI_SendMail>();
        }

        List <MailSearch> results = new List <MailSearch>();

        if (!string.IsNullOrEmpty(searchResults))
        {
            string[] tmp = searchResults.Split('&');

            for (int i = 0; i < tmp.Length; i++)
            {
                string[] tmp2 = tmp[i].Split('|');

                MailSearch res = new MailSearch();
                res.name = tmp2[0];
                int.TryParse(tmp2[1], out res.level);
                res.guild = tmp2[2];
                results.Add(res);
            }
        }

        if (mail != null)
        {
            mail.UpdateSearchResults(results);
        }
    }
Exemple #2
0
    // -----------------------------------------------------------------------------------
    //
    // -----------------------------------------------------------------------------------
    public List <MailSearch> Mail_SearchForCharacter(string name, string selfPlayer)
    {
        List <MailSearch> result = new List <MailSearch>();

        var table = connection.Query <characters>($@"SELECT `name`, level FROM characters
										LEFT JOIN character_guild
											ON character=name
									WHERE name LIKE '%' || '{name}' || '%'
										AND name <> '{selfPlayer} '
									ORDER BY
										CASE
											WHEN name='{name}' THEN 0
											ELSE INSTR(LOWER(name), LOWER('{name}'))
										END, name
									LIMIT 30"                                    );

        foreach (var row in table)
        {
            MailSearch res = new MailSearch();
            res.name  = row.name;
            res.level = row.level;
            res.guild = "";

            result.Add(res);
        }

        return(result);
    }
    // -----------------------------------------------------------------------------------
    //
    // -----------------------------------------------------------------------------------
    public List <MailSearch> Mail_SearchForCharacter(string name, string selfPlayer)
    {
        List <MailSearch> result = new List <MailSearch>();

#if _MYSQL && _SERVER
        var table = ExecuteReaderMySql(@"SELECT `name` , level FROM `characters` WHERE name=@search", new MySqlParameter("@search", name));

        foreach (var row in table)
        {
            MailSearch res = new MailSearch();
            res.name  = (string)row[0];
            res.level = Convert.ToInt32((int)row[1]);
            res.guild = "";

            result.Add(res);
        }
#elif _SQLITE && _SERVER
        /**
         * Order by here is setup in such a way that:
         *		exact matches appear first
         *		followed by names where the search string is closer to the front of the name
         */
        var table = connection.Query <characters>(string.Concat(@"SELECT `name`, level
                                                            FROM characters
                                                            LEFT JOIN character_guild
                                                            ON character=name
                                                            WHERE name
                                                                LIKE '%' || ? || '%' " +
                                                                "AND name <> ? " +
                                                                "ORDER BY CASE " +
                                                                "WHEN name=? " +
                                                                "THEN 0 " +
                                                                "   ELSE INSTR(LOWER(name), LOWER(?)) " +
                                                                "END, name LIMIT 30", name, selfPlayer, name, name));

        foreach (var row in table)
        {
            MailSearch res = new MailSearch();
            res.name  = row.name;
            res.level = row.level;
            res.guild = "";

            result.Add(res);
        }
#endif

        return(result);
    }
Exemple #4
0
    // -----------------------------------------------------------------------------------
    //
    // -----------------------------------------------------------------------------------
    public List <MailSearch> Mail_SearchForCharacter(string name, string selfPlayer)
    {
        List <MailSearch> result = new List <MailSearch>();

#if _MYSQL
        var table = ExecuteReaderMySql(@"SELECT `name` , level FROM `characters` WHERE name=@search", new MySqlParameter("@search", name));

        foreach (var row in table)
        {
            MailSearch res = new MailSearch();
            res.name  = (string)row[0];
            res.level = Convert.ToInt32((int)row[1]);
            res.guild = "";

            result.Add(res);
        }
#elif _SQLITE
        /**
         * Order by here is setup in such a way that:
         *		exact matches appear first
         *		followed by names where the search string is closer to the front of the name
         */
        var table = ExecuteReader(@"SELECT `name`, level FROM characters
										LEFT JOIN character_guild
											ON character=name
									WHERE name LIKE '%' || @search || '%'
										AND name <> @self
									ORDER BY
										CASE
											WHEN name=@search THEN 0
											ELSE INSTR(LOWER(name), LOWER(@search))
										END, name
									LIMIT 30"                                    , new SqliteParameter("@search", name), new SqliteParameter("@self", selfPlayer));

        foreach (var row in table)
        {
            MailSearch res = new MailSearch();
            res.name  = (string)row[0];
            res.level = Convert.ToInt32((long)row[1]);
            res.guild = "";

            result.Add(res);
        }
#endif

        return(result);
    }