コード例 #1
0
 public HFTArgChecker(HFTLog log, string prefix)
 {
     log_        = log;
     prefix_     = prefix + "-";
     dashPrefix_ = "--" + prefix;
     noPrefix_   = "--no-" + prefix;
 }
コード例 #2
0
 public Informer(HFTLog log, SharedState sharedState, string url, string domain)
 {
     sharedState_ = sharedState;
     log_         = log;
     url_         = url;
     domain_      = domain;
 }
コード例 #3
0
 /**
  * Represents a group of games.
  *
  * Normally a group only has 1 game but
  * for situations where we need more than
  * 1 game ...
  *
  */
 public HFTGameGroup(string gameId, HFTGameManager relayServer)
 {
     log_    = new HFTLog("HFTGameGroup[" + gameId + "]");
     gameId_ = gameId;
     //this.runtimeInfo = gameDB.getGameById(gameId);
     relayServer_ = relayServer;
 }
コード例 #4
0
        public HFTGame(string id, HFTGameGroup group, HFTRuntimeOptions options)
        {
            id_        = id;
            gameGroup_ = group;
            options_   = options;

            SetGameId();

            log_ = new HFTLog("HFTGame[" + gameId_ + "]");
            log_.Info("created game");
        }
コード例 #5
0
ファイル: NetPlayer.cs プロジェクト: aaronyuen2/earthDefender
        public NetPlayer(GameServer server, string name)
        {
            m_server           = server;
            m_connected        = true;
            m_handlers         = new Dictionary <string, CmdEventHandler>();
            m_internalHandlers = new Dictionary <string, CmdEventHandler>();
            m_deserializer     = new Deserializer();
            m_log = new HFTLog("NetPlayer[" + name + "]");

            AddHandlers();
        }
        public delegate GameObject GetGameObject(int ndx); // un delegate est une variable a laquelle on assigne une fonction

        public HFTPlayerManager(GameServer server, GameObject gameObject, int maxPlayers, int timeoutForDisconnectedPlayerToReconnect, GetGameObject getGameObjectFn)
        {
            m_log           = new HFTLog("PlayerManager");
            m_maxPlayers    = maxPlayers;
            m_gameObject    = gameObject;
            m_getGameObject = getGameObjectFn;
            m_timeoutForDisconnectedPlayersToReconnect = timeoutForDisconnectedPlayerToReconnect;

            server.OnPlayerConnect += StartNewPlayer;

            ResetState();
        }
コード例 #7
0
        public HFTWebServer(HFTRuntimeOptions options, string[] addresses)
        {
            m_log            = new HFTLog("HFTWebServer");
            m_options        = options;
            m_gamePath       = "/";
            m_webServerUtils = new HFTWebServerUtils(m_gamePath);

            // Touch the HFTWebFileDB
            // We do this be because we want it to get the list
            // of files BEFORE run the server. The server will
            // run in a different thread and HFTWebFileDB will
            // not be able to populate its database from that thread.
            HFTWebFileDB.GetInstance();

            // FIX: sysname and gamename
            string sysName = Environment.MachineName;

            if (sysName.EndsWith(".local"))
            {
                sysName = sysName.Substring(0, sysName.Length - 6);
            }
            string gameName = m_options.name;
            string ping     = Serializer.Serialize(new HFTPing(sysName + ": " + gameName, "HappyFunTimes"));

            m_ping = System.Text.Encoding.UTF8.GetBytes(ping);
            m_log.Info("Ping: " + ping);

            m_liveSettingsStr = "define([], function() { return " + Serializer.Serialize(new LiveSettings()) + "; })\n";
            m_liveSettings    = System.Text.Encoding.UTF8.GetBytes(m_liveSettingsStr);

            if (options.captivePortal || options.installationMode)
            {
                m_captivePortalHandler = new HFTCaptivePortalHandler(m_webServerUtils);
                m_getRouter.Add(m_captivePortalHandler.HandleRequest);
            }

            m_getRouter.Add(HandleRoot);
            m_getRouter.Add(HandleLiveSettings);
            m_getRouter.Add(HandleFile);
            m_getRouter.Add(HandleMissingRoute);
            m_getRouter.Add(HandleNotFound);

            m_postCmdHandlers["happyFunTimesPingForGame"] = HandleCmdPingForGame;
            m_postCmdHandlers["happyFunTimesPing"]        = HandleCmdPing;
            m_postCmdHandlers["happyFunTimesRedir"]       = HandleCmdRedir;
            m_postCmdHandlers["time"] = HandleCmdTime;
            m_postCmdHandlers["quit"] = HandleCmdQuit;

            m_addresses = addresses;
        }
コード例 #8
0
        public void Init(Options options)
        {
            log_           = new HFTLog("HFTSite");
            options_       = options;
            rendezvousUri_ = new System.Uri(options_.rendezvousUrl);

            string[] ipv4Addresses = GetIPAddresses(DNS.Protocol.RecordType.A);
            string[] ipv6Addresses = GetIPAddresses(DNS.Protocol.RecordType.AAAA);
            informers_[0] = new Informer(log_, sharedState_, ipv4Addresses.Length > 0 ? MakeDirectUrl(ipv4Addresses[0]) : null, rendezvousUri_.Host);
            informers_[1] = new Informer(log_, sharedState_, ipv6Addresses.Length > 0 ? MakeDirectUrl(ipv6Addresses[0]) : null, rendezvousUri_.Host);

            checkCoroutine_ = CheckAddresses();
            StartCoroutine(checkCoroutine_);
        }
