コード例 #1
0
ファイル: GmBoss4Effect.cs プロジェクト: uwx/Sonic4Episode1
    private static void GmBoss4EffBombUpdateCreate(AppMain.GMS_BOSS4_EFF_BOMB_WORK bomb_work)
    {
        AppMain.MTM_ASSERT((object)bomb_work.parent_obj);
        bomb_work.pos[0] += AppMain.GmBoss4GetScrollOffset();
        if (bomb_work.interval_timer != 0U)
        {
            --bomb_work.interval_timer;
        }
        else
        {
            int v2_1 = bomb_work.area[0];
            int v2_2 = bomb_work.area[1];
            int num1 = AppMain.FX_Mul(AppMain.AkMathRandFx(), v2_1);
            int num2 = AppMain.FX_Mul(AppMain.AkMathRandFx(), v2_2);
            AppMain.GMS_EFFECT_3DES_WORK efct_3des;
            switch (bomb_work.bomb_type)
            {
            case 0:
                efct_3des = AppMain.GmEfctCmnEsCreate((AppMain.OBS_OBJECT_WORK)null, 7);
                efct_3des.efct_com.obj_work.ppFunc = (AppMain.MPP_VOID_OBS_OBJECT_WORK)null;
                AppMain.GmEffect3DESSetupBase(efct_3des, 2U, 1U);
                efct_3des.efct_com.obj_work.ppFunc = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss4EffMainFuncDeleteAtEnd);
                if (--bomb_work.interval_timer_sound <= 0)
                {
                    bomb_work.interval_timer_sound = 3;
                    AppMain.GmSoundPlaySE("Boss0_02");
                    break;
                }
                break;

            case 5:
                efct_3des = AppMain.GmBoss4EffCommonInit(743, new AppMain.VecFx32?());
                efct_3des.efct_com.obj_work.ppFunc = (AppMain.MPP_VOID_OBS_OBJECT_WORK)null;
                AppMain.GmEffect3DESSetupBase(efct_3des, 2U, 64U);
                efct_3des.efct_com.obj_work.ppFunc = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmBoss4EffMainFuncDeleteAtEnd);
                break;

            default:
                AppMain.MTM_ASSERT(false);
                return;
            }
            AppMain.OBS_OBJECT_WORK obsObjectWork = AppMain.GMM_BS_OBJ((object)efct_3des);
            AppMain.MTM_ASSERT((object)obsObjectWork);
            obsObjectWork.pos.x = bomb_work.pos[0] - (v2_1 >> 1) + num1;
            obsObjectWork.pos.y = bomb_work.pos[1] - (v2_2 >> 1) + num2;
            obsObjectWork.pos.z = AppMain.GMM_BS_OBJ((object)bomb_work.parent_obj).pos.z + 131072;
            uint num3 = (uint)((long)AppMain.AkMathRandFx() * (long)(bomb_work.interval_max - bomb_work.interval_max) >> 12);
            bomb_work.interval_timer = bomb_work.interval_min + num3;
        }
    }
コード例 #2
0
    // Token: 0x060002B1 RID: 689 RVA: 0x000169AC File Offset: 0x00014BAC
    private static void GmBoss4EffBombUpdateCreate(AppMain.GMS_BOSS4_EFF_BOMB_WORK bomb_work)
    {
        AppMain.MTM_ASSERT(bomb_work.parent_obj);
        bomb_work.pos[0] += AppMain.GmBoss4GetScrollOffset();
        if (bomb_work.interval_timer != 0U)
        {
            bomb_work.interval_timer -= 1U;
            return;
        }
        int num       = bomb_work.area[0];
        int num2      = bomb_work.area[1];
        int num3      = AppMain.FX_Mul(AkMath.RandFx(), num);
        int num4      = AppMain.FX_Mul(AkMath.RandFx(), num2);
        int bomb_type = bomb_work.bomb_type;

        AppMain.GMS_EFFECT_3DES_WORK gms_EFFECT_3DES_WORK;
        if (bomb_type != 0)
        {
            if (bomb_type != 5)
            {
                AppMain.MTM_ASSERT(false);
                return;
            }
            gms_EFFECT_3DES_WORK = AppMain.GmBoss4EffCommonInit(743, default(AppMain.VecFx32? ));
            gms_EFFECT_3DES_WORK.efct_com.obj_work.ppFunc = null;
            AppMain.GmEffect3DESSetupBase(gms_EFFECT_3DES_WORK, 2U, 64U);
            gms_EFFECT_3DES_WORK.efct_com.obj_work.ppFunc = AppMain.gmBoss4EffMainFuncDeleteAtEnd;
        }
        else
        {
            gms_EFFECT_3DES_WORK = AppMain.GmEfctCmnEsCreate(null, 7);
            gms_EFFECT_3DES_WORK.efct_com.obj_work.ppFunc = null;
            AppMain.GmEffect3DESSetupBase(gms_EFFECT_3DES_WORK, 2U, 1U);
            gms_EFFECT_3DES_WORK.efct_com.obj_work.ppFunc = AppMain.gmBoss4EffMainFuncDeleteAtEnd;
            if (--bomb_work.interval_timer_sound <= 0)
            {
                bomb_work.interval_timer_sound = 3;
                GmSound.PlaySE("Boss0_02");
            }
        }
        OBS_OBJECT_WORK obs_OBJECT_WORK = AppMain.GMM_BS_OBJ(gms_EFFECT_3DES_WORK);

        AppMain.MTM_ASSERT(obs_OBJECT_WORK);
        obs_OBJECT_WORK.pos.x = bomb_work.pos[0] - (num >> 1) + num3;
        obs_OBJECT_WORK.pos.y = bomb_work.pos[1] - (num2 >> 1) + num4;
        obs_OBJECT_WORK.pos.z = AppMain.GMM_BS_OBJ(bomb_work.parent_obj).pos.z + 131072;
        uint num5 = (uint)((long)AkMath.RandFx() * (long)((ulong)(bomb_work.interval_max - bomb_work.interval_max)) >> 12);

        bomb_work.interval_timer = bomb_work.interval_min + num5;
    }
コード例 #3
0
 // Token: 0x060002B0 RID: 688 RVA: 0x00016940 File Offset: 0x00014B40
 private static void GmBoss4EffBombInitCreate(AppMain.GMS_BOSS4_EFF_BOMB_WORK bomb_work, int bomb_type, AppMain.OBS_OBJECT_WORK parent_obj, int pos_x, int pos_y, int width, int height, uint interval_min, uint interval_max)
 {
     AppMain.MTM_ASSERT(bomb_work);
     AppMain.MTM_ASSERT(parent_obj);
     bomb_work.parent_obj           = parent_obj;
     bomb_work.bomb_type            = bomb_type;
     bomb_work.interval_timer       = 0U;
     bomb_work.interval_min         = interval_min;
     bomb_work.interval_max         = interval_max;
     bomb_work.pos[0]               = pos_x;
     bomb_work.pos[1]               = pos_y;
     bomb_work.area[0]              = width;
     bomb_work.area[1]              = height;
     bomb_work.interval_timer_sound = 0;
 }