예제 #1
0
 private static void gmGmkMoveGearDefFunc(
     AppMain.OBS_RECT_WORK mine_rect,
     AppMain.OBS_RECT_WORK match_rect)
 {
     AppMain.GMS_GMK_GEAR_WORK parentObj1 = (AppMain.GMS_GMK_GEAR_WORK)mine_rect.parent_obj;
     if (match_rect.parent_obj.obj_type != (ushort)3)
     {
         return;
     }
     AppMain.GMS_ENEMY_COM_WORK parentObj2 = (AppMain.GMS_ENEMY_COM_WORK)match_rect.parent_obj;
     if (parentObj2.eve_rec.id == (ushort)183)
     {
         parentObj1.move_end_x = match_rect.parent_obj.pos.x;
         parentObj1.move_end_y = match_rect.parent_obj.pos.y;
         if (((int)parentObj2.eve_rec.flag & 1) == 0)
         {
             return;
         }
         parentObj1.gear_end_obj = match_rect.parent_obj;
     }
     else
     {
         if (((AppMain.GMS_ENEMY_COM_WORK)match_rect.parent_obj).eve_rec.id != (ushort)184)
         {
             return;
         }
         parentObj1.sw_gear_obj = match_rect.parent_obj;
     }
 }
예제 #2
0
 private static void gmGmkGearSwFwInit(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     gmsGmkGearWork.open_rot_dist = 65536;
     obj_work.ppFunc = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmGmkGearSwFwMain);
     gmsGmkGearWork.move_gear_obj = (AppMain.OBS_OBJECT_WORK)null;
 }
예제 #3
0
 private static void gmGmkMoveGearSwitchRetWaitMain(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     if (gmsGmkGearWork.sw_gear_obj == null)
     {
         obj_work.flag &= 4294967279U;
         AppMain.gmGmkMoveGearEndInit(obj_work);
     }
     else
     {
         obj_work.user_timer = AppMain.ObjTimeCountDown(obj_work.user_timer);
         if (obj_work.col_work.obj_col.rider_obj == null)
         {
             if (obj_work.user_timer == 0)
             {
                 AppMain.gmGmkMoveGearSwitchRetInit(obj_work);
             }
         }
         else
         {
             obj_work.user_timer = 245760;
         }
         if (gmsGmkGearWork.move_draw_dir_ofst == (short)0)
         {
             return;
         }
         gmsGmkGearWork.move_draw_dir_ofst = (short)AppMain.ObjSpdDownSet((int)gmsGmkGearWork.move_draw_dir_ofst, 64);
         AppMain.gmGmkMoveGearSetSpd(obj_work, 0);
     }
 }
예제 #4
0
    private static void gmGmkGearFwMain(AppMain.OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_GMK_GEAR_WORK gear_work = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
        gear_work.dir_temp += gear_work.dir_speed;
        if ((double)gear_work.dir_temp < -65536.0)
        {
            gear_work.dir_temp += 65536f;
        }
        else if ((double)gear_work.dir_temp > 65536.0)
        {
            gear_work.dir_temp -= 65536f;
        }
        gear_work.prev_dir = obj_work.dir.z;
        obj_work.dir.z     = (double)gear_work.dir_speed <= 0.0 ? (ushort)(((int)AppMain.nnRoundOff(gear_work.dir_temp) + 1023) / 1024 * 1024) : (ushort)((int)AppMain.nnRoundOff(gear_work.dir_temp) / 1024 * 1024);
        gear_work.col_type = (uint)((int)obj_work.dir.z / 1024 % 8);
        AppMain.gmGmkGearChangeCol(gear_work);
        if ((int)gear_work.prev_dir == (int)obj_work.dir.z || obj_work.col_work.obj_col.rider_obj == null || obj_work.col_work.obj_col.rider_obj.obj_type != (ushort)1)
        {
            return;
        }
        AppMain.OBS_OBJECT_WORK riderObj = obj_work.col_work.obj_col.rider_obj;
        float num1 = AppMain.FXM_FX32_TO_FLOAT(riderObj.pos.x - obj_work.pos.x);
        float num2 = -AppMain.FXM_FX32_TO_FLOAT(riderObj.pos.y - obj_work.pos.y);
        int   ang  = (int)obj_work.dir.z - (int)gear_work.prev_dir;
        float num3 = (float)((double)AppMain.nnCos(ang) * (double)num1 + (double)AppMain.nnSin(ang) * (double)num2);
        float num4 = (float)(-(double)AppMain.nnSin(ang) * (double)num1 + (double)AppMain.nnCos(ang) * (double)num2);

        riderObj.prev_pos.x = riderObj.pos.x;
        riderObj.prev_pos.y = riderObj.pos.y;
        riderObj.pos.x     += AppMain.FXM_FLOAT_TO_FX32(num3 - num1);
        riderObj.pos.y     += -AppMain.FXM_FLOAT_TO_FX32(num4 - num2);
        riderObj.move.x     = riderObj.pos.x - riderObj.prev_pos.x;
        riderObj.move.y     = riderObj.pos.y - riderObj.prev_pos.y;
    }
