コード例 #1
0
    private static AppMain.GMS_EFFECT_3DES_WORK gmBoss1EffShockwaveInit(
        AppMain.GMS_BOSS1_CHAIN_WORK chain_work)
    {
        AppMain.OBS_OBJECT_WORK              work      = AppMain.GMM_EFFECT_CREATE_WORK((AppMain.TaskWorkFactoryDelegate)(() => (object)new AppMain.GMS_BOSS1_EFF_SHOCKWAVE_WORK()), AppMain.GMM_BS_OBJ((object)chain_work), (ushort)0, "B01_ShockWave");
        AppMain.GMS_EFFECT_3DES_WORK         efct_3des = (AppMain.GMS_EFFECT_3DES_WORK)work;
        AppMain.GMS_BOSS1_EFF_SHOCKWAVE_WORK sw_work   = (AppMain.GMS_BOSS1_EFF_SHOCKWAVE_WORK)efct_3des;
        sw_work.mgr_work = chain_work.mgr_work;
        AppMain.gmBoss1MgrIncObjCreateCount(sw_work.mgr_work);
        int index = AppMain.GmBsCmnIsFinalZoneType(AppMain.GMM_BS_OBJ((object)chain_work.mgr_work)) == 0 ? 706 : 708;

        AppMain.ObjObjectAction3dESEffectLoad(AppMain.GMM_BS_OBJ((object)efct_3des), efct_3des.obj_3des, AppMain.ObjDataGet(index), (string)null, 0, (AppMain.AMS_AMB_HEADER)null);
        AppMain.ObjObjectAction3dESTextureLoad(AppMain.GMM_BS_OBJ((object)efct_3des), efct_3des.obj_3des, AppMain.ObjDataGet(709), (string)null, 0, (AppMain.AMS_AMB_HEADER)null, false);
        AppMain.ObjObjectAction3dESTextureSetByDwork(work, AppMain.ObjDataGet(710));
        AppMain.GmEffect3DESSetupBase(efct_3des, 1U, 1U);
        AppMain.NNS_MATRIX snmMtx = AppMain.GmBsCmnGetSNMMtx(chain_work.snm_work, chain_work.ball_snm_reg_id);
        AppMain.VEC_Set(ref work.pos, AppMain.FX_F32_TO_FX32(snmMtx.M03), AppMain.GMD_BOSS1_GROUND_POS_Y, 0);
        work.flag &= 4294967293U;
        AppMain.GmEffectRectInit(efct_3des.efct_com, AppMain.gm_boss1_eff_sw_atk_flag_tbl, AppMain.gm_boss1_eff_sw_def_flag_tbl, (byte)1, (byte)1);
        AppMain.ObjRectWorkSet(efct_3des.efct_com.rect_work[1], (short)-64, (short)-32, (short)64, (short)32);
        sw_work.atk_rect_timer = 10U;
        work.ppFunc            = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss1EffShockwaveProcMain);
        AppMain.gmBoss1EffShockwaveSubpartInit(sw_work, 163840, true);
        AppMain.gmBoss1EffShockwaveSubpartInit(sw_work, 163840, false);
        AppMain.mtTaskChangeTcbDestructor(work.tcb, new AppMain.GSF_TASK_PROCEDURE(AppMain.gmBoss1EffShockwaveExit));
        return(efct_3des);
    }
