Пример #1
0
sge::font::string
sanguis::client::gui::perk::make_description(
	sanguis::client::perk::info const &_info
)
{
	return
		SGE_FONT_LIT('(')
		+
		sge::font::from_fcppt_string(
			fcppt::insert_to_fcppt_string(
				_info.level()
			)
		)
		+
		SGE_FONT_LIT('/')
		+
		sge::font::from_fcppt_string(
			fcppt::insert_to_fcppt_string(
				_info.max_level()
			)
		)
		+
		SGE_FONT_LIT(") (requires player level ")
		+
		sge::font::from_fcppt_string(
			fcppt::insert_to_fcppt_string(
				_info.required_player_level()
			)
		)
		+
		SGE_FONT_LIT(", parent level ")
		+
		sge::font::from_fcppt_string(
			fcppt::insert_to_fcppt_string(
				_info.required_parent_level()
			)
		)
		+
		SGE_FONT_LIT(')')
		;
}
Пример #2
0
sanguis::server::console::console(
	sanguis::server::send_callback const &_send,
	sanguis::server::unicast_callback const &_unicast
)
:
	object_(
		sge::console::prefix(
			SGE_FONT_LIT('/')
		)
	),
	send_(
		_send
	),
	unicast_(
		_unicast
	),
	known_commands_()
{
}
Пример #3
0
awl::main::exit_code const
example_main(
	awl::main::function_context const &_main_function_context
)
try
{
	if(
		_main_function_context.argc() > 2
	)
	{
		fcppt::io::cerr()
			<< FCPPT_TEXT("Pass exactly one argument to show a given text")
			FCPPT_TEXT(" or pass nothing to see the default text.\n");

		return
			awl::main::exit_failure();
	}

	sge::systems::instance<
		boost::mpl::vector4<
			sge::systems::with_renderer<
				sge::systems::renderer_caps::ffp
			>,
			sge::systems::with_window,
			sge::systems::with_input<
				boost::mpl::vector1<
					sge::systems::keyboard_collector
				>
			>,
			sge::systems::with_image2d
		>
	> const sys(
		sge::systems::make_list
		(
			sge::systems::window(
				sge::systems::window_source(
					sge::systems::original_window(
						sge::window::title(
							FCPPT_TEXT("sge animtest")
						)
					)
				)
			)
		)
		(
			sge::systems::renderer(
				sge::renderer::pixel_format::object(
					sge::renderer::pixel_format::color::depth32,
					sge::renderer::pixel_format::depth_stencil::off,
					sge::renderer::pixel_format::optional_multi_samples(),
					sge::renderer::pixel_format::srgb::no
				),
				sge::renderer::display_mode::parameters(
					sge::renderer::display_mode::vsync::on,
					sge::renderer::display_mode::optional_object()
				),
				sge::viewport::optional_resize_callback{
					sge::viewport::center_on_resize(
						sge::window::dim{
							1024u,
							768u
						}
					)
				}
			)
		)
		(
			sge::systems::input(
				sge::systems::cursor_option_field::null()
			)
		)
		(
			sge::systems::image2d(
				sge::media::optional_extension_set(
					sge::media::extension_set{
						sge::media::extension(
							FCPPT_TEXT("png")
						)
					}
				)
			)
		)
	);

	sge::font::object_unique_ptr const font_object(
		sge::font::bitmap::create(
			sys.log_context(),
			sge::config::media_path()
			/ FCPPT_TEXT("fonts")
			/ FCPPT_TEXT("bitmap")
			/ FCPPT_TEXT("font.json"),
			sys.image_system()
		)
	);

	fcppt::signal::auto_connection const escape_connection(
		sge::systems::quit_on_escape(
			sys
		)
	);

	sge::font::string const string(
		_main_function_context.argc() == 2
		?
			sge::font::from_fcppt_string(
				fcppt::from_std_string(
					_main_function_context.argv()[1]
				)
			)
		:
			SGE_FONT_LIT("test abcd e 123456789 10 11")
	);

	sge::font::draw::static_text static_text_left(
		sys.renderer_device_ffp(),
		*font_object,
		string,
		sge::font::text_parameters(
			sge::font::align_h::variant(
				sge::font::align_h::left(
					sge::font::align_h::max_width(
						300
					)
				)
			)
		),
		sge::font::vector(
			100,
			100
		),
		sge::image::color::predef::white(),
		sge::renderer::texture::emulate_srgb::yes
	);

	sge::font::draw::static_text static_text_center(
		sys.renderer_device_ffp(),
		*font_object,
		string,
		sge::font::text_parameters(
			sge::font::align_h::variant(
				sge::font::align_h::center(
					sge::font::align_h::max_width(
						300
					)
				)
			)
		),
		sge::font::vector(
			400,
			100
		),
		sge::image::color::predef::white(),
		sge::renderer::texture::emulate_srgb::yes
	);

	sge::font::draw::static_text static_text_right(
		sys.renderer_device_ffp(),
		*font_object,
		string,
		sge::font::text_parameters(
			sge::font::align_h::variant(
				sge::font::align_h::right(
					sge::font::align_h::max_width(
						300
					)
				)
			)
		),
		sge::font::vector(
			700,
			100
		),
		sge::image::color::predef::white(),
		sge::renderer::texture::emulate_srgb::yes
	);

	while(
		sys.window_system().poll()
	)
	{
		sge::renderer::context::scoped_ffp const scoped_block(
			sys.renderer_device_ffp(),
			sys.renderer_device_ffp().onscreen_target()
		);

		scoped_block.get().clear(
			sge::renderer::clear::parameters()
			.back_buffer(
				sge::image::color::predef::black()
			)
		);

		static_text_left.draw(
			scoped_block.get()
		);

		static_text_center.draw(
			scoped_block.get()
		);

		static_text_right.draw(
			scoped_block.get()
		);
	}

	return
		sys.window_system().exit_code();
}
catch(
	fcppt::exception const &_exception
)
{
	fcppt::io::cerr()
		<< _exception.string()
		<< FCPPT_TEXT('\n');

	return awl::main::exit_failure();
}
catch(
	std::exception const &_exception
)
{
	std::cerr << _exception.what() << '\n';

	return awl::main::exit_failure();
}
Пример #4
0
awl::main::exit_code const
example_main(
	awl::main::function_context const &
)
try
{
	sge::systems::instance<
		boost::mpl::vector5<
			sge::systems::with_renderer<
				sge::systems::renderer_caps::ffp
			>,
			sge::systems::with_window,
			sge::systems::with_input<
				boost::mpl::vector2<
					sge::systems::focus_collector,
					sge::systems::keyboard_collector
				>
			>,
			sge::systems::with_image2d,
			sge::systems::with_font
		>
	> const sys(
		sge::systems::make_list
		(
			sge::systems::window(
				sge::systems::window_source(
					sge::systems::original_window(
						sge::window::title(
							FCPPT_TEXT("sge console test")
						)
					)
				)
			)
		)
		(
			sge::systems::renderer(
				sge::renderer::pixel_format::object(
					sge::renderer::pixel_format::color::depth32,
					sge::renderer::pixel_format::depth_stencil::off,
					sge::renderer::pixel_format::optional_multi_samples(),
					sge::renderer::pixel_format::srgb::no
				),
				sge::renderer::display_mode::parameters(
					sge::renderer::display_mode::vsync::on,
					sge::renderer::display_mode::optional_object()
				),
				sge::viewport::optional_resize_callback{
					sge::viewport::center_on_resize(
						sge::window::dim{
							1024u,
							768u
						}
					)
				}
			)
		)
		(
			sge::systems::input(
				sge::systems::cursor_option_field::null()
			)
		)
		(
			sge::systems::image2d(
				sge::media::optional_extension_set(
					sge::media::extension_set{
						sge::media::extension(
							FCPPT_TEXT("png")
						)
					}
				)
			)
		)
	);

	fcppt::signal::auto_connection const escape_connection(
		sge::systems::quit_on_escape(
			sys
		)
	);

	sge::console::object object(
		sge::console::prefix(
			SGE_FONT_LIT('/')
		)
	);

	fcppt::signal::auto_connection const c0(
		object.insert(
			sge::console::callback::convenience<
				void()
			>(
				[
					&sys
				]{
					sys.window_system().quit(
						awl::main::exit_success()
					);
				},
				sge::console::callback::name(
					SGE_FONT_LIT("quit")
				),
				sge::console::callback::short_description(
					SGE_FONT_LIT("Usage: /quit")
				)
			)
		)
	);

	fcppt::signal::auto_connection const c1(
		object.register_fallback(
			sge::console::fallback{
				[](
					sge::font::string const &_arg
				)
				{
					fcppt::io::cout()
						<< FCPPT_TEXT("fallback called with argument:")
						<< sge::font::to_fcppt_string(
							_arg
						)
						<< FCPPT_TEXT('\n');
				}
			}
		)
	);

	fcppt::signal::auto_connection const c2(
		object.insert(
			sge::console::callback::convenience<
				void(float)
			>(
				[
					&object
				](
					float const _value
				)
				{
					object.emit_message(
						SGE_FONT_LIT("New value is ")
						+
						fcppt::insert_to_string<
							sge::font::string
						>(
							_value
							+
							1.f
						)
					);
				},
				sge::console::callback::name(
					SGE_FONT_LIT("increment")
				),
				sge::console::callback::short_description(
					SGE_FONT_LIT("Usage: /increment <float-value>")
				)
			)
			.long_description(
				SGE_FONT_LIT("Increments the float value (extremely useful!)")
			)
		)
	);

	sge::texture::part_raw_ptr const tex_bg(
		sge::renderer::texture::create_planar_from_path(
			sge::config::media_path()
			/ FCPPT_TEXT("images")
			/ FCPPT_TEXT("grass.png"),
			sys.renderer_device_ffp(),
			sys.image_system(),
			sge::renderer::texture::mipmap::off(),
			sge::renderer::resource_flags_field::null(),
			sge::renderer::texture::emulate_srgb_from_caps(
				sys.renderer_device_ffp().caps()
			)
		)
	);

	sge::font::object_unique_ptr const font_object(
		sys.font_system().create_font(
			sge::font::parameters()
		)
	);

	sge::console::gfx::object gfx(
		object,
		sys.renderer_device_ffp(),
		sge::console::gfx::font_color(
			sge::image::color::predef::white()
		),
		*font_object,
		sys.focus_collector(),
		sge::font::rect{
			fcppt::math::vector::null<
				sge::font::rect::vector
			>(),
			sge::font::rect::dim{
				400,
				300
			}
		},
		sge::console::gfx::output_line_limit(
			100u
		)
	);

	sge::console::muxing_narrow_streambuf stdout_streambuf(
		std::cout,
		object,
		sge::console::muxing::enabled);

	std::cout << "Test for console muxer (cout).\n";
	std::cout << "You should see this message in the console and in the terminal (if available)\n";

	sge::console::muxing_narrow_streambuf stderr_streambuf(
		std::cerr,
		object,
		sge::console::muxing::disabled);

	std::cerr << "Test for console muxer (cerr).\n";
	std::cerr << "You should see this message _only_ in the console and _not_ in the terminal (if available)\n";

	gfx.active(
		true
	);

	while(
		sys.window_system().poll()
	)
	{
		sge::renderer::context::scoped_ffp const scoped_block(
			sys.renderer_device_ffp(),
			sys.renderer_device_ffp().onscreen_target()
		);

		scoped_block.get().clear(
			sge::renderer::clear::parameters()
			.back_buffer(
				sge::image::color::predef::black()
			)
		);

		gfx.render(
			scoped_block.get()
		);
	}

	return
		sys.window_system().exit_code();
}
catch(
	fcppt::exception const &_error
)
{
	fcppt::io::cerr()
		<< _error.string()
		<< FCPPT_TEXT('\n');

	return awl::main::exit_failure();
}
catch(
	std::exception const &_error
)
{
	std::cerr
		<< _error.what()
		<< '\n';

	return awl::main::exit_failure();
}
Пример #5
0
sge::gui::widget::choices::choices(
	sge::gui::context &_context,
	sge::gui::style::base const &_style,
	sge::renderer::device::ffp &_renderer,
	sge::font::object &_font,
	sge::gui::string_container const &_strings,
	sge::gui::optional_index const _opt_index
)
:
	sge::gui::widget::box_container(
		_context,
		sge::gui::widget::reference_alignment_vector(),
		sge::rucksack::axis::x
	),
	strings_(
		_strings
	),
	left_button_(
		_style,
		_renderer,
		_font,
		SGE_FONT_LIT("<"),
		sge::gui::optional_needed_width()
	),
	middle_text_(
		_style,
		_renderer,
		_font,
		fcppt::optional::maybe(
			_opt_index,
			[]{
				return
					sge::font::string();
			},
			[
				&_strings
			](
				sge::gui::index const _index
			)
			{
				return
					_strings[
						_index.get()
					];
			}
		),
		_style.text_color(),
		sge::gui::optional_needed_width(
			sge::gui::needed_width_from_strings(
				_font,
				_strings
			)
		)
	),
	right_button_(
		_style,
		_renderer,
		_font,
		SGE_FONT_LIT(">"),
		sge::gui::optional_needed_width()
	),
	index_{
		_opt_index
	},
	left_connection_{
		left_button_.click(
			sge::gui::click_callback{
				std::bind(
					&sge::gui::widget::choices::left_clicked,
					this
				)
			}
		)
	},
	right_connection_{
		right_button_.click(
			sge::gui::click_callback{
				std::bind(
					&sge::gui::widget::choices::right_clicked,
					this
				)
			}
		)
	},
	index_changed_()
{
	this->push_back(
		sge::gui::widget::reference_alignment_pair(
			sge::gui::widget::reference(
				left_button_
			),
			sge::rucksack::alignment::center
		)
	);

	this->push_back(
		sge::gui::widget::reference_alignment_pair(
			sge::gui::widget::reference(
				middle_text_
			),
			sge::rucksack::alignment::center
		)
	);

	this->push_back(
		sge::gui::widget::reference_alignment_pair(
			sge::gui::widget::reference(
				right_button_
			),
			sge::rucksack::alignment::center
		)
	);
}