예제 #5
0
 private static void gmGmkMoveGearMoveMain(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     AppMain.GMS_PLAYER_WORK   targetObj      = (AppMain.GMS_PLAYER_WORK)gmsGmkGearWork.gmk_work.ene_com.target_obj;
     if (targetObj == null || targetObj.gmk_obj != obj_work)
     {
         gmsGmkGearWork.gmk_work.ene_com.target_obj = (AppMain.OBS_OBJECT_WORK)null;
         AppMain.gmGmkMoveGearRetWaitInit(obj_work);
     }
     else
     {
         AppMain.gmGmkMoveGearSetSpd(obj_work, -targetObj.obj_work.spd_m);
         if (obj_work.spd_m != 0 && !gmsGmkGearWork.vib_end)
         {
             AppMain.GMM_PAD_VIB_SMALL_TIME(60f);
             gmsGmkGearWork.vib_end = true;
         }
         gmsGmkGearWork.stop_timer = targetObj.obj_work.spd_m != 0 ? 737280 : AppMain.ObjTimeCountDown(gmsGmkGearWork.stop_timer);
         if (gmsGmkGearWork.stop_timer != 0)
         {
             return;
         }
         gmsGmkGearWork.gmk_work.ene_com.enemy_flag |= 1U;
         gmsGmkGearWork.gmk_work.ene_com.target_obj  = (AppMain.OBS_OBJECT_WORK)null;
         AppMain.gmGmkMoveGearRetInit(obj_work);
     }
 }
예제 #6
0
 private static bool gmGmkMoveGearCheckSwitchMove(AppMain.OBS_OBJECT_WORK obj_work)
 {
     if (obj_work.obj_type != (ushort)3 || ((AppMain.GMS_ENEMY_COM_WORK)obj_work).eve_rec.id != (ushort)182)
     {
         return(false);
     }
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     if (((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 1) != 0)
     {
         if (((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 2) != 0)
         {
             if (obj_work.pos.y <= gmsGmkGearWork.move_end_y)
             {
                 return(true);
             }
         }
         else if (obj_work.pos.y >= gmsGmkGearWork.move_end_y)
         {
             return(true);
         }
     }
     else if (((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 2) != 0)
     {
         if (obj_work.pos.x <= gmsGmkGearWork.move_end_x)
         {
             return(true);
         }
     }
     else if (obj_work.pos.x >= gmsGmkGearWork.move_end_x)
     {
         return(true);
     }
     return(false);
 }
예제 #7
0
 private static void gmGmkMoveGearSwitchExeMain(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK  gmsGmkGearWork  = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     AppMain.GMS_ENEMY_COM_WORK gmsEnemyComWork = (AppMain.GMS_ENEMY_COM_WORK)obj_work;
     if (gmsGmkGearWork.sw_gear_obj == null)
     {
         AppMain.gmGmkMoveGearEndInit(obj_work);
     }
     else
     {
         AppMain.GMS_GMK_GEAR_WORK swGearObj = (AppMain.GMS_GMK_GEAR_WORK)gmsGmkGearWork.sw_gear_obj;
         if (swGearObj.open_rot_dist <= 0)
         {
             AppMain.gmGmkMoveGearSetSpd(obj_work, 0);
             if (swGearObj.gmk_work.ene_com.eve_rec.height == (byte)0)
             {
                 gmsEnemyComWork.eve_rec.byte_param[1] = (byte)1;
             }
             AppMain.gmGmkMoveGearEndStaggerInit(obj_work);
         }
         else
         {
             AppMain.GMS_PLAYER_WORK targetObj = (AppMain.GMS_PLAYER_WORK)gmsGmkGearWork.gmk_work.ene_com.target_obj;
             if (targetObj == null || ((int)targetObj.player_flag & 1024) != 0)
             {
                 gmsGmkGearWork.gmk_work.ene_com.target_obj = (AppMain.OBS_OBJECT_WORK)null;
                 AppMain.gmGmkMoveGearRetWaitInit(obj_work);
             }
             else
             {
                 int sSpd = 0;
                 if (((int)gmsEnemyComWork.eve_rec.flag & 1) != 0)
                 {
                     if (((int)gmsEnemyComWork.eve_rec.flag & 2) == 0 && targetObj.obj_work.spd_m < 16384)
                     {
                         sSpd = 256;
                     }
                     else if (((int)gmsEnemyComWork.eve_rec.flag & 2) != 0 && targetObj.obj_work.spd_m > -16384)
                     {
                         sSpd = -256;
                     }
                 }
                 else if (((int)gmsEnemyComWork.eve_rec.flag & 2) == 0 && targetObj.obj_work.spd_m > -16384)
                 {
                     sSpd = -256;
                 }
                 else if (((int)gmsEnemyComWork.eve_rec.flag & 2) != 0 && targetObj.obj_work.spd_m < 16384)
                 {
                     sSpd = 256;
                 }
                 if (sSpd != 0)
                 {
                     targetObj.obj_work.spd_m = AppMain.ObjSpdUpSet(targetObj.obj_work.spd_m, sSpd, 16384);
                 }
                 AppMain.gmGmkMoveGearSetSpd(obj_work, -targetObj.obj_work.spd_m);
             }
         }
     }
 }
예제 #8
0
    private static void gmGmkMoveGearEndMain(AppMain.OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
        int moveDrawDirOfst = (int)gmsGmkGearWork.move_draw_dir_ofst;

        gmsGmkGearWork.move_draw_dir_ofst = (short)AppMain.ObjSpdDownSet((int)gmsGmkGearWork.move_draw_dir_ofst, 64);
        AppMain.gmGmkMoveGearSetSpd(obj_work, 0);
    }
예제 #9
0
 private static void gmGmkMoveGearEndInit(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     obj_work.flag      |= 2U;
     obj_work.move_flag |= 8448U;
     gmsGmkGearWork.gmk_work.ene_com.enemy_flag |= 1U;
     gmsGmkGearWork.gmk_work.ene_com.target_obj  = (AppMain.OBS_OBJECT_WORK)null;
     obj_work.ppFunc = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmGmkMoveGearEndMain);
 }
예제 #10
0
 private static void gmGmkMoveGearEndSwitchFwInit(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     if (((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 1) == 0 || gmsGmkGearWork.gmk_work.ene_com.eve_rec.byte_param[1] != (byte)0)
     {
         return;
     }
     obj_work.ppFunc = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmGmkMoveGearEndSwitchFwMain);
 }
예제 #11
0
 private static void gmGmkMoveGearSwitchRetWaitInit(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     obj_work.flag      |= 18U;
     obj_work.move_flag |= 8448U;
     gmsGmkGearWork.gmk_work.ene_com.enemy_flag |= 1U;
     gmsGmkGearWork.gmk_work.ene_com.target_obj  = (AppMain.OBS_OBJECT_WORK)null;
     obj_work.user_timer = 245760;
     obj_work.ppFunc     = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmGmkMoveGearSwitchRetWaitMain);
 }
예제 #12
0
 private static void gmGmkGearDest(AppMain.MTS_TASK_TCB tcb)
 {
     AppMain.GMS_GMK_GEAR_WORK tcbWork = (AppMain.GMS_GMK_GEAR_WORK)AppMain.mtTaskGetTcbWork(tcb);
     if (tcbWork.h_snd_gear != null)
     {
         AppMain.GmSoundStopSE(tcbWork.h_snd_gear);
         AppMain.GsSoundFreeSeHandle(tcbWork.h_snd_gear);
         tcbWork.h_snd_gear = (AppMain.GSS_SND_SE_HANDLE)null;
     }
     AppMain.GmEnemyDefaultExit(tcb);
 }
예제 #13
0
 private static void gmGmkMoveGearMoveInit(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     obj_work.user_flag &= 4294967294U;
     gmsGmkGearWork.gmk_work.ene_com.rect_work[2].flag |= 2048U;
     gmsGmkGearWork.gmk_work.ene_com.rect_work[0].flag &= 4294965247U;
     obj_work.flag            |= 16U;
     obj_work.move_flag       &= 4294959103U;
     gmsGmkGearWork.stop_timer = 737280;
     obj_work.ppFunc           = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmGmkMoveGearMoveMain);
 }