コード例 #9
0
ファイル: HFTPlayer.cs プロジェクト: aaronyuen2/earthDefender
        public HFTPlayer(HFTSocket client, HFTGameManager server, string id)
        {
            client_      = client;
            gameManager_ = server;
            id_          = id;

            log_ = new HFTLog("HFTPlayer[" + id + "]");
            log_.Info("start player");

            client.OnMessageEvent += HandleMessage;
            client.OnCloseEvent   += HandleDisconnect;

            RegisterCmdHandler <AddPlayerToGameMessage>("join", AddPlayerToGame);
            RegisterCmdHandler <HFTRuntimeOptions>("server", AssignAsServerForGame);
            RegisterCmdHandler <object>("update", PassMessageFromPlayerToGame);
        }
コード例 #10
0
        public HFTArgsBase(string prefix)
        {
            HFTLog        log     = new HFTLog("HFTArgs");
            HFTArgChecker checker = new HFTArgChecker(log, prefix);

            HFTArgParser p = HFTArgParser.GetInstance();

            System.Reflection.FieldInfo[] fields = this.GetType().GetFields();
            foreach (System.Reflection.FieldInfo info in fields)
            {
                object field    = System.Activator.CreateInstance(info.FieldType);
                string dashName = checker.GetHFTDashName(info.Name);
                checker.AddArg(dashName);
                info.FieldType.GetMethod("Init").Invoke(field, new object[] { dashName, p });
                info.SetValue(this, field);
            }

            checker.CheckArgs();
        }
コード例 #11
0
        public static string[] GetIPAddresses(string domain, DNS.Protocol.RecordType type)
        {
            // This client is probably heavy? Maybe I should have just one
            // NOTE: This is hardcoded to Google's DNS servers. I'd prefer to use
            // the system DNS but ATM (a) I don't know how to find it and (b)
            // .NET/mono is broken
            DNS.Client.DnsClient client    = new DNS.Client.DnsClient("8.8.8.8");
            List <string>        addresses = new List <string>();

            try
            {
                IList <System.Net.IPAddress> ips = client.Lookup(domain, type);
                foreach (var ip in ips)
                {
                    addresses.Add(ip.ToString());
                }
            }
            catch (DNS.Client.ResponseException ex)
            {
                var log = new HFTLog("HFTDnsUtils");
                log.Warn(String.Format("error getting DNS {0} record for {1}: {2}", type, domain, ex.ToString()));
            }
            return(addresses.ToArray());
        }
コード例 #12
0
 public HFTEventProcessor()
 {
     m_log = new HFTLog("HFTEventProcessor");
 }
コード例 #13
0
 public LocalNetPlayer(GameServer server, Options options = null) : base(server, options != null ? options.name : "LocalPlayer")
 {
     m_gameHandlers = new Dictionary <string, GameCmdEventHandler>();
     m_sessionId    = options != null ? options.sessionId : "";
     m_log          = new HFTLog("LocalNetPlayer"); // add name
 }
コード例 #14
0
 public HFTSocket()
 {
     base.IgnoreExtensions = true;
     log_ = new HFTLog("HFTSocket");
 }
コード例 #15
0
 public UntypedCmdConverter(HFTLog log, UntypedCmdEventHandler handler)
 {
     m_log     = log;
     m_handler = handler;
 }
コード例 #16
0
 public CmdConverter(HFTLog log, TypedCmdEventHandler <T> handler)
 {
     m_log     = log;
     m_handler = handler;
 }
コード例 #17
0
 HFTGameManager()
 {
     log_ = new HFTLog("HFTGameManager");
 }
コード例 #18
0
        public static bool Apply(string prefix, object obj)
        {
            HFTLog        log     = new HFTLog("HFTArgsDirect");
            HFTArgChecker checker = new HFTArgChecker(log, prefix);

            HFTArgParser p = HFTArgParser.GetInstance();

            System.Reflection.FieldInfo[] fields = obj.GetType().GetFields();
            foreach (System.Reflection.FieldInfo info in fields)
            {
                //object field = System.Activator.CreateInstance(info.FieldType);
                object      value     = null;
                System.Type fieldType = info.FieldType;
                string      dashName  = checker.GetHFTDashName(info.Name);
                checker.AddArg(dashName);
                // Should do this with reflection but ...
                if (fieldType == typeof(string))
                {
                    string strValue = "";
                    if (p.TryGet <string>(dashName, ref strValue))
                    {
                        value = strValue;
                    }
                }
                else if (fieldType == typeof(int))
                {
                    int intValue = 0;
                    if (p.TryGet <int>(dashName, ref intValue))
                    {
                        value = intValue;
                    }
                }
                else if (fieldType == typeof(bool))
                {
                    bool boolValue = false;
                    if (p.TryGetBool(dashName, ref boolValue))
                    {
                        value = boolValue;
                    }
                }
                else if (fieldType == typeof(float))
                {
                    float floatValue = 0;
                    if (p.TryGet <float>(dashName, ref floatValue))
                    {
                        value = floatValue;
                    }
                }
                else
                {
                    throw new System.InvalidOperationException("no support for type: " + fieldType.Name);
                }

                if (value != null)
                {
                    info.SetValue(obj, value);
                }
            }

            return(checker.CheckArgs());
        }