Ignore:
Timestamp:
Jul 28, 2023, 8:42:10 PM (16 months ago)
Author:
alloc
Message:

24_29_43
Switched over to vanilla Web infrastructure

File:
1 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/MapRendering/API.cs

    r420 r454  
    1 using AllocsFixes.NetConnections.Servers.Web;
    2 using AllocsFixes.NetConnections.Servers.Web.Handlers;
     1using System;
     2using System.IO;
     3using Webserver;
     4using Webserver.FileCache;
     5using Webserver.UrlHandlers;
    36
    47namespace AllocsFixes {
    58        public class API : IModApi {
    6                 private Web webInstance;
     9                private Mod modInstance;
    710               
    811                public void InitMod (Mod _modInstance) {
    9                         ModEvents.GameStartDone.RegisterHandler (GameStartDone);
    10                         ModEvents.GameShutdown.RegisterHandler (GameShutdown);
     12                        modInstance = _modInstance;
     13
     14                        Web.ServerInitialized += _web => {
     15                                try {
     16                                        const string legacyModUrl = "/legacymap";
     17                                        const string legacyFilesFoldername = "webserver_legacy";
     18                                        string legacyFilePath = $"{modInstance.Path}/{legacyFilesFoldername}";
     19                               
     20                                        if (!Directory.Exists (legacyFilePath)) {
     21                                                Log.Out ($"Legacy webmod feature not started (folder \"{legacyFilesFoldername}\" not found in Allocs_WebAndMapRendering mod folder)");
     22                                                return;
     23                                        }
     24
     25                                        // TODO: Read from config
     26                                        bool useStaticCache = false;
     27
     28                                        _web.RegisterPathHandler ("/legacymap.htm", new SimpleRedirectHandler ($"{legacyModUrl}/index.html"));
     29                                        _web.RegisterPathHandler ($"{legacyModUrl}/", new StaticHandler (legacyFilePath, useStaticCache ? (AbstractCache) new SimpleCache () : new DirectAccess (), false));
     30
     31                                        int webPort = GamePrefs.GetInt (EnumUtils.Parse<EnumGamePrefs> (nameof (EnumGamePrefs.WebDashboardPort)));
     32                                        Log.Out ($"Started legacy webmod feature on port {webPort}, local adress {legacyModUrl}");
     33                                } catch (Exception e) {
     34                                        Log.Out ("Error in Web.ctor: " + e);
     35                                }
     36                        };
    1137                }
    1238
    13                 private void GameStartDone () {
    14                         // ReSharper disable once ObjectCreationAsStatement
    15                         if (!ConnectionManager.Instance.IsServer) {
    16                                 return;
    17                         }
    18                        
    19                         webInstance = new Web ();
    20                         LogBuffer.Init ();
     39                // public static void SetResponseTextContent (HttpListenerResponse _context.Response, string _text) {
     40                //      byte[] buf = Encoding.UTF8.GetBytes (_text);
     41                //      _context.Response.ContentLength64 = buf.Length;
     42                //      _context.Response.ContentType = "text/html";
     43                //      _context.Response.ContentEncoding = Encoding.UTF8;
     44                //      _context.Response.OutputStream.Write (buf, 0, buf.Length);
     45                // }
    2146
    22                         if (ItemIconHandler.Instance != null) {
    23                                 ItemIconHandler.Instance.LoadIcons ();
    24                         }
    25                 }
    26 
    27                 private void GameShutdown () {
    28                         webInstance?.Shutdown ();
    29                 }
     47               
    3048        }
    3149}
Note: See TracChangeset for help on using the changeset viewer.