예제 #14
0
 private static void gmGmkMoveGearEndSwitchFwMain(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     if (gmsGmkGearWork.move_gear_obj == null || ((AppMain.GMS_ENEMY_COM_WORK)gmsGmkGearWork.move_gear_obj).eve_rec.byte_param[1] == (byte)0)
     {
         return;
     }
     gmsGmkGearWork.gmk_work.ene_com.eve_rec.byte_param[1] = (byte)1;
     obj_work.parent_obj = gmsGmkGearWork.move_gear_obj;
     obj_work.flag      |= 16U;
     obj_work.ppFunc     = (AppMain.MPP_VOID_OBS_OBJECT_WORK)null;
 }
예제 #15
0
 private static void gmGmkGearMoveSwDraw(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     AppMain.ObjDrawActionSummary(obj_work);
     AppMain.VecFx32 vecFx32;
     vecFx32.x = obj_work.pos.x;
     vecFx32.y = obj_work.pos.y;
     vecFx32.z = obj_work.pos.z + 786432;
     gmsGmkGearWork.obj_3d_gear_opt.user_obj_mtx_r.Assign(obj_work.obj_3d.user_obj_mtx_r);
     AppMain.ObjDrawAction3DNN(gmsGmkGearWork.obj_3d_gear_opt, new AppMain.VecFx32?(vecFx32), new AppMain.VecU16?(obj_work.dir), obj_work.scale, ref obj_work.disp_flag);
     vecFx32.z = obj_work.pos.z + 524288;
     gmsGmkGearWork.obj_3d_gear_opt_ashiba.user_obj_mtx_r.Assign(obj_work.obj_3d.user_obj_mtx_r);
     AppMain.ObjDrawAction3DNN(gmsGmkGearWork.obj_3d_gear_opt_ashiba, new AppMain.VecFx32?(vecFx32), new AppMain.VecU16?(obj_work.dir), obj_work.scale, ref obj_work.disp_flag);
 }
