示例#1
0
 public void UpdateThumbnails()
 {
     for (int i = 0; i < serversOnListCount; i++)
     {
         ServerOnList server = serversOnList[i];
         if (server == null)
         {
             continue;
         }
         if (server.thumbnailFetched)
         {
             //Thumbnail already loaded
             continue;
         }
         if (!server.thumbnailDownloading)
         {
             //Not started downloading yet
             thumbResponses[i] = new ThumbnailResponseCi();
             menu.p.ThumbnailDownloadAsync(server.ip, server.port, thumbResponses[i]);
             server.thumbnailDownloading = true;
         }
         else
         {
             //Download in progress
             if (thumbResponses[i] != null)
             {
                 if (thumbResponses[i].done)
                 {
                     //Request completed. load received bitmap
                     BitmapCi bmp = menu.p.BitmapCreateFromPng(thumbResponses[i].data, thumbResponses[i].dataLength);
                     if (bmp != null)
                     {
                         int texture = menu.p.LoadTextureFromBitmap(bmp);
                         menu.textures.Set(menu.p.StringFormat("serverlist_entry_{0}.png", server.hash), texture);
                         menu.p.BitmapDelete(bmp);
                     }
                     server.thumbnailDownloading = false;
                     server.thumbnailFetched     = true;
                 }
                 if (thumbResponses[i].error)
                 {
                     //Error while trying to download thumbnail
                     server.thumbnailDownloading = false;
                     server.thumbnailError       = true;
                     server.thumbnailFetched     = true;
                 }
             }
             else
             {
                 //An error occured. stop trying
                 server.thumbnailDownloading = false;
                 server.thumbnailError       = true;
                 server.thumbnailFetched     = true;
             }
         }
     }
 }
示例#2
0
    public ScreenMultiplayer()
    {
        WidgetCount            = 64 + serverButtonsCount;
        widgets                = new MenuWidget[WidgetCount];
        back                   = new MenuWidget();
        back.text              = "Back";
        back.type              = WidgetType.Button;
        back.nextWidget        = 1;
        connect                = new MenuWidget();
        connect.text           = "Connect";
        connect.type           = WidgetType.Button;
        connect.nextWidget     = 3;
        connectToIp            = new MenuWidget();
        connectToIp.text       = "Connect to IP";
        connectToIp.type       = WidgetType.Button;
        connectToIp.nextWidget = 2;
        refresh                = new MenuWidget();
        refresh.text           = "Refresh";
        refresh.type           = WidgetType.Button;
        refresh.nextWidget     = 0;

        page                 = 0;
        pageUp               = new MenuWidget();
        pageUp.text          = "";
        pageUp.type          = WidgetType.Button;
        pageUp.buttonStyle   = ButtonStyle.Text;
        pageUp.visible       = false;
        pageDown             = new MenuWidget();
        pageDown.text        = "";
        pageDown.type        = WidgetType.Button;
        pageDown.buttonStyle = ButtonStyle.Text;
        pageDown.visible     = false;

        loggedInName             = new MenuWidget();
        loggedInName.text        = "";
        loggedInName.type        = WidgetType.Button;
        loggedInName.buttonStyle = ButtonStyle.Text;

        logout      = new MenuWidget();
        logout.text = "";
        logout.type = WidgetType.Button;
        //logout.image = "serverlist_entry_background.png";
        logout.buttonStyle = ButtonStyle.Button;

        title = "Multiplayer";

        fontServerHeading       = new FontCi();
        fontServerHeading.style = 1;
        fontServerHeading.size  = 14;
        fontServerDescription   = new FontCi();
        fontDefault             = new FontCi();
        fontDefault.size        = 14;

        widgets[0] = back;
        widgets[1] = connect;
        widgets[2] = refresh;
        widgets[3] = connectToIp;
        widgets[4] = pageUp;
        widgets[5] = pageDown;
        widgets[6] = loggedInName;
        widgets[7] = logout;

        serverListAddress = new HttpResponseCi();
        serverListCsv     = new HttpResponseCi();
        serversOnList     = new ServerOnList[serversOnListCount];
        thumbResponses    = new ThumbnailResponseCi[serversOnListCount];

        serverButtons = new MenuWidget[serverButtonsCount];
        for (int i = 0; i < serverButtonsCount; i++)
        {
            MenuWidget b = new MenuWidget();
            b                = new MenuWidget();
            b.text           = "Invalid";
            b.type           = WidgetType.Button;
            b.visible        = false;
            b.image          = "serverlist_entry_noimage.png";
            serverButtons[i] = b;
            widgets[8 + i]   = b;
        }
        loading = true;
    }
示例#3
0
 public abstract void ThumbnailDownloadAsync(string ip, int port, ThumbnailResponseCi response);
示例#4
0
 public abstract void ThumbnailDownloadAsync(string ip, int port, ThumbnailResponseCi response);
示例#5
0
 public void UpdateThumbnails()
 {
     for (int i = 0; i < serversOnListCount; i++)
     {
         ServerOnList server = serversOnList[i];
         if (server == null)
         {
             continue;
         }
         if (server.thumbnailFetched)
         {
             //Thumbnail already loaded
             continue;
         }
         if (!server.thumbnailDownloading)
         {
             //Not started downloading yet
             thumbResponses[i] = new ThumbnailResponseCi();
             menu.p.ThumbnailDownloadAsync(server.ip, server.port, thumbResponses[i]);
             server.thumbnailDownloading = true;
         }
         else
         {
             //Download in progress
             if (thumbResponses[i] != null)
             {
                 if (thumbResponses[i].done)
                 {
                     //Request completed. load received bitmap
                     BitmapCi bmp = menu.p.BitmapCreateFromPng(thumbResponses[i].data, thumbResponses[i].dataLength);
                     if (bmp != null)
                     {
                         int texture = menu.p.LoadTextureFromBitmap(bmp);
                         menu.textures.Set(menu.p.StringFormat("serverlist_entry_{0}.png", server.hash), texture);
                         menu.p.BitmapDelete(bmp);
                     }
                     server.thumbnailDownloading = false;
                     server.thumbnailFetched = true;
                 }
                 if (thumbResponses[i].error)
                 {
                     //Error while trying to download thumbnail
                     server.thumbnailDownloading = false;
                     server.thumbnailError = true;
                     server.thumbnailFetched = true;
                 }
             }
             else
             {
                 //An error occured. stop trying
                 server.thumbnailDownloading = false;
                 server.thumbnailError = true;
                 server.thumbnailFetched = true;
             }
         }
     }
 }
示例#6
0
 public override void ThumbnailDownloadAsync(string ip, int port, ThumbnailResponseCi response)
 {
     ThumbnailDownloadArgs args = new ThumbnailDownloadArgs();
     args.ip = ip;
     args.port = port;
     args.response = response;
     ThreadPool.QueueUserWorkItem(DownloadServerThumbnail, args);
 }