public void UpdatePlayers()
        {
            if (Zone == null)
            {
                Destroy();
                return;
            }

            long Tick = TCPManager.GetTimeStampMS();

            players = players.Where(kv => (Tick - kv.Value) < PLAYER_EXPIRE * 1000).ToDictionary(x => x.Key, v => v.Value);

            if (players.Count == 0 && !IsDisposed)
            {
                Destroy();
                return;
            }

            HotSpotState newState;

            if (players.Count >= 24)
            {
                newState = HotSpotState.HOTSPOT_24;
            }
            else if (players.Count >= 16)
            {
                newState = HotSpotState.HOTSPOT_16;
            }
            else if (players.Count >= 8)
            {
                newState = HotSpotState.HOTSPOT_8;
            }
            else
            {
                newState = HotSpotState.NONE;
            }

            if (newState != State)
            {
                State = newState;
                Zone.SendHotSpots(null);
            }
        }
        private void OnHotspotStateChange(object sender, HotSpotState e)
        {
            if (localHotspot != null)
            {
                buttonCreateHotspot.Visibility = ViewStates.Visible;
                switch (localHotspot.GetHotSpotState())
                {
                case HotSpotState.Disabled:
                    buttonSendMessage.Visibility = ViewStates.Invisible;
                    buttonCreateHotspot.Text     = Utils.TurnHotspotOnMessage;
                    ShowWifiParameters(false);
                    break;

                case HotSpotState.Enabled:
                    buttonSendMessage.Visibility = ViewStates.Visible;
                    buttonCreateHotspot.Text     = Utils.TurnHotspotOffMessage;
                    ShowWifiParameters(true);
                    break;
                }
            }
        }
Esempio n. 3
0
        public static HotSpotState GetHotSpotState()
        {
            IntPtr       pNetStatus = new IntPtr();
            IntPtr       clientHandle;
            uint         negotiatedVersion;
            HotSpotState returnValue = HotSpotState.Unavailable;

            var openHandleSuccess = WlanOpenHandle(2, IntPtr.Zero, out negotiatedVersion, out clientHandle);

            uint hostedNetworkQueryStatusSuccess = WlanHostedNetworkQueryStatus(clientHandle, out pNetStatus, IntPtr.Zero);

            if (openHandleSuccess == 0)
            {
                var netStat = (WLAN_HOSTED_NETWORK_STATUS)Marshal.PtrToStructure(pNetStatus, typeof(WLAN_HOSTED_NETWORK_STATUS));

                if (netStat.HostedNetworkState != WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_unavailable)
                {
                    returnValue = netStat.HostedNetworkState == WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_active ? HotSpotState.Active : HotSpotState.Idle;
                }
                WlanCloseHandle(clientHandle, IntPtr.Zero);
                WlanFreeMemory(pNetStatus);
            }
            return(returnValue);
        }
 protected virtual void OnStateChanged(HotSpotState hotSpotState)
 {
     Console.WriteLine("[State] changed to: " + hotSpotState);
     StateChange?.Invoke(this, hotSpotState);
 }