Exemplo n.º 1
0
void set_camera_mode (camera *raw, camera_modes mode, int auto_edit)
{
	ASSERT (raw);

/*
	if ((mode >= 0) && (mode < NUM_CAMERA_MODES))
	{
		debug_log ("Setting camera mode to %s", camera_mode_names[mode]);
	}*/

	// Jabberwock 031009 - Satellite view - only satellite view for sites
	if (get_local_entity_type (raw->external_view_entity) == ENTITY_TYPE_KEYSITE)
	{ 
		mode = CAMERA_MODE_SATELLITE;
		auto_edit = 0;
	}
	// Jabberwock 031009 ends
	
	
	if (auto_edit)
	{
		if (!raw->auto_edit)
		{
			set_status_message (get_trans ("Auto-action camera"), STATUS_MESSAGE_TYPE_CAMERA);
		}
	}
	else
	{
		const char
			*s;

		s = get_camera_mode_name (mode);

		if (s)
		{
			set_status_message (get_trans (s), STATUS_MESSAGE_TYPE_CAMERA);
		}
	}
	
	switch (mode)
	{
		////////////////////////////////////////
		case CAMERA_MODE_CHASE:
		////////////////////////////////////////
		{
			reset_chase_camera (raw);

			break;
		}
		////////////////////////////////////////
		case CAMERA_MODE_END_OF_MISSION:
		////////////////////////////////////////
		{
			reset_end_of_mission_camera (raw);

			break;
		}
		////////////////////////////////////////
		case CAMERA_MODE_DROP:
		////////////////////////////////////////
		{
			reset_drop_camera (raw);

			break;
		}
		////////////////////////////////////////
		case CAMERA_MODE_STATIC:
		////////////////////////////////////////
		{
			reset_static_camera (raw);

			break;
		}
		
		// Jabberwock 031009 Satellite view
		case CAMERA_MODE_SATELLITE:
		////////////////////////////////////////
		{
			reset_satellite_camera (raw);

			break;
		}
		
		// Jabberwock 031009 ends
		
		////////////////////////////////////////
		case CAMERA_MODE_EJECT:
		////////////////////////////////////////
		{
			reset_eject_camera (raw);

			break;
		}
		////////////////////////////////////////
		case CAMERA_MODE_FLY_BY:
		////////////////////////////////////////
		{
			reset_fly_by_camera (raw);

			break;
		}
		////////////////////////////////////////
		case CAMERA_MODE_CINEMATIC:
		////////////////////////////////////////
		{
			reset_cinematic_camera (raw);

			break;
		}
		////////////////////////////////////////
		case CAMERA_MODE_BUILDING:
		////////////////////////////////////////
		{
			reset_building_camera (raw);

			break;
		}
		////////////////////////////////////////
		case CAMERA_MODE_WEAPON:
		////////////////////////////////////////
		{
			if (weapon_camera_valid (raw))
			{
				reset_weapon_camera (raw);
			}
			else
			{
				mode = CAMERA_MODE_CHASE;

				reset_chase_camera (raw);
			}

			break;
		}
		////////////////////////////////////////
		case CAMERA_MODE_WEAPON_EXPLOSION:
		////////////////////////////////////////
		{
			reset_weapon_explosion_camera (raw);

			break;
		}
		////////////////////////////////////////
		case CAMERA_MODE_DEBRIEFING:
		////////////////////////////////////////
		{
			if (debriefing_camera_valid (raw))
			{
				reset_debriefing_camera (raw);
			}
			else
			{
				mode = CAMERA_MODE_CHASE;

				reset_chase_camera (raw);
			}

			break;
		}
		////////////////////////////////////////
		case CAMERA_MODE_RECOGNITION_GUIDE_TOP_VIEW:
		////////////////////////////////////////
		{
			if (recognition_guide_top_view_camera_valid (raw))
			{
				reset_recognition_guide_top_view_camera (raw);
			}
			else
			{
				mode = CAMERA_MODE_CHASE;

				reset_chase_camera (raw);
			}

			break;
		}
		////////////////////////////////////////
		case CAMERA_MODE_RECOGNITION_GUIDE_SIDE_VIEW:
		////////////////////////////////////////
		{
			if (recognition_guide_side_view_camera_valid (raw))
			{
				reset_recognition_guide_side_view_camera (raw);
			}
			else
			{
				mode = CAMERA_MODE_CHASE;

				reset_chase_camera (raw);
			}

			break;
		}
		////////////////////////////////////////
		case CAMERA_MODE_RECOGNITION_GUIDE_FRONT_VIEW:
		////////////////////////////////////////
		{
			if (recognition_guide_front_view_camera_valid (raw))
			{
				reset_recognition_guide_front_view_camera (raw);
			}
			else
			{
				mode = CAMERA_MODE_CHASE;

				reset_chase_camera (raw);
			}

			break;
		}
		////////////////////////////////////////
		case CAMERA_MODE_RECOGNITION_GUIDE_3D_VIEW:
		////////////////////////////////////////
		{
			if (recognition_guide_3d_view_camera_valid (raw))
			{
				reset_recognition_guide_3d_view_camera (raw);
			}
			else
			{
				mode = CAMERA_MODE_CHASE;

				reset_chase_camera (raw);
			}

			break;
		}
		////////////////////////////////////////
		case CAMERA_MODE_FREE:
		////////////////////////////////////////
		{
			{
				mode = CAMERA_MODE_FREE;

				reset_free_camera (raw);
			}

			break;
		}
		////////////////////////////////////////
		default:
		////////////////////////////////////////
		{
			debug_fatal ("Invalid camera mode = %d", mode);

			break;
		}
	}

	raw->camera_mode = mode;

	raw->auto_edit = auto_edit;
}
Exemplo n.º 2
0
void set_camera_mode (camera *raw, camera_modes mode, int auto_edit)
{
    ASSERT (raw);

    if ((mode >= 0) && (mode < NUM_CAMERA_MODES))
    {
        debug_log ("Setting camera mode to %s", camera_mode_names[mode]);
    }

    if (auto_edit)
    {
        if (!raw->auto_edit)
        {
            set_status_message (get_trans ("Auto-action camera"), STATUS_MESSAGE_TYPE_CAMERA);
        }
    }
    else
    {
        char
        *s;

        s = get_camera_mode_name (mode);

        if (s)
        {
            set_status_message (get_trans (s), STATUS_MESSAGE_TYPE_CAMERA);
        }
    }

    switch (mode)
    {
    ////////////////////////////////////////
    case CAMERA_MODE_CHASE:
        ////////////////////////////////////////
    {
        reset_chase_camera (raw);

        break;
    }
    ////////////////////////////////////////
    case CAMERA_MODE_END_OF_MISSION:
        ////////////////////////////////////////
    {
        reset_end_of_mission_camera (raw);

        break;
    }
    ////////////////////////////////////////
    case CAMERA_MODE_DROP:
        ////////////////////////////////////////
    {
        reset_drop_camera (raw);

        break;
    }
    ////////////////////////////////////////
    case CAMERA_MODE_STATIC:
        ////////////////////////////////////////
    {
        reset_static_camera (raw);

        break;
    }
    ////////////////////////////////////////
    case CAMERA_MODE_EJECT:
        ////////////////////////////////////////
    {
        reset_eject_camera (raw);

        break;
    }
    ////////////////////////////////////////
    case CAMERA_MODE_FLY_BY:
        ////////////////////////////////////////
    {
        reset_fly_by_camera (raw);

        break;
    }
    ////////////////////////////////////////
    case CAMERA_MODE_CINEMATIC:
        ////////////////////////////////////////
    {
        reset_cinematic_camera (raw);

        break;
    }
    ////////////////////////////////////////
    case CAMERA_MODE_BUILDING:
        ////////////////////////////////////////
    {
        reset_building_camera (raw);

        break;
    }
    ////////////////////////////////////////
    case CAMERA_MODE_WEAPON:
        ////////////////////////////////////////
    {
        if (weapon_camera_valid (raw))
        {
            reset_weapon_camera (raw);
        }
        else
        {
            mode = CAMERA_MODE_CHASE;

            reset_chase_camera (raw);
        }

        break;
    }
    ////////////////////////////////////////
    case CAMERA_MODE_WEAPON_EXPLOSION:
        ////////////////////////////////////////
    {
        reset_weapon_explosion_camera (raw);

        break;
    }
    ////////////////////////////////////////
    case CAMERA_MODE_DEBRIEFING:
        ////////////////////////////////////////
    {
        if (debriefing_camera_valid (raw))
        {
            reset_debriefing_camera (raw);
        }
        else
        {
            mode = CAMERA_MODE_CHASE;

            reset_chase_camera (raw);
        }

        break;
    }
    ////////////////////////////////////////
    case CAMERA_MODE_RECOGNITION_GUIDE_TOP_VIEW:
        ////////////////////////////////////////
    {
        if (recognition_guide_top_view_camera_valid (raw))
        {
            reset_recognition_guide_top_view_camera (raw);
        }
        else
        {
            mode = CAMERA_MODE_CHASE;

            reset_chase_camera (raw);
        }

        break;
    }
    ////////////////////////////////////////
    case CAMERA_MODE_RECOGNITION_GUIDE_SIDE_VIEW:
        ////////////////////////////////////////
    {
        if (recognition_guide_side_view_camera_valid (raw))
        {
            reset_recognition_guide_side_view_camera (raw);
        }
        else
        {
            mode = CAMERA_MODE_CHASE;

            reset_chase_camera (raw);
        }

        break;
    }
    ////////////////////////////////////////
    case CAMERA_MODE_RECOGNITION_GUIDE_FRONT_VIEW:
        ////////////////////////////////////////
    {
        if (recognition_guide_front_view_camera_valid (raw))
        {
            reset_recognition_guide_front_view_camera (raw);
        }
        else
        {
            mode = CAMERA_MODE_CHASE;

            reset_chase_camera (raw);
        }

        break;
    }
    ////////////////////////////////////////
    case CAMERA_MODE_RECOGNITION_GUIDE_3D_VIEW:
        ////////////////////////////////////////
    {
        if (recognition_guide_3d_view_camera_valid (raw))
        {
            reset_recognition_guide_3d_view_camera (raw);
        }
        else
        {
            mode = CAMERA_MODE_CHASE;

            reset_chase_camera (raw);
        }

        break;
    }
    ////////////////////////////////////////
    default:
        ////////////////////////////////////////
    {
        debug_fatal ("Invalid camera mode = %d", mode);

        break;
    }
    }

    raw->camera_mode = mode;

    raw->auto_edit = auto_edit;
}