Ejemplo n.º 1
0
    public void RequestDrainEnergyTank(Point3d entryPoint, EnergyTankData energyTankData)
    {
        Debug.Log("GameWorldModel:requestDrainEnergyTank - Draining energy tank id="
            +energyTankData.energy_tank_id+" at position ("+ entryPoint.x + ", " + entryPoint.y + ")");

        if (!IsDrainEnergyTankRequestPending)
        {
            GameData gameData = SessionData.GetInstance().CurrentGameData;
            CharacterEntity entity = GetCharacterEntity(CurrentCharacterID);
            AsyncDrainEnergyTankRequest drainEnergyTankRequest = null;

            IsDrainEnergyTankRequestPending = true;

            drainEnergyTankRequest =
                new AsyncDrainEnergyTankRequest(m_gameWorldController.gameObject, entity, entryPoint, energyTankData);
            drainEnergyTankRequest.Execute(
                (AsyncDrainEnergyTankRequest asyncRequest) =>
            {
                IsDrainEnergyTankRequestPending = false;

                switch (asyncRequest.ResultCode)
                {
                case AsyncDrainEnergyTankRequest.eResult.success:
                    {
                        Debug.Log("GameWorldModel:requestDrainEnergyTank - Drain Succeeded!");

                        // Tell anyone listening on IRC that the game state changed
                        m_gameWorldController.SendCharacterUpdatedGameEvent();

                        // Parse any incoming game events
                        if (asyncRequest.ServerResponse != null)
                        {
                            gameData.ParseEventResponse(asyncRequest.ServerResponse);
                        }

                        // If there were new events, notify the controller so that
                        // it can start playing the events back
                        if (!gameData.IsEventCursorAtLastEvent)
                        {
                            m_gameWorldController.OnGameHasNewEvents();
                        }
                    }
                    break;
                case AsyncDrainEnergyTankRequest.eResult.failed_path:
                case AsyncDrainEnergyTankRequest.eResult.failed_server_denied:
                    {
                        Debug.LogError("GameWorldModel:requestDrainEnergyTank - " + asyncRequest.ResultDetails);

                        m_gameWorldController.OnCharacterActionDisallowed(asyncRequest);
                    }
                    break;
                case AsyncDrainEnergyTankRequest.eResult.failed_server_connection:
                    {
                        Debug.LogError("GameWorldModel:requestDrainEnergyTank - " + asyncRequest.ResultDetails);

                        m_gameWorldController.OnRequestFailed("Connection Failed!");
                    }
                    break;
                }
            });
        }
    }
Ejemplo n.º 2
0
    public void RequestDrainEnergyTank(Point3d entryPoint, EnergyTankData energyTankData)
    {
        Debug.Log("GameWorldModel:requestDrainEnergyTank - Draining energy tank id="
                  + energyTankData.energy_tank_id + " at position (" + entryPoint.x + ", " + entryPoint.y + ")");

        if (!IsDrainEnergyTankRequestPending)
        {
            GameData                    gameData = SessionData.GetInstance().CurrentGameData;
            CharacterEntity             entity   = GetCharacterEntity(CurrentCharacterID);
            AsyncDrainEnergyTankRequest drainEnergyTankRequest = null;

            IsDrainEnergyTankRequestPending = true;

            drainEnergyTankRequest =
                new AsyncDrainEnergyTankRequest(m_gameWorldController.gameObject, entity, entryPoint, energyTankData);
            drainEnergyTankRequest.Execute(
                (AsyncDrainEnergyTankRequest asyncRequest) =>
            {
                IsDrainEnergyTankRequestPending = false;

                switch (asyncRequest.ResultCode)
                {
                case AsyncDrainEnergyTankRequest.eResult.success:
                    {
                        Debug.Log("GameWorldModel:requestDrainEnergyTank - Drain Succeeded!");

                        // Tell anyone listening on IRC that the game state changed
                        m_gameWorldController.SendCharacterUpdatedGameEvent();

                        // Parse any incoming game events
                        if (asyncRequest.ServerResponse != null)
                        {
                            gameData.ParseEventResponse(asyncRequest.ServerResponse);
                        }

                        // If there were new events, notify the controller so that
                        // it can start playing the events back
                        if (!gameData.IsEventCursorAtLastEvent)
                        {
                            m_gameWorldController.OnGameHasNewEvents();
                        }
                    }
                    break;

                case AsyncDrainEnergyTankRequest.eResult.failed_path:
                case AsyncDrainEnergyTankRequest.eResult.failed_server_denied:
                    {
                        Debug.LogError("GameWorldModel:requestDrainEnergyTank - " + asyncRequest.ResultDetails);

                        m_gameWorldController.OnCharacterActionDisallowed(asyncRequest);
                    }
                    break;

                case AsyncDrainEnergyTankRequest.eResult.failed_server_connection:
                    {
                        Debug.LogError("GameWorldModel:requestDrainEnergyTank - " + asyncRequest.ResultDetails);

                        m_gameWorldController.OnRequestFailed("Connection Failed!");
                    }
                    break;
                }
            });
        }
    }