예제 #16
0
 private static void gmGmkMoveGearSwitchRetInit(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     obj_work.flag      &= 4294967293U;
     obj_work.move_flag &= 4294958847U;
     gmsGmkGearWork.gmk_work.ene_com.enemy_flag &= 4294967280U;
     obj_work.user_flag &= 4294967294U;
     gmsGmkGearWork.gmk_work.ene_com.rect_work[0].flag |= 2048U;
     gmsGmkGearWork.rect_ret_timer = 0;
     if (((int)gmsGmkGearWork.gmk_work.ene_com.rect_work[2].flag & 2048) != 0)
     {
         gmsGmkGearWork.rect_ret_timer = 65536;
     }
     obj_work.ppFunc = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmGmkMoveGearSwitchRetMain);
 }
예제 #17
0
 private static void gmGmkMoveGearEndStaggerInit(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     AppMain.GMS_PLAYER_WORK   targetObj      = (AppMain.GMS_PLAYER_WORK)gmsGmkGearWork.gmk_work.ene_com.target_obj;
     obj_work.user_flag &= 4294967294U;
     obj_work.user_flag |= 2U;
     obj_work.flag      |= 2U;
     obj_work.move_flag |= 8448U;
     gmsGmkGearWork.move_stagger_dir_cnt = (ushort)0;
     gmsGmkGearWork.move_stagger_dir_spd = targetObj.obj_work.spd_m;
     obj_work.user_timer = gmsGmkGearWork.move_stagger_dir_spd;
     gmsGmkGearWork.move_stagger_step = (ushort)0;
     obj_work.user_work = (uint)gmsGmkGearWork.move_stagger_step;
     obj_work.ppFunc    = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmGmkMoveGearEndStaggerMain);
 }
예제 #18
0
 private static void gmGmkMoveGearFwMain(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     if (gmsGmkGearWork.rect_ret_timer == 0)
     {
         return;
     }
     gmsGmkGearWork.rect_ret_timer = AppMain.ObjTimeCountDown(gmsGmkGearWork.rect_ret_timer);
     if (gmsGmkGearWork.rect_ret_timer != 0)
     {
         return;
     }
     gmsGmkGearWork.gmk_work.ene_com.rect_work[2].flag &= 4294965247U;
     gmsGmkGearWork.gmk_work.ene_com.rect_work[0].flag &= 4294965247U;
 }
예제 #19
0
 private static void gmGmkMoveGearFwInit(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     if (gmsGmkGearWork.rect_ret_timer == 0)
     {
         gmsGmkGearWork.gmk_work.ene_com.rect_work[2].flag &= 4294965247U;
         gmsGmkGearWork.gmk_work.ene_com.rect_work[0].flag &= 4294965247U;
     }
     obj_work.flag         &= 4294967279U;
     obj_work.spd_m         = 0;
     obj_work.spd.x         = obj_work.spd.y = 0;
     obj_work.spd_add.x     = obj_work.spd_add.y = 0;
     gmsGmkGearWork.vib_end = false;
     obj_work.ppFunc        = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmGmkMoveGearFwMain);
 }
예제 #20
0
 private static void gmGmkGearChangeCol(AppMain.GMS_GMK_GEAR_WORK gear_work)
 {
     byte[] numArray;
     if (AppMain.gm_gmk_gear_add_data[(int)(gear_work.col_type * 2U)] is AppMain.AmbChunk)
     {
         AppMain.AmbChunk ambChunk = (AppMain.AmbChunk)AppMain.gm_gmk_gear_add_data[(int)(gear_work.col_type * 2U)];
         numArray = new byte[ambChunk.length];
         Buffer.BlockCopy((Array)ambChunk.array, ambChunk.offset, (Array)numArray, 0, ambChunk.length);
         AppMain.gm_gmk_gear_add_data[(int)(gear_work.col_type * 2U)] = (object)numArray;
     }
     else
     {
         numArray = (byte[])AppMain.gm_gmk_gear_add_data[(int)(gear_work.col_type * 2U)];
     }
     gear_work.gmk_work.ene_com.col_work.obj_col.diff_data = numArray;
 }
