Beispiel #1
0
    public void Connect()
    {
        ClientState state = ClientStateManager.Instance().GetState(m_TargetState);

        state.m_OnExitEvent -= DeactivateUI;
        state.m_OnExitEvent += DeactivateUI;
    }
Beispiel #2
0
    public void Awake()
    {
        ClientState state = ClientStateManager.Instance().GetState(m_TargetState);

        state.m_OnEnterEvent += FadeOut;

        fadeOutRate = 1.0f / state.m_onExitDelay;
    }
Beispiel #3
0
    public void Connect()
    {
        ClientState state = ClientStateManager.Instance().GetState(m_TargetState);

        state.m_OnEnterEvent -= FadeIn;
        state.m_OnEnterEvent += FadeIn;

        fadeInRate = 1.0f / state.m_onEnterDelay;
    }
Beispiel #4
0
    public void DoLossState()
    {
        ClientStateManager stateMachine = gameObject.GetComponentInChildren <ClientStateManager>();

        if (!stateMachine)
        {
            throw new UnityException("No state machine");
        }

        stateMachine.ChangeStateSafe(InGameState.JAM_LOOSE);         //TODO: clean up state names (one win/loss)
    }
Beispiel #5
0
    public static ClientStateManager Instance()
    {
        if (s_gameStateManager == null)
        {
            ClientStateManager[] stateManagers = FindObjectsOfType <ClientStateManager> ();

            foreach (ClientStateManager manager in stateManagers)
            {
                if (manager.isLocalPlayer == true)
                {
                    s_gameStateManager = manager;

                    return(s_gameStateManager);
                }
            }
        }

        return(s_gameStateManager);
    }
Beispiel #6
0
    // Use this for initialization
    void Start()
    {
        //dont set static if running on server
        if (!isLocalPlayer)
        {
            return;
        }

        //if game is running on client

        if (s_gameStateManager != null && s_gameStateManager != this)
        {
            Destroy(this.gameObject);
        }

        DontDestroyOnLoad(this.gameObject);

        s_gameStateManager = this;
    }
Beispiel #7
0
    public void DoNextState()
    {
        ClientStateManager stateMachine = GetComponentInChildren <ClientStateManager> ();

        stateMachine.DoNextState();
    }
    StateBase m_curState = null;               //当前状态

    void Awake()
    {
        Instance = this;
    }
Beispiel #9
0
 public MainWindowViewModel()
 {
     ClientStateManager = new ClientStateManager();
 }
