public void SendStageInfo(int to_client_id = 0)
    {
        //IL_00ae: Unknown result type (might be due to invalid IL or missing references)
        //IL_00b3: Unknown result type (might be due to invalid IL or missing references)
        //IL_00e2: Unknown result type (might be due to invalid IL or missing references)
        //IL_00e7: Unknown result type (might be due to invalid IL or missing references)
        Coop_Model_StageInfo model = new Coop_Model_StageInfo();

        model.id = 1002;
        if (MonoBehaviourSingleton <InGameProgress> .IsValid())
        {
            model.elapsedTime = MonoBehaviourSingleton <InGameProgress> .I.GetElapsedTime();
        }
        if (MonoBehaviourSingleton <CoopManager> .IsValid() && MonoBehaviourSingleton <CoopManager> .IsValid() && MonoBehaviourSingleton <CoopManager> .I.isStageHost && MonoBehaviourSingleton <CoopManager> .I.coopStage.GetIsInFieldEnemyBossBattle())
        {
            model.isInFieldEnemyBossBattle = true;
        }
        if (MonoBehaviourSingleton <StageObjectManager> .IsValid())
        {
            MonoBehaviourSingleton <StageObjectManager> .I.gimmickList.ForEach(delegate(StageObject o)
            {
                //IL_0027: Unknown result type (might be due to invalid IL or missing references)
                if (o.IsCoopNone())
                {
                    o.SetCoopMode(StageObject.COOP_MODE_TYPE.ORIGINAL, 0);
                }
                Coop_Model_StageInfo.GimmickInfo item = new Coop_Model_StageInfo.GimmickInfo
                {
                    id     = o.id,
                    enable = o.get_gameObject().get_activeSelf()
                };
                model.gimmicks.Add(item);
            });

            model.enemyPos = Vector3.get_zero();
            if (MonoBehaviourSingleton <StageObjectManager> .I.boss != null)
            {
                model.enemyPos = MonoBehaviourSingleton <StageObjectManager> .I.boss._transform.get_position();
            }
        }
        if (MonoBehaviourSingleton <InGameManager> .I.IsRush() && MonoBehaviourSingleton <InGameProgress> .IsValid())
        {
            model.rushLimitTime = MonoBehaviourSingleton <InGameProgress> .I.limitTime;
        }
        if (MonoBehaviourSingleton <InGameProgress> .IsValid() && MonoBehaviourSingleton <CoopManager> .IsValid() && MonoBehaviourSingleton <CoopManager> .I.coopStage.GetIsInFieldEnemyBossBattle())
        {
            model.rushLimitTime = MonoBehaviourSingleton <InGameProgress> .I.limitTime;
        }
        Send(model, true, to_client_id, null, delegate(Coop_Model_Base send_model)
        {
            Coop_Model_StageInfo coop_Model_StageInfo = send_model as Coop_Model_StageInfo;
            if (MonoBehaviourSingleton <InGameProgress> .IsValid())
            {
                coop_Model_StageInfo.elapsedTime = MonoBehaviourSingleton <InGameProgress> .I.GetElapsedTime();
            }
            return(true);
        });
    }
    protected override bool HandleCoopEvent(CoopPacket packet)
    {
        bool result = false;

        switch (packet.packetType)
        {
        case PACKET_TYPE.STAGE_PLAYER_POP:
        {
            Coop_Model_StagePlayerPop model7 = packet.GetModel <Coop_Model_StagePlayerPop>();
            result = coopStage.OnRecvStagePlayerPop(model7, packet);
            break;
        }

        case PACKET_TYPE.STAGE_INFO:
        {
            Coop_Model_StageInfo model10 = packet.GetModel <Coop_Model_StageInfo>();
            result = coopStage.OnRecvStageInfo(model10, packet);
            break;
        }

        case PACKET_TYPE.STAGE_RESPONSE_END:
        {
            Coop_Model_StageResponseEnd model9 = packet.GetModel <Coop_Model_StageResponseEnd>();
            result = coopStage.OnRecvStageResponseEnd(model9, packet);
            break;
        }

        case PACKET_TYPE.STAGE_QUEST_CLOSE:
        {
            Coop_Model_StageQuestClose model8 = packet.GetModel <Coop_Model_StageQuestClose>();
            result = coopStage.OnRecvQuestClose(model8.is_succeed);
            break;
        }

        case PACKET_TYPE.STAGE_TIMEUP:
            result = coopStage.OnRecvStageTimeup();
            break;

        case PACKET_TYPE.STAGE_CHAT:
        {
            Coop_Model_StageChat model6 = packet.GetModel <Coop_Model_StageChat>();
            if (model6.r)
            {
                result = coopStage.OnRecvStageChat(model6);
            }
            break;
        }

        case PACKET_TYPE.CHAT_MESSAGE:
        {
            Coop_Model_StageChatMessage model5 = packet.GetModel <Coop_Model_StageChatMessage>();
            result = coopStage.OnRecvChatMessage(packet.fromClientId, model5);
            break;
        }

        case PACKET_TYPE.STAGE_CHAT_STAMP:
        {
            Coop_Model_StageChatStamp model4 = packet.GetModel <Coop_Model_StageChatStamp>();
            result = coopStage.OnRecvChatStamp(model4);
            break;
        }

        case PACKET_TYPE.STAGE_REQUEST_POP:
        {
            Coop_Model_StageRequestPop model3 = packet.GetModel <Coop_Model_StageRequestPop>();
            result = coopStage.OnRecvRequestPop(model3, packet);
            break;
        }

        case PACKET_TYPE.STAGE_SYNC_PLAYER_RECORD:
        {
            Coop_Model_StageSyncPlayerRecord model2 = packet.GetModel <Coop_Model_StageSyncPlayerRecord>();
            coopStage.OnRecvSyncPlayerRecord(model2);
            result = true;
            break;
        }

        case PACKET_TYPE.ENEMY_BOSS_ESCAPE:
        {
            Coop_Model_EnemyBossEscape model = packet.GetModel <Coop_Model_EnemyBossEscape>();
            result = MonoBehaviourSingleton <CoopManager> .I.coopStage.OnRecvEnemyBossEscape(model);

            break;
        }

        case PACKET_TYPE.ENEMY_BOSS_ALIVE_REQUEST:
            coopStage.OnRecvEnemyBossAliveRequest(packet);
            result = true;
            break;

        case PACKET_TYPE.ENEMY_BOSS_ALIVE_REQUESTED:
            coopStage.OnRecvEnemyBossAliveRequested();
            result = true;
            break;
        }
        return(result);
    }