コード例 #2
0
 private static AppMain.OBS_OBJECT_WORK GmBoss1ChainInit(
     AppMain.GMS_EVE_RECORD_EVENT eve_rec,
     int pos_x,
     int pos_y,
     byte type)
 {
     AppMain.UNREFERENCED_PARAMETER((object)type);
     AppMain.OBS_OBJECT_WORK      work              = AppMain.GMM_ENEMY_CREATE_WORK(eve_rec, pos_x, pos_y, (AppMain.TaskWorkFactoryDelegate)(() => (object)new AppMain.GMS_BOSS1_CHAIN_WORK()), "BOSS1_CHAIN");
     AppMain.GMS_ENEMY_3D_WORK    gmsEnemy3DWork    = (AppMain.GMS_ENEMY_3D_WORK)work;
     AppMain.GMS_BOSS1_CHAIN_WORK gmsBosS1ChainWork = (AppMain.GMS_BOSS1_CHAIN_WORK)work;
     work.move_flag |= 256U;
     AppMain.ObjObjectCopyAction3dNNModel(work, AppMain.gm_boss1_obj_3d_list[1], gmsEnemy3DWork.obj_3d);
     AppMain.ObjObjectAction3dNNMotionLoad(work, 0, true, AppMain.ObjDataGet(704), (string)null, 0, (AppMain.AMS_AMB_HEADER)null);
     AppMain.ObjDrawObjectSetToon(work);
     work.obj_3d.blend_spd              = 0.125f;
     work.ppFunc                        = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss1ChainWaitSetup);
     work.flag                         |= 16U;
     work.disp_flag                    |= 4U;
     gmsEnemy3DWork.ene_com.enemy_flag |= 32768U;
     AppMain.ObjRectWorkSet(gmsEnemy3DWork.ene_com.rect_work[1], (short)-16, (short)-16, (short)16, (short)16);
     gmsEnemy3DWork.ene_com.rect_work[1].ppHit = new AppMain.OBS_RECT_WORK_Delegate1(AppMain.gmBoss1ChainAtkHitFunc);
     gmsEnemy3DWork.ene_com.rect_work[0].flag |= 2048U;
     gmsEnemy3DWork.ene_com.rect_work[2].flag |= 2048U;
     work.ppOut = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss1ChainOutFunc);
     AppMain.mtTaskChangeTcbDestructor(work.tcb, new AppMain.GSF_TASK_PROCEDURE(AppMain.gmBoss1ChainExit));
     work.obj_3d.use_light_flag &= 4294967294U;
     work.obj_3d.use_light_flag |= 64U;
     return(work);
 }
コード例 #3
0
 private static void gmBoss1ChainExit(AppMain.MTS_TASK_TCB tcb)
 {
     AppMain.OBS_OBJECT_WORK      tcbWork           = AppMain.mtTaskGetTcbWork(tcb);
     AppMain.GMS_BOSS1_CHAIN_WORK gmsBosS1ChainWork = (AppMain.GMS_BOSS1_CHAIN_WORK)tcbWork;
     AppMain.gmBoss1MgrDecObjCreateCount(gmsBosS1ChainWork.mgr_work);
     AppMain.GmBsCmnClearBossMotionCBSystem(tcbWork);
     AppMain.GmBsCmnDeleteSNMWork(gmsBosS1ChainWork.snm_work);
     AppMain.GmBsCmnClearCNMCb(tcbWork);
     AppMain.GmBsCmnDeleteCNMMgrWork(gmsBosS1ChainWork.cnm_mgr_work);
     AppMain.GmEnemyDefaultExit(tcb);
 }
コード例 #4
0
 private static void gmBoss1EffScatterInit(AppMain.GMS_BOSS1_CHAIN_WORK chain_work)
 {
     for (int index = 0; index < 9; ++index)
     {
         AppMain.GMS_BS_CMN_NODE_CTRL_OBJECT     controlObjectBySize = AppMain.GmBsCmnCreateNodeControlObjectBySize(AppMain.GMM_BS_OBJ((object)chain_work), chain_work.cnm_mgr_work, chain_work.sct_cnm_reg_ids[index], chain_work.snm_work, chain_work.sct_snm_reg_ids[index], (AppMain.TaskWorkFactoryDelegate)(() => (object)new AppMain.GMS_BOSS1_EFF_SCT_PART_NDC_WORK()));
         AppMain.GMS_BOSS1_EFF_SCT_PART_NDC_WORK sct_part_ndc        = (AppMain.GMS_BOSS1_EFF_SCT_PART_NDC_WORK)controlObjectBySize;
         controlObjectBySize.user_timer = (uint)AppMain.mtMathRand() % 20U;
         controlObjectBySize.is_enable  = 0;
         AppMain.gmBoss1EffScatterSetPartParam(sct_part_ndc, index == 8);
         AppMain.GMM_BS_OBJ((object)controlObjectBySize).move_flag |= 4608U;
         AppMain.nnMakeUnitQuaternion(ref controlObjectBySize.user_quat);
         controlObjectBySize.proc_update = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss1EffScatterProcWait);
     }
 }