Beispiel #10
0
        public bool Start()
        {
            try
            {
                context = new ServerContext();
                context.ServerConfig = serverConfig;

                // Database connection check
                Logger.Output(this, "Checking database connection..");
                context.Css = Config.DatabaseConnectionString;

                using (MySqlConnection conn = new MySqlConnection(Config.DatabaseConnectionString))
                {
                    conn.Open();

                    if (conn.State == ConnectionState.Open)
                    {
                        Logger.Output(this, "Database connection verified..");

                        MySqlCommand cmd = conn.CreateCommand();
                        cmd.CommandText = "SELECT * FROM settings";
                        MySqlDataReader dr = cmd.ExecuteReader();

                        // Load all world settings from the database.
                        while (dr.Read())
                        {
                            string name, value;
                            name = DatabaseHelper.GetString(dr, "name");
                            value = DatabaseHelper.GetString(dr, "value");
                            Logger.Record(this, "Config param: {0}\t= '{1}'", name, value);
                            serverConfig.Add(name, value);
                        }
                        dr.Close();
                    }
                    else
                    {
                        Logger.Output(this, "Database connection can't be opened!");
                        throw new InvalidOperationException("Database connection can't be opened.");
                    }
                }

                Logger.Output(this, "Creating server components..");

                Timer = new Stopwatch();
                Timer.Start();
                Logger.Output(this, "Hi res timer available: {0}, frequency: {1}.", Stopwatch.IsHighResolution, Stopwatch.Frequency);

                int result;
                int.TryParse(serverConfig["turn_duration"], out result);
                context.TurnDuration = result;

                int.TryParse(serverConfig["users_allowed"], out result);
                context.Mpt = new MasterPlayerTable(result, context);

                // Queues
                QueueManager qMngr = QueueManager.Singletone;
                qMngr.CreateQueues(result);

                // Load all WorldData.xml and Entities.xml data
                DataManager dMngr = DataManager.Singletone;

                // Create the zone manager.
                Logger.Output(this, "Creating zone manager..");
                context.ZoneManager = new ZoneManager(context);

                // Now load all static predefined entities.
                //Logger.Output(this, "Loading static entities..");
                //dMngr.LoadStaticEntities(context.ZoneManager);

                // Create the game processor for handling messages.
                Logger.Output(this, "Creating game processor..");
                context.GameProcessor = new GameProcessor(context);

                // Create the chat processor for handling chat and remote commands.
                Logger.Output(this, "Creating chat processor..");
                context.ChatProcessor = new ChatProcessor(context);

                // Network server
                Logger.Output(this, "Creating network server..");

                NetPeerConfiguration cfg = new NetPeerConfiguration("Asteria");
                int.TryParse(context.ServerConfig["client_port"], out result);
                cfg.Port = result;

                int.TryParse(context.ServerConfig["users_allowed"], out result);
                cfg.MaximumConnections = result;

                int.TryParse(context.ServerConfig["max_transmissionunit"], out result);
                cfg.MaximumTransmissionUnit = result;

                int.TryParse(context.ServerConfig["client_timeout_seconds"], out result);
                cfg.ConnectionTimeout = result;

                cfg.ReceiveBufferSize = 4095;
                cfg.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
            #if DEBUG
                cfg.EnableMessageType(NetIncomingMessageType.VerboseDebugMessage);
            #endif

                IPAddress clientAddress;
                if (context.ServerConfig.ContainsKey("client_host") && IPAddress.TryParse(context.ServerConfig["client_host"], out clientAddress))
                {
                    cfg.LocalAddress = clientAddress;
                    Logger.Output(this, "NetworkServer using network interface: {0}:{1}", cfg.LocalAddress, cfg.Port);
                }
                else
                    Logger.Output(this, "Could not parse 'client_host' param, using: {0}:{1}", cfg.LocalAddress, cfg.Port);

                netServerClient = new NetServer(cfg);
                Logger.Output(this, "Networking params client: max connections: {0}, MTU: {1}, connection timeout: {2}", cfg.MaximumConnections, cfg.MaximumTransmissionUnit, cfg.ConnectionTimeout);

                networkServer = new NetworkServer(context, netServerClient);

                int.TryParse(context.ServerConfig["threadpool_size_T1"], out result);
                networkServer.Start(result);

                // Inter server
                Logger.Output(this, "Creating inter server..");

                NetPeerConfiguration cfg2 = new NetPeerConfiguration("InterAsteria");
                int.TryParse(serverConfig["inter_port"], out result);
                cfg2.Port = result;

                int.TryParse(serverConfig["users_allowed"], out result);
                cfg2.MaximumConnections = result;

                int.TryParse(serverConfig["max_transmissionunit"], out result);
                cfg2.MaximumTransmissionUnit = Math.Min(result, 4095);

                int.TryParse(serverConfig["client_timeout_seconds"], out result);
                cfg2.ConnectionTimeout = result;

                cfg2.ReceiveBufferSize = 4095;
                cfg2.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
            #if DEBUG
                cfg2.EnableMessageType(NetIncomingMessageType.VerboseDebugMessage);
            #endif

                // TODO: [LOW] look into WorldConnection disconnects..
                cfg2.ConnectionTimeout = 120;

                IPAddress interAddress;
                if (serverConfig.ContainsKey("inter_host") && IPAddress.TryParse(serverConfig["inter_host"], out interAddress))
                {
                    cfg2.LocalAddress = interAddress;
                    Logger.Output(this, "InterServer using network interface: {0}:{1}", cfg2.LocalAddress, cfg2.Port);
                }
                else
                    Logger.Output(this, "Could not parse 'inter_host' param, using: {0}:{1}", cfg2.LocalAddress, cfg2.Port);

                netServerInter = new NetServer(cfg2);
                Logger.Output(this, "InterServer params: max connections: {0}, MTU: {1}, ping interval: {2}, timeout delay: {3}", cfg2.MaximumConnections, cfg2.MaximumTransmissionUnit, cfg2.PingInterval, cfg2.ConnectionTimeout);

                interServer = new InterServer(context, netServerInter);

                int.TryParse(serverConfig["threadpool_size_T1"], out result);
                interServer.Start(result);

                // Client state manager
                Logger.Output(this, "Creating client state manager..");
                csm = new ClientStateManager(context);
                csm.Start(1);

                // ClientToServerMessage deserializer
                Logger.Output(this, "Creating message handler..");
                msgHandler = new MessageHandler(context, netServerClient);

                int.TryParse(context.ServerConfig["threadpool_size_T2"], out result);
                msgHandler.Start(result);

                // ClientToServerMessage serializer
                Logger.Output(this, "Creating message sender..");
                msgSender = new MessageSender(context, netServerClient);

                int.TryParse(context.ServerConfig["threadpool_size_T4"], out result);
                msgSender.Start(result);

                // Dal Provider
                Logger.Output(this, "Creating DAL provider..");
                dal = new DalProvider(context);
                context.Dal = dal;

                // Character Management, Inter Server, Chat
                Logger.Output(this, "Creating low priority handler..");
                lowPrioHandler = new LowPriorityManager(context);

                int.TryParse(context.ServerConfig["threadpool_size_T3"], out result);
                lowPrioHandler.Start(result);

                // Turn Manager
                Logger.Output(this, "Creating turn manager..");
                turnManager = new TurnManager(context);
                turnManager.Start();

                Logger.Output(this, "Configuration finished in {0} milliseconds!", Timer.ElapsedMilliseconds);
                Thread.Sleep(500);
                return true;
            }
            catch (Exception ex)
            {
                Logger.Output(this, "Configure exception: {0}, stack trace: {1}", ex.Message, ex.StackTrace);
            }
            return false;
        }