예제 #21
0
 private static void gmGmkMoveGearRetInit(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     gmsGmkGearWork.rect_ret_timer = 0;
     if (((int)gmsGmkGearWork.gmk_work.ene_com.rect_work[2].flag & 2048) != 0)
     {
         gmsGmkGearWork.rect_ret_timer = 65536;
     }
     if (((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 1) == 0 && obj_work.pos.x == gmsGmkGearWork.gmk_work.ene_com.born_pos_x || ((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 1) != 0 && obj_work.pos.y == gmsGmkGearWork.gmk_work.ene_com.born_pos_y)
     {
         AppMain.gmGmkMoveGearFwInit(obj_work);
     }
     else
     {
         gmsGmkGearWork.ret_max_speed = 0;
         obj_work.ppFunc = new AppMain.MPP_VOID_OBS_OBJECT_WORK(AppMain.gmGmkMoveGearRetMain);
     }
 }
예제 #22
0
 private static void gmGmkGearInFunc(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     AppMain.GmEnemyDefaultInFunc(obj_work);
     if (gmsGmkGearWork.gear_end_obj != null && ((int)gmsGmkGearWork.gear_end_obj.flag & 12) != 0)
     {
         gmsGmkGearWork.gear_end_obj = (AppMain.OBS_OBJECT_WORK)null;
     }
     if (gmsGmkGearWork.move_gear_obj != null && ((int)gmsGmkGearWork.move_gear_obj.flag & 12) != 0)
     {
         gmsGmkGearWork.move_gear_obj = (AppMain.OBS_OBJECT_WORK)null;
     }
     if (gmsGmkGearWork.sw_gear_obj == null || ((int)gmsGmkGearWork.sw_gear_obj.flag & 12) == 0)
     {
         return;
     }
     gmsGmkGearWork.sw_gear_obj = (AppMain.OBS_OBJECT_WORK)null;
 }
예제 #23
0
 private static void gmGmkMoveGearBodyDefFunc(
     AppMain.OBS_RECT_WORK mine_rect,
     AppMain.OBS_RECT_WORK match_rect)
 {
     AppMain.GMS_PLAYER_WORK   parentObj1 = (AppMain.GMS_PLAYER_WORK)match_rect.parent_obj;
     AppMain.GMS_GMK_GEAR_WORK parentObj2 = (AppMain.GMS_GMK_GEAR_WORK)mine_rect.parent_obj;
     AppMain.OBS_OBJECT_WORK   parentObj3 = mine_rect.parent_obj;
     if (parentObj1.obj_work.obj_type != (ushort)1 || parentObj1.gmk_obj == parentObj3 || (((int)parentObj1.obj_work.move_flag & 1) == 0 || parentObj1.seq_state == 0) || 3 <= parentObj1.seq_state && parentObj1.seq_state <= 8 || (parentObj1.obj_work.pos.x <= parentObj3.pos.x - 16384 || parentObj1.obj_work.pos.x >= parentObj3.pos.x + 16384) && (parentObj1.obj_work.prev_pos.x > parentObj3.pos.x || parentObj1.obj_work.pos.x < parentObj3.pos.x) && (parentObj1.obj_work.prev_pos.x < parentObj3.pos.x || parentObj1.obj_work.pos.x > parentObj3.pos.x))
     {
         return;
     }
     parentObj2.gmk_work.ene_com.target_dp_pos.x = 0;
     parentObj2.gmk_work.ene_com.target_dp_pos.y = -262144 - (int)parentObj1.obj_work.field_rect[3] * 4096;
     parentObj2.gmk_work.ene_com.target_dp_pos.z = parentObj1.obj_work.pos.z - parentObj3.pos.z;
     parentObj2.gmk_work.ene_com.enemy_flag     &= 4294967280U;
     AppMain.GmPlySeqInitMoveGear(parentObj1, parentObj3, ((int)parentObj2.gmk_work.ene_com.eve_rec.flag & 4) == 0);
     parentObj2.gmk_work.ene_com.target_obj = (AppMain.OBS_OBJECT_WORK)parentObj1;
     AppMain.gmGmkMoveGearMoveInit(parentObj3);
 }
예제 #24
0
 private static void gmGmkMoveGearSwitchRetMain(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     if (gmsGmkGearWork.sw_gear_obj == null)
     {
         obj_work.flag &= 4294967279U;
         AppMain.gmGmkMoveGearEndInit(obj_work);
     }
     else
     {
         if (gmsGmkGearWork.rect_ret_timer != 0)
         {
             gmsGmkGearWork.rect_ret_timer = AppMain.ObjTimeCountDown(gmsGmkGearWork.rect_ret_timer);
             if (gmsGmkGearWork.rect_ret_timer == 0)
             {
                 gmsGmkGearWork.gmk_work.ene_com.rect_work[2].flag &= 4294965247U;
             }
         }
         AppMain.GMS_GMK_GEAR_WORK swGearObj = (AppMain.GMS_GMK_GEAR_WORK)gmsGmkGearWork.sw_gear_obj;
         if (swGearObj.open_rot_dist >= 65536)
         {
             AppMain.gmGmkMoveGearSetSpd(obj_work, 0);
             AppMain.gmGmkMoveGearRetInit(obj_work);
         }
         else
         {
             int num = swGearObj.close_rot_spd;
             if (((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 1) != 0)
             {
                 if (((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 2) == 0)
                 {
                     num = -num;
                 }
             }
             else if (((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 2) != 0)
             {
                 num = -num;
             }
             AppMain.gmGmkMoveGearSetSpd(obj_work, -num << 5);
             obj_work.spd_m = 0;
         }
     }
 }
예제 #25
0
    private static void gmGmkGearLastFunc(AppMain.OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
        if (((int)obj_work.flag & 12) != 0 || gmsGmkGearWork.h_snd_gear == null)
        {
            return;
        }
        AppMain.OBS_CAMERA obsCamera = AppMain.ObjCameraGet(AppMain.g_obj.glb_camera_id);
        float num1 = AppMain.FXM_FX32_TO_FLOAT(gmsGmkGearWork.gmk_work.ene_com.obj_work.pos.x) - obsCamera.disp_pos.x;
        float num2 = AppMain.FXM_FX32_TO_FLOAT(gmsGmkGearWork.gmk_work.ene_com.obj_work.pos.y) - -obsCamera.disp_pos.y;
        float num3;

        if ((double)num1 < 400.0 && (double)num2 < 400.0)
        {
            float num4 = (float)((double)num1 * (double)num1 + (double)num2 * (double)num2);
            if ((double)num4 <= 10000.0)
            {
                num3 = 1f;
            }
            else if ((double)num4 <= 160000.0)
            {
                num3 = (float)((160000.0 - (double)num4) / 90000.0);
                if ((double)num3 > 1.0)
                {
                    num3 = 1f;
                }
                else if ((double)num3 < 0.0)
                {
                    num3 = 0.0f;
                }
            }
            else
            {
                num3 = 0.0f;
            }
        }
        else
        {
            num3 = 0.0f;
        }
        gmsGmkGearWork.h_snd_gear.snd_ctrl_param.volume = num3;
    }
예제 #26
0
 private static void gmGmkGearSwRotExtWaitMain(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     if (gmsGmkGearWork.move_gear_obj == null)
     {
         AppMain.gmGmkGearSwFwInit(obj_work);
     }
     else
     {
         AppMain.GMS_GMK_GEAR_WORK moveGearObj = (AppMain.GMS_GMK_GEAR_WORK)gmsGmkGearWork.move_gear_obj;
         int num1 = (int)(ushort)(((int)gmsGmkGearWork.move_draw_dir - 5461) / 5461 * 2);
         int num2 = (int)(ushort)(((int)moveGearObj.move_draw_dir - 2730) / 5461 * 2);
         if (num1 == num2)
         {
             return;
         }
         gmsGmkGearWork.move_draw_dir = (ushort)-((int)moveGearObj.move_draw_dir - (2730 - num2 * 5461) / 2);
         AppMain.gmGmkGearSwRotExtInit(obj_work);
     }
 }
예제 #27
0
 private static void gmGmkMoveGearRetWaitMain(AppMain.OBS_OBJECT_WORK obj_work)
 {
     AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
     if (gmsGmkGearWork.rect_ret_timer != 0)
     {
         gmsGmkGearWork.rect_ret_timer = AppMain.ObjTimeCountDown(gmsGmkGearWork.rect_ret_timer);
         if (gmsGmkGearWork.rect_ret_timer == 0)
         {
             gmsGmkGearWork.gmk_work.ene_com.rect_work[2].flag &= 4294965247U;
             gmsGmkGearWork.gmk_work.ene_com.rect_work[0].flag &= 4294965247U;
         }
     }
     AppMain.gmGmkMoveGearSetSpd(obj_work, AppMain.ObjSpdDownSet(obj_work.spd_m, 1024));
     if (obj_work.spd_m != 0)
     {
         return;
     }
     gmsGmkGearWork.stop_timer = AppMain.ObjTimeCountDown(gmsGmkGearWork.stop_timer);
     if (gmsGmkGearWork.stop_timer != 0)
     {
         return;
     }
     AppMain.gmGmkMoveGearRetInit(obj_work);
 }
예제 #28
0
    private static void gmGmkGearMoveLastFunc(AppMain.OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
        float val = 0.0f;

        if (obj_work.flag != 0U || gmsGmkGearWork.h_snd_gear == null)
        {
            return;
        }
        int num1 = gmsGmkGearWork.gmk_work.ene_com.eve_rec.id != (ushort)182 ? (gmsGmkGearWork.move_gear_obj == null ? 0 : AppMain.MTM_MATH_ABS((int)((AppMain.GMS_GMK_GEAR_WORK)gmsGmkGearWork.move_gear_obj).move_draw_dir_spd)) : AppMain.MTM_MATH_ABS((int)gmsGmkGearWork.move_draw_dir_spd) + AppMain.MTM_MATH_ABS((int)(short)((int)gmsGmkGearWork.move_draw_dir_ofst >> 3));

        if (num1 >= 4)
        {
            if (num1 >= 864)
            {
                val = 1f;
            }
            else
            {
                val = AppMain.FXM_FX32_TO_FLOAT(AppMain.FX_Div(num1 - 4, 860));
                if ((double)val > 1.0)
                {
                    val = 1f;
                }
            }
        }
        gmsGmkGearWork.h_snd_gear.au_player.SetAisac("Speed", val);
        AppMain.OBS_CAMERA obsCamera = AppMain.ObjCameraGet(AppMain.g_obj.glb_camera_id);
        float num2 = AppMain.FXM_FX32_TO_FLOAT(gmsGmkGearWork.gmk_work.ene_com.obj_work.pos.x) - obsCamera.disp_pos.x;
        float num3 = AppMain.FXM_FX32_TO_FLOAT(gmsGmkGearWork.gmk_work.ene_com.obj_work.pos.y) - -obsCamera.disp_pos.y;
        float num4;

        if ((double)num2 < 600.0 && (double)num3 < 600.0)
        {
            float num5 = (float)((double)num2 * (double)num2 + (double)num3 * (double)num3);
            if ((double)num5 <= 90000.0)
            {
                num4 = 1f;
            }
            else if ((double)num5 <= 360000.0)
            {
                num4 = (float)((360000.0 - (double)num5) / 90000.0);
                if ((double)num4 > 1.0)
                {
                    num4 = 1f;
                }
                else if ((double)num4 < 0.0)
                {
                    num4 = 0.0f;
                }
            }
            else
            {
                num4 = 0.0f;
            }
        }
        else
        {
            num4 = 0.0f;
        }
        gmsGmkGearWork.h_snd_gear.snd_ctrl_param.volume = num4;
    }
예제 #29
0
    private static void gmGmkMoveGearEndStaggerMain(AppMain.OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
        AppMain.GMS_PLAYER_WORK   targetObj      = (AppMain.GMS_PLAYER_WORK)gmsGmkGearWork.gmk_work.ene_com.target_obj;
        if (targetObj == null || targetObj.gmk_obj != obj_work)
        {
            obj_work.user_flag &= 4294967293U;
            if (((AppMain.GMS_GMK_GEAR_WORK)gmsGmkGearWork.sw_gear_obj).gmk_work.ene_com.eve_rec.height == (byte)0)
            {
                gmsGmkGearWork.gmk_work.ene_com.eve_rec.byte_param[1] = (byte)1;
                AppMain.gmGmkMoveGearEndInit(obj_work);
            }
            else
            {
                AppMain.gmGmkMoveGearSwitchRetWaitInit(obj_work);
            }
        }
        else
        {
            int num = ((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 1) == 0 ? 96 : -96;
            switch (gmsGmkGearWork.move_stagger_step)
            {
            case 0:
                gmsGmkGearWork.move_stagger_dir_spd = gmsGmkGearWork.move_stagger_dir_spd * 9 / 10;
                gmsGmkGearWork.move_draw_dir_ofst  += (short)(gmsGmkGearWork.move_stagger_dir_spd >> 5);
                if (AppMain.MTM_MATH_ABS(gmsGmkGearWork.move_stagger_dir_spd) <= 128)
                {
                    ++gmsGmkGearWork.move_stagger_step;
                    gmsGmkGearWork.move_stagger_dir_spd = 0;
                    gmsGmkGearWork.move_stagger_dir_cnt = (ushort)0;
                    gmsGmkGearWork.move_draw_dir_limit  = gmsGmkGearWork.move_draw_dir_ofst;
                    break;
                }
                break;

            case 1:
                gmsGmkGearWork.move_stagger_dir_spd += num * 3 / 2;
                gmsGmkGearWork.move_draw_dir_ofst   += (short)(gmsGmkGearWork.move_stagger_dir_spd >> 5);
                if (gmsGmkGearWork.move_stagger_dir_cnt == (ushort)0)
                {
                    if (((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 1) != 0)
                    {
                        if ((int)gmsGmkGearWork.move_draw_dir_ofst < (int)gmsGmkGearWork.move_draw_dir_limit / 2)
                        {
                            gmsGmkGearWork.move_stagger_dir_cnt = (ushort)1;
                            break;
                        }
                        break;
                    }
                    if ((int)gmsGmkGearWork.move_draw_dir_ofst > (int)gmsGmkGearWork.move_draw_dir_limit / 2)
                    {
                        gmsGmkGearWork.move_stagger_dir_cnt = (ushort)1;
                        break;
                    }
                    break;
                }
                ++gmsGmkGearWork.move_stagger_dir_cnt;
                if (gmsGmkGearWork.move_stagger_dir_cnt == (ushort)3)
                {
                    ++gmsGmkGearWork.move_stagger_step;
                    break;
                }
                break;

            case 2:
                gmsGmkGearWork.move_stagger_dir_spd -= num * 3 / 2;
                gmsGmkGearWork.move_draw_dir_ofst   += (short)(gmsGmkGearWork.move_stagger_dir_spd >> 5);
                if (AppMain.MTM_MATH_ABS(gmsGmkGearWork.move_stagger_dir_spd) <= 128)
                {
                    gmsGmkGearWork.move_stagger_dir_spd = 0;
                    if (((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 1) != 0 && AppMain.GmPlayerKeyCheckWalkRight(targetObj) || ((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 1) == 0 && AppMain.GmPlayerKeyCheckWalkLeft(targetObj))
                    {
                        ++gmsGmkGearWork.move_stagger_step;
                        break;
                    }
                    gmsGmkGearWork.move_stagger_step = (ushort)5;
                    break;
                }
                break;

            case 3:
                gmsGmkGearWork.move_stagger_dir_spd -= num;
                gmsGmkGearWork.move_draw_dir_ofst   += (short)(gmsGmkGearWork.move_stagger_dir_spd >> 5);
                if (AppMain.MTM_MATH_ABS((int)gmsGmkGearWork.move_draw_dir_ofst) > 1820)
                {
                    ++gmsGmkGearWork.move_stagger_step;
                    break;
                }
                break;

            case 4:
                gmsGmkGearWork.move_stagger_dir_spd += num;
                gmsGmkGearWork.move_draw_dir_ofst   += (short)(gmsGmkGearWork.move_stagger_dir_spd >> 5);
                if (AppMain.MTM_MATH_ABS(gmsGmkGearWork.move_stagger_dir_spd) <= 128)
                {
                    gmsGmkGearWork.move_stagger_step    = (ushort)1;
                    gmsGmkGearWork.move_stagger_dir_spd = 0;
                    gmsGmkGearWork.move_stagger_dir_cnt = (ushort)0;
                    gmsGmkGearWork.move_draw_dir_limit  = gmsGmkGearWork.move_draw_dir_ofst;
                    break;
                }
                break;

            case 5:
                gmsGmkGearWork.move_stagger_dir_spd -= num;
                gmsGmkGearWork.move_draw_dir_ofst   += (short)(gmsGmkGearWork.move_stagger_dir_spd >> 5);
                if (AppMain.MTM_MATH_ABS((int)gmsGmkGearWork.move_draw_dir_ofst) <= 309)
                {
                    ++gmsGmkGearWork.move_stagger_step;
                    break;
                }
                break;

            case 6:
                gmsGmkGearWork.move_stagger_dir_spd += num;
                gmsGmkGearWork.move_draw_dir_ofst   += (short)(gmsGmkGearWork.move_stagger_dir_spd >> 5);
                if (AppMain.MTM_MATH_ABS(gmsGmkGearWork.move_stagger_dir_spd) <= 128)
                {
                    gmsGmkGearWork.move_stagger_dir_spd = 0;
                    gmsGmkGearWork.move_draw_dir_ofst  /= (short)2;
                    ++gmsGmkGearWork.move_stagger_step;
                    break;
                }
                break;

            case 7:
                if (gmsGmkGearWork.move_draw_dir_ofst != (short)0)
                {
                    gmsGmkGearWork.move_draw_dir_ofst /= (short)2;
                }
                if (((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 1) != 0 && AppMain.GmPlayerKeyCheckWalkRight(targetObj) || ((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 1) == 0 && AppMain.GmPlayerKeyCheckWalkLeft(targetObj))
                {
                    gmsGmkGearWork.move_stagger_step  = (ushort)3;
                    gmsGmkGearWork.move_draw_dir_ofst = (short)0;
                    break;
                }
                break;
            }
            obj_work.user_work  = (uint)gmsGmkGearWork.move_stagger_step;
            obj_work.user_timer = gmsGmkGearWork.move_stagger_dir_spd;
            AppMain.gmGmkMoveGearSetSpd(obj_work, 0);
        }
    }
예제 #30
0
    private static void gmGmkMoveGearSetSpd(AppMain.OBS_OBJECT_WORK obj_work, int spd_m)
    {
        AppMain.GMS_GMK_GEAR_WORK gmsGmkGearWork = (AppMain.GMS_GMK_GEAR_WORK)obj_work;
        int num1 = spd_m;
        int num2;
        int num3;

        if (((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 1) != 0)
        {
            num2  = gmsGmkGearWork.gmk_work.ene_com.born_pos_y - obj_work.pos.y;
            num3  = gmsGmkGearWork.move_end_y - obj_work.pos.y;
            spd_m = -spd_m;
        }
        else
        {
            num2 = gmsGmkGearWork.gmk_work.ene_com.born_pos_x - obj_work.pos.x;
            num3 = gmsGmkGearWork.move_end_x - obj_work.pos.x;
        }
        if (((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 2) != 0)
        {
            if (spd_m < 0)
            {
                if (num3 > spd_m)
                {
                    spd_m = num3;
                }
            }
            else if (num2 < spd_m)
            {
                spd_m = num2;
            }
        }
        else if (spd_m > 0)
        {
            if (num3 < spd_m)
            {
                spd_m = num3;
            }
        }
        else if (num2 > spd_m)
        {
            spd_m = num2;
        }
        obj_work.spd_m = spd_m;
        if (spd_m != 0 && ((int)gmsGmkGearWork.gmk_work.ene_com.eve_rec.flag & 1) != 0)
        {
            obj_work.spd.x += 4096;
        }
        gmsGmkGearWork.old_move_draw_dir = gmsGmkGearWork.move_draw_dir;
        gmsGmkGearWork.move_draw_dir_spd = (short)(-num1 >> 5);
        gmsGmkGearWork.move_draw_dir    += (ushort)gmsGmkGearWork.move_draw_dir_spd;
        AppMain.nnMakeRotateZMatrix(obj_work.obj_3d.user_obj_mtx_r, (int)gmsGmkGearWork.move_draw_dir * 2 + (int)gmsGmkGearWork.move_draw_dir_ofst);
        if ((int)gmsGmkGearWork.old_move_draw_dir == (int)gmsGmkGearWork.move_draw_dir || (obj_work.col_work.obj_col.rider_obj == null || obj_work.col_work.obj_col.rider_obj.obj_type != (ushort)1 || ((AppMain.GMS_PLAYER_WORK)obj_work.col_work.obj_col.rider_obj).gmk_obj != null) && (obj_work.col_work.obj_col.toucher_obj == null || obj_work.col_work.obj_col.toucher_obj.obj_type != (ushort)1 || ((AppMain.GMS_PLAYER_WORK)obj_work.col_work.obj_col.toucher_obj).gmk_obj != null) || gmsGmkGearWork.gmk_work.ene_com.target_obj != null)
        {
            return;
        }
        AppMain.GMS_PLAYER_WORK ply_work = (AppMain.GMS_PLAYER_WORK)obj_work.col_work.obj_col.rider_obj ?? (AppMain.GMS_PLAYER_WORK)obj_work.col_work.obj_col.toucher_obj;
        if (ply_work == null || ply_work.gmk_obj == obj_work)
        {
            return;
        }
        AppMain.gmGmkGearSetRotFlow(obj_work, ply_work, ((int)(short)gmsGmkGearWork.move_draw_dir - (int)(short)gmsGmkGearWork.old_move_draw_dir) * 2);
    }