コード例 #5
0
ファイル: GmBoss1Manager.cs プロジェクト: uwx/Sonic4Episode1
    private static void gmBoss1MgrWaitLoad(AppMain.OBS_OBJECT_WORK obj_work)
    {
        bool flag = false;

        if (AppMain.GmBsCmnIsFinalZoneType(obj_work) != 0)
        {
            if (AppMain.GmMainDatLoadBossBattleLoadCheck(0))
            {
                flag = true;
            }
        }
        else
        {
            flag = true;
        }
        if (!flag)
        {
            return;
        }
        AppMain.GMS_BOSS1_MGR_WORK mgr_work       = (AppMain.GMS_BOSS1_MGR_WORK)obj_work;
        AppMain.OBS_OBJECT_WORK    obsObjectWork1 = AppMain.GmEventMgrLocalEventBirth((ushort)313, obj_work.pos.x, obj_work.pos.y, (ushort)0, (sbyte)0, (sbyte)0, (byte)0, (byte)0, (byte)0);
        AppMain.gmBoss1MgrIncObjCreateCount(mgr_work);
        AppMain.OBS_OBJECT_WORK obsObjectWork2 = AppMain.GmEventMgrLocalEventBirth((ushort)314, obj_work.pos.x, obj_work.pos.y, (ushort)0, (sbyte)0, (sbyte)0, (byte)0, (byte)0, (byte)0);
        AppMain.gmBoss1MgrIncObjCreateCount(mgr_work);
        AppMain.OBS_OBJECT_WORK obsObjectWork3 = AppMain.GmEventMgrLocalEventBirth((ushort)315, obj_work.pos.x, obj_work.pos.y, (ushort)0, (sbyte)0, (sbyte)0, (byte)0, (byte)0, (byte)0);
        AppMain.gmBoss1MgrIncObjCreateCount(mgr_work);
        AppMain.GMS_BOSS1_BODY_WORK  gmsBosS1BodyWork  = (AppMain.GMS_BOSS1_BODY_WORK)obsObjectWork1;
        AppMain.GMS_BOSS1_CHAIN_WORK gmsBosS1ChainWork = (AppMain.GMS_BOSS1_CHAIN_WORK)obsObjectWork2;
        AppMain.GMS_BOSS1_EGG_WORK   gmsBosS1EggWork   = (AppMain.GMS_BOSS1_EGG_WORK)obsObjectWork3;
        mgr_work.body_work             = gmsBosS1BodyWork;
        gmsBosS1BodyWork.mgr_work      = mgr_work;
        gmsBosS1ChainWork.mgr_work     = mgr_work;
        gmsBosS1EggWork.mgr_work       = mgr_work;
        obsObjectWork1.parent_obj      = obj_work;
        obsObjectWork2.parent_obj      = obsObjectWork1;
        obsObjectWork3.parent_obj      = obsObjectWork1;
        gmsBosS1BodyWork.parts_objs[0] = obsObjectWork1;
        gmsBosS1BodyWork.parts_objs[1] = obsObjectWork2;
        gmsBosS1BodyWork.parts_objs[2] = obsObjectWork3;
        obj_work.ppFunc = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss1MgrWaitSetup);
    }
コード例 #6
0
 private static void gmBoss1ChainWaitSetup(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_BOSS1_CHAIN_WORK gmsBosS1ChainWork = (AppMain.GMS_BOSS1_CHAIN_WORK)obj_work;
     if (((int)AppMain.GMM_BOSS1_MGR((AppMain.GMS_BOSS1_BODY_WORK)obj_work.parent_obj).flag & 1) == 0)
     {
         return;
     }
     AppMain.GmBsCmnInitBossMotionCBSystem(obj_work, gmsBosS1ChainWork.bmcb_mgr);
     AppMain.GmBsCmnCreateSNMWork(gmsBosS1ChainWork.snm_work, obj_work.obj_3d._object, (ushort)10);
     AppMain.GmBsCmnAppendBossMotionCallback(gmsBosS1ChainWork.bmcb_mgr, gmsBosS1ChainWork.snm_work.bmcb_link);
     gmsBosS1ChainWork.ball_snm_reg_id = AppMain.GmBsCmnRegisterSNMNode(gmsBosS1ChainWork.snm_work, 11);
     for (int index = 0; index < 9; ++index)
     {
         gmsBosS1ChainWork.sct_snm_reg_ids[index] = AppMain.GmBsCmnRegisterSNMNode(gmsBosS1ChainWork.snm_work, 2 + index);
     }
     AppMain.GmBsCmnCreateCNMMgrWork(gmsBosS1ChainWork.cnm_mgr_work, obj_work.obj_3d._object, (ushort)9);
     AppMain.GmBsCmnInitCNMCb(obj_work, gmsBosS1ChainWork.cnm_mgr_work);
     for (int index = 0; index < 9; ++index)
     {
         gmsBosS1ChainWork.sct_cnm_reg_ids[index] = AppMain.GmBsCmnRegisterCNMNode(gmsBosS1ChainWork.cnm_mgr_work, 2 + index);
     }
     obj_work.ppFunc = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss1ChainMain);
 }
コード例 #7
0
 private static void gmBoss1ChainOutFunc(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_BOSS1_CHAIN_WORK gmsBosS1ChainWork = (AppMain.GMS_BOSS1_CHAIN_WORK)obj_work;
     AppMain.GmBsCmnUpdateCNMParam(obj_work, gmsBosS1ChainWork.cnm_mgr_work);
     AppMain.ObjDrawActionSummary(obj_work);
 }
コード例 #8
0
 private static void gmBoss1ChainUpdateAtkRectPosition(AppMain.GMS_BOSS1_CHAIN_WORK chain_work)
 {
     AppMain.OBS_OBJECT_WORK obsObjectWork = AppMain.GMM_BS_OBJ((object)chain_work);
     AppMain.NNS_MATRIX      snmMtx        = AppMain.GmBsCmnGetSNMMtx(chain_work.snm_work, chain_work.ball_snm_reg_id);
     AppMain.VEC_Set(ref chain_work.ene_3d.ene_com.rect_work[1].rect.pos, AppMain.FX_F32_TO_FX32(snmMtx.M03) - obsObjectWork.pos.x, AppMain.FX_F32_TO_FX32(-snmMtx.M13) - obsObjectWork.pos.y, 0);
 }
コード例 #9
0
    private static void gmBoss1ChainMain(AppMain.OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_BOSS1_CHAIN_WORK chain_work = (AppMain.GMS_BOSS1_CHAIN_WORK)obj_work;
        AppMain.GMS_BOSS1_BODY_WORK  parentObj  = (AppMain.GMS_BOSS1_BODY_WORK)obj_work.parent_obj;
        bool flag;

        if (((int)parentObj.flag & 1) != 0)
        {
            obj_work.disp_flag |= 4194304U;
            flag = true;
        }
        else
        {
            obj_work.disp_flag &= 4290772991U;
            flag = false;
        }
        if (((int)chain_work.flag & 1) != 0)
        {
            obj_work.obj_3d.flag &= 4294967294U;
            if ((double)obj_work.obj_3d.marge > 0.0)
            {
                obj_work.obj_3d.marge -= obj_work.obj_3d.blend_spd;
            }
            else
            {
                chain_work.flag &= 4294967294U;
                if (AppMain.gm_boss1_act_id_tbl[parentObj.whole_act_id][1].is_repeat != (byte)0)
                {
                    obj_work.disp_flag |= 4U;
                }
                else
                {
                    obj_work.disp_flag &= 4294967291U;
                }
                obj_work.obj_3d.marge = 0.0f;
            }
        }
        if (((int)AppMain.GMM_BS_OBJ((object)parentObj).disp_flag & 16) != 0)
        {
            obj_work.disp_flag |= 16U;
        }
        else if (((int)parentObj.flag & 128) == 0)
        {
            obj_work.disp_flag &= 4294967279U;
        }
        if (((int)parentObj.flag & 32) != 0)
        {
            obj_work.disp_flag |= 32U;
        }
        else
        {
            obj_work.disp_flag &= 4294967263U;
        }
        if (((int)parentObj.flag & 64) != 0)
        {
            obj_work.flag |= 2U;
        }
        else
        {
            obj_work.flag &= 4294967293U;
        }
        if (((int)parentObj.flag & 8) != 0)
        {
            obj_work.disp_flag |= 16U;
            obj_work.flag      |= 2U;
        }
        AppMain.GmBsCmnUpdateObject3DNNStuckWithNode(obj_work, parentObj.snm_work, parentObj.chain_snm_reg_id, flag ? 1 : 0);
        if (((int)parentObj.flag & 134217728) != 0)
        {
            parentObj.flag &= 4160749567U;
            AppMain.gmBoss1EffShockwaveInit(chain_work);
        }
        if (((int)parentObj.flag & 67108864) != 0)
        {
            parentObj.flag &= 4227858431U;
            AppMain.gmBoss1EffScatterInit(chain_work);
        }
        AppMain.gmBoss1ChainUpdateAtkRectPosition(chain_work);
    }