Browse Source

show bg, logo and cursor

master
Alexandros Theodotou 2 years ago
parent
commit
88bc5ef116
Signed by: alex GPG Key ID: 022EAE42313D70F3
  1. 58
      inc/audio/audio_clip.h
  2. 83
      inc/framework/graphics/sprites/font_awesome.h
  3. 130
      inc/framework/graphics/sprites/icon_usage.h
  4. 66
      inc/game/beatmaps/beatmap.h
  5. 100
      inc/game/beatmaps/beatmap_difficulty.h
  6. 328
      inc/game/beatmaps/beatmap_info.h
  7. 70
      inc/game/io/file_info.h
  8. 125
      inc/game/ion_world.h
  9. 69
      inc/game/replays/replay.h
  10. 124
      inc/game/rulesets/mods/mod.h
  11. 80
      inc/game/rulesets/mods/mod_autoplay.h
  12. 96
      inc/game/rulesets/ruleset.h
  13. 84
      inc/game/rulesets/ruleset_info.h
  14. 90
      inc/game/rulesets/scoring/hit_result.h
  15. 70
      inc/game/scoring/score.h
  16. 117
      inc/game/scoring/score_info.h
  17. 356
      inc/game/skinning/skin.h
  18. 58
      inc/game/skinning/skin_manager.h
  19. 139
      inc/game/users/user.h
  20. 90
      inc/game/users/user_activity.h
  21. 118
      inc/game/users/user_statistics.h
  22. 72
      inc/game/users/user_status.h
  23. 62
      inc/gui/cursor.h
  24. 42
      inc/gui/gl.h
  25. 27
      inc/gui/gsl/rotate_by_angle.vert
  26. 7
      inc/gui/gsl/unchanged.frag
  27. 8
      inc/gui/gsl/unchanged.vert
  28. 76
      inc/gui/rgba.h
  29. 54
      inc/gui/shader.h
  30. 50
      inc/gui/shader_manager.h
  31. 116
      inc/gui/texture.h
  32. 37
      inc/math/matrix.h
  33. 162
      inc/utils/io.h
  34. 4
      inc/utils/pango.h
  35. 3
      meson.build
  36. 96
      src/framework/graphics/sprites/font_awesome.c
  37. 116
      src/framework/graphics/sprites/icon_usage.c
  38. 73
      src/game/beatmaps/beatmap_difficulty.c
  39. 168
      src/game/ion_world.c
  40. 22
      src/game/meson.build
  41. 58
      src/game/rulesets/mods/mod.c
  42. 50
      src/game/rulesets/mods/mod_autoplay.c
  43. 76
      src/game/rulesets/ruleset.c
  44. 77
      src/game/rulesets/ruleset_info.c
  45. 21
      src/game/skinning/meson.build
  46. 210
      src/game/skinning/skin.c
  47. 58
      src/game/skinning/skin_manager.c
  48. 69
      src/gui/cursor.c
  49. 86
      src/gui/gl.c
  50. 6
      src/gui/meson.build
  51. 114
      src/gui/shader.c
  52. 40
      src/gui/shader_manager.c
  53. 193
      src/gui/texture.c
  54. 49
      src/main.c
  55. 20
      src/math/meson.build
  56. 2
      src/meson.build
  57. 360
      src/utils/io.c
  58. 3
      src/utils/meson.build
  59. 7
      src/utils/pango.c

58
inc/audio/audio_clip.h

@ -0,0 +1,58 @@
/*
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Ion
*
* Ion is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* Ion is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU General Affero Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/**
* \file
*
* Audio clip.
*/
#ifndef __AUDIO_AUDIO_CLIP_H__
#define __AUDIO_AUDIO_CLIP_H__
/**
* @addtogroup audio
*
* @{
*/
/**
* An audio clip to be used for small audio files.
*/
typedef struct AudioClip
{
char * abs_path;
float * frames;
int num_frames;
unsigned int num_channels;
} AudioClip;
/**
* Creates a new audio clip.
*/
AudioClip *
audio_clip_new (
const char * abs_path);
/**
* @}
*/
#endif

83
inc/framework/graphics/sprites/font_awesome.h

@ -0,0 +1,83 @@
/*
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Ion
*
* Ion is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* Ion is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU General Affero Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
* Copyright (c) 2019 ppy Pty Ltd <contact@ppy.sh>.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* \file
*
* FontAwesome IconUsage.
*/
#ifndef __FRAMEWORK_GRAPHICS_SPRITES_FONT_AWESOME_H__
#define __FRAMEWORK_GRAPHICS_SPRITES_FONT_AWESOME_H__
typedef struct IconUsage IconUsage;
/**
* @addtogroup framework
*
* @{
*/
typedef enum FontAwesomeWeight
{
FONT_AWESOME_WEIGHT_REGULAR,
FONT_AWESOME_WEIGHT_SOLID,
} FontAwesomeWeight;
typedef enum FontAwesomeIconType
{
FONT_AWESOME_ICON_TYPE_QUESTION,
} FontAwesomeIconType;
/**
* Returns a new IconUsage for a FontAwesome icon.
*/
IconUsage *
font_awesome_new_icon_usage (
FontAwesomeWeight weight,
FontAwesomeIconType icon);
/**
* @}
*/
#endif

130
inc/framework/graphics/sprites/icon_usage.h

@ -0,0 +1,130 @@
/*
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Ion
*
* Ion is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* Ion is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU General Affero Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
* Copyright (c) 2019 ppy Pty Ltd <contact@ppy.sh>.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* \file
*
* Specific usage of a font icon.
*/
#ifndef __FRAMEWORK_GRAPHICS_SPRITES_ICON_USAGE_H__
#define __FRAMEWORK_GRAPHICS_SPRITES_ICON_USAGE_H__
/**
* @addtogroup framework
*
* @{
*/
/**
* Represents a specific usage of a font icon.
*/
typedef struct IconUsage
{
/** The font family name. */
char * family;
/** The font weight. */
char * weight;
/**
* The font's full name to be used for lookups.
*
* This is an aggregate of all other properties
* of IconUsage.
*
* The format is in the form:
* {Family}
* {Family}-Italic
* {Family}-{Weight}Italic
*/
char * font_name;
/** The icon character. */
char icon;
} IconUsage;
/**
* Creates an instance of IconUsage using the specified
* font family, font weight and a value indicating whether
* the used font is italic or not.
*
* @param icon The icon.
* @param family The font family name.
* @param weight The font weight.
*/
IconUsage *
icon_usage_new (
char icon,
char * family,
char * weight);
/**
* Creates a new IconUsage based on the given IconUsage
* by applying the given adjustments.
*
* @param family The font family. If NULL, the value is
* copied from self.
* @param weight The font weight. If NULL, the value is
* copied from self.
*
* @return A new IconUsage.
*/
IconUsage *
icon_usage_new_with (
IconUsage * self,
char * family,
char * weight);
char *
icon_usage_to_string (
IconUsage * self);
int
icon_usage_equals (
IconUsage * self,
IconUsage * other);
/**
* @}
*/
#endif

66
inc/game/beatmaps/beatmap.h

@ -0,0 +1,66 @@
/*
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Ion
*
* Ion is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* Ion is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU General Affero Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
* Copyright (c) 2019 ppy Pty Ltd <contact@ppy.sh>.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* \file
*
* Beatmap.
*/
#ifndef __GAME_BEATMAPS_BEATMAP_H__
#define __GAME_BEATMAPS_BEATMAP_H__
/**
* @addtogroup beatmaps
*
* @{
*/
typedef struct Beatmap
{
/* TODO */
} Beatmap;
/**
* @}
*/
#endif

100
inc/game/beatmaps/beatmap_difficulty.h

@ -0,0 +1,100 @@
/*
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Ion
*
* Ion is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* Ion is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU General Affero Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
* Copyright (c) 2019 ppy Pty Ltd <contact@ppy.sh>.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* \file
*
* Beatmap difficulty.
*/
#ifndef __GAME_BEATMAPS_BEATMAP_DIFFICULTY_H__
#define __GAME_BEATMAPS_BEATMAP_DIFFICULTY_H__
/**
* @addtogroup beatmaps
*
* @{
*/
/** The default value used for all difficulty
* settings except slider multiplier and
* slider tick rate. */
#define BEATMAP_DIFFICULTY_DEFAULT 5
typedef struct BeatmapDifficulty
{
int id;
float drain_rate;
float circle_size;
float overall_difficulty;
float approach_rate;
double slider_multiplier;
double slider_tick_rate;
}
/**
* Maps a difficulty value [0, 10] to a two-piece
* linar range of values.
*
* @param difficulty The difficulty value to be
* mapped.
* @param min Minimum of the resulting range which
* will be achieved by a difficulty value of 0.
* @param mid Midpoint of the resulting range which
* will be achieved by a difficulty value of 5.
* @param max Maximum of the resulting range which
* will be achieved by a difficulty value of 10.
*
* @return Value to which the difficulty value maps
* in the specified range.
*/
double
beatmap_difficulty_range (
double difficulty,
double min,
double mid,
double max);
/**
* @}
*/
#endif

328
inc/game/beatmaps/beatmap_info.h

@ -0,0 +1,328 @@
/*
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Ion
*
* Ion is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* Ion is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU General Affero Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
* Copyright (c) 2019 ppy Pty Ltd <contact@ppy.sh>.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* \file
*
* Beatmap info.
*/
#ifndef __GAME_BEATMAPS_BEATMAP_INFO_H__
#define __GAME_BEATMAPS_BEATMAP_INFO_H__
#include "game/beatmaps/beatmap_difficulty.h"
/**
* @addtogroup beatmaps
*
* @{
*/
typedef enum BeatmapSetOnlineStatus
{
BEATMAP_SET_ONLINE_STATUS_NONE = -3,
BEATMAP_SET_ONLINE_STATUS_GRAVEYARD = -2;
BEATMAP_SET_ONLINE_STATUS_WIP = -1;
BEATMAP_SET_ONLINE_STATUS_PENDING = 0;
BEATMAP_SET_ONLINE_STATUS_RANKED = 1;
BEATMAP_SET_ONLINE_STATUS_APPROVED = 2;
BEATMAP_SET_ONLINE_STATUS_QUALIFIED = 3;
BEATMAP_SET_ONLINE_STATUS_LOVED = 4;
} BeatmapSetOnlineStatus;
typedef struct BeatmapMetadata
{
int id;
/** Romanized title. */
char * title;
/** Unicode title. */
char * title_unicode;
/** Romanized artist. */
char * artist;
/** Unicode artist. */
char * artist_unicode;
BeatmapInfo * beatmaps[16];
int num_beatmaps;
BeatmapSetInfo * beatmap_sets[16];
int num_beatmap_sets;
/** Author user. */
User author;
char * source;
char * tags;
int preview_time;
char * audio_file;
char * background_file;
char * video_file;
}
typedef struct BeatmapSetInfo
{
int id;
int online_id;
time_t date_added;
BeatmapSetOnlineStatus status;
BeatmapMetadata metadata;
BeatmapInfo * beatmaps;
int num_beatmaps;
BeatmapSetOnlineInfo online_info;
BeatmapSetMetrics metrics;
/** The maximum star difficulty of all beatmaps
* in this set. */
double max_star_difficulty;
/** The maximum playable length in ms of all
* beatmaps in this set. */
double max_length;
/** The maximum BPM of all beatmaps in this set. */
double max_bpm;
int delete_pending;
char * hash;
char * storyboard_file;
BeatmapSetFileInfo * files[16];
int num_files;
int is_protected;
} BeatmapSetInfo;
typedef struct BeatmapSetOnlineGenre
{
int id;
char * name;
} BeatmapSetOnlineGenre;
typedef struct BeatmapSetOnlineLanguage
{
int id;
char * name;
} BeatmapSetOnlineLanguage;
typedef struct BeatmapSetOnlineCovers
{
char * cover_low_res;
char * cover;
char * card_low_res;
char * card;
char * list_low_res;
char * list;
} BeatmapSetOnlineCovers;
typedef struct BeatmapSetOnlineAvailability
{
int download_disabled;
char * external_link;
} BeatmapSetOnlineAvailability;
/**
* Beatmap set info retrieved for previewing locally
* without having the set downloaded.
*/
typedef struct BeatmapSetOnlineInfo
{
/** The date this bneatmap was submitted to the
* online listing. */
time_t submitted;
/** The date this beatmap set was ranked. */
time_t ranked;
/** The date this beatmap set was last updated. */
time_t last_updated;
/** The status of this beatmap set. */
BeatmapSetOnlineStatus status;
/** Whether this beatmap set has a background
* video. */
int has_video;
int has_storyboard;
/** The different sizes of cover art for this
* beatmap set. */
BeatmapSetOnlineCovers covers;
/** A small sample clip of this beatmap set's
* song. */
char * preview;
/** BPM of this beatmap set's song. */
double bpm;
/** The amount of plays this beatmap set has. */
int playcount;
/** The amount of people who have favorited this
* beatmap set. */
int favorite_count;
/** Whether this beatmap set has been favorited
* by the current user. */
int has_favorited;
/** The availability of this beatmap set. */
BeatmapSetOnlineAvailability availability;
/** The song genre of this beatmap set. */
BeatmapSetOnlineGenre genre;
/** The song language of this beatmap set. */
BeatmapSetOnlineLanguage language;
} BeatmapSetOnlineInfo;
typedef struct BeatmapSetFileInfo
{
int id;
int beatmap_set_info_id;
int file_info_id;
FileInfo file_info;
char * filename;
} BeatmapSetFileInfo;
/**
* Beatmap metrics based on accumulated online data
* from community plays.
*/
typedef struct BeatmapMetrics
{
/** Points of failure on a relative time scale
* (usually 0-100). */
int fails[16];
/** Points of retry on a relative time scale
* (usually 0-100). */
int retries[16];
} BeatmapMetrics;
/**
* BeatmapSetMetrics is the same struct as
* BeatmapMetrics.
*/
typedef struct BeatmapMetrics BeatmapSetMetrics;
/**
* Beatmap info retrieved for previewing locally
* without having the beatmap downloaded.
*/
typedef struct BeatmapOnlineInfo
{
/** The amount of circles in this beatmap. */
int circle_count;
/** The amount of sliders in this beatmap. */
int slider_count;
/** The amount of plays this beatmap has. */
int play_count;
/** The amount of passes this beatmap has. */
int pass_count;
} BeatmapOnlineInfo;
typedef struct BeatmapInfo
{
int id;
int version;
int online_id;
int set_info_id;
BeatmapSetOnlineStatus status;
BeatmapSetInfo beatmap_set;
BeatmapMetadata metadata;
int base_difficulty_id;
BeatmapDifficulty base_difficulty;
BeatmapMetrics metrics;
BeatmapOnlineInfo online_info;
/** The playable length in ms of this
* beatmap. */
double length;
/** The most common BPM in this beatmap. */
double bpm;
char * path;
/** SHA2 hash. */
char * hash;
int hidden;
/** MD5 hash. */
char * md5_hash;
/* --------------- GENERAL ---------------- */
double audio_lead_in;
/** Boolean. */
int countdown;
float stack_leniency;
int special_style;
int ruleset_id;
RulesetInfo ruleset;
/* TODO */
} BeatmapInfo;
/**
* @}
*/
#endif

70
inc/game/io/file_info.h

@ -0,0 +1,70 @@
/*
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Ion
*
* Ion is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* Ion is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU General Affero Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
* Copyright (c) 2019 ppy Pty Ltd <contact@ppy.sh>.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* \file
*
* File info.
*/
#ifndef __GAME_IO_FILE_INFO_H__
#define __GAME_IO_FILE_INFO_H__
/**
* @addtogroup io
*
* @{
*/
typedef struct FileInfo
{
int id;
char * hash;
char * storage_path;
int reference_count;
char * filename;
} FileInfo;
/**
* @}
*/
#endif

125
inc/game/ion_world.h

@ -0,0 +1,125 @@
/*
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Ion
*
* Ion is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* Ion is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU General Affero Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/**
* \file
*
* Ion world.
*/
#ifndef __GAME_ION_WORLD_H__
#define __GAME_ION_WORLD_H__
typedef struct GLFWwindow GLFWwindow;
typedef struct SkinManager SkinManager;
typedef struct Texture Texture;
typedef struct ShaderManager ShaderManager;
/**
* @addtogroup game
*
* @{
*/
#define ION_WORLD ion_world
#define ION_WORLD_DEFAULT_WIDTH 1920
#define ION_WORLD_DEFAULT_HEIGHT 1080
/**
* The screen to be displayed.
*/
typedef enum IonWorldScreen
{
/** Welcome splash. */
ION_WORLD_SCREEN_WELCOME,
/** Main menu screen (where player selects to play,
* view options, etc. */
ION_WORLD_SCREEN_MAIN_MENU,
/** Main screen where beatmaps are shown. */
ION_WORLD_SCREEN_MAIN,
/** Song screen during gameplay. */
ION_WORLD_SCREEN_SONG,
/** Ranking view. */
ION_WORLD_SCREEN_RANKING,
} IonWorldScreen;
/**
* The global game struct.
*/
typedef struct IonWorld
{
IonWorldScreen screen;
SkinManager * skin_manager;
/** The game GLFW window. */
GLFWwindow * window;
char * skins_dir;
char * beatmaps_dir;
/** Last draw time in seconds. */
double last_draw_time;
/** Current draw time. */
double cur_draw_time;
/* FIXME delete */
Texture * test_texture;
ShaderManager * shader_manager;
} IonWorld;
extern IonWorld * ion_world;
IonWorld * ion_world;
/**
* Creates a new game world.
*/
IonWorld *
ion_world_new (
GLFWwindow * window);
/**
* To be called when the framebuffer size changes.
*/
void
ion_world_update_texture_sizes (
IonWorld * self);
/**
* Renders the current scene.
*/
void
ion_world_render_scene (
IonWorld * self);
void
ion_world_free (
IonWorld * self);
/**
* @}
*/
#endif

69
inc/game/replays/replay.h

@ -0,0 +1,69 @@
/*
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Ion
*
* Ion is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* Ion is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU General Affero Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
* Copyright (c) 2019 ppy Pty Ltd <contact@ppy.sh>.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* \file
*
* Replay.
*/
#ifndef __GAME_REPLAYS_REPLAY_H__
#define __GAME_REPLAYS_REPLAY_H__
/**
* @addtogroup replays
*
* @{
*/
typedef struct Replay
{
double * frames;
long num_frames;
} Replay;
/**
* @}
*/
#endif

124
inc/game/rulesets/mods/mod.h

@ -0,0 +1,124 @@
/*
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Ion
*
* Ion is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* Ion is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU General Affero Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
* Copyright (c) 2019 ppy Pty Ltd <contact@ppy.sh>.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* \file
*
* Gameplay modifier.
*/
#ifndef __GAME_RULESETS_MODS_MOD_H__
#define __GAME_RULESETS_MODS_MOD_H__
#include "framework/graphics/sprites/icon_usage.h"
/**
* @addtogroup rulesets
*
* @{
*/
typedef enum ModType
{
MOD_TYPE_DIFFICULTY_REDUCTION,
MOD_TYPE_DIFFICULTY_INCREASE,
MOD_TYPE_CONVERSION,
MOD_TYPE_AUTOMATION,
MOD_TYPE_FUN,
MOD_TYPE_SYSTEM,
}
/**
* Mod implementation type, so we can cast
* back to it.
*/
typedef enum ModImplType
{
MOD_IMPL_TYPE_AUTOPLAY,
} ModImplType;
/**
* The base class for gameplay modifiers. */
typedef struct Mod
{
ModImplType impl_type;
/** The name of this mod. */
char * name;
/** The shortened name of this mod. */
char * acronym;
/** The icon of this mod. */
IconUsage icon;
/** The type of this mod. */
ModType type;
/** The user readable description of this mod. */
char * description;
/** The score multiplier of this mod. */
double score_multiplier;
/** Whether the mod is implemented and playable. */
int has_implementation;
/** Whether the mod is ranked. */
int ranked;
/** The mods this mod cannot be enabled with. */
ModImplType incompatible_mods[16];
int num_incompatible_mods;
} Mod;
/**
* Creates a new mod initialized to its default state.
*/
Mod *
mod_new (
ModImplType type);
/**
* @}
*/
#endif

80
inc/game/rulesets/mods/mod_autoplay.h

@ -0,0 +1,80 @@
/*
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Ion
*
* Ion is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* Ion is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU General Affero Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
* Copyright (c) 2019 ppy Pty Ltd <contact@ppy.sh>.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* \file
*
* Gameplay modifier.
*/
#ifndef __GAME_RULESETS_MODS_MOD_AUTOPLAY_H__
#define __GAME_RULESETS_MODS_MOD_AUTOPLAY_H__
#include "framework/graphics/sprites/icon_usage.h"
typedef struct Score Score;
/**
* @addtogroup rulesets
*
* @{
*/
typedef struct ModAutoplay
{
/** Parent instance. */
Mod mod;
int allow_fail;
int restart_on_fail;
} ModAutoplay;
Score *
mod_autoplay_create_replay_score (
ModAutoplay * self,
Beatmap * beatmap);
/**
* @}
*/
#endif

96
inc/game/rulesets/ruleset.h

@ -0,0 +1,96 @@
/*
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Ion
*
* Ion is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* Ion is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU General Affero Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
* Copyright (c) 2019 ppy Pty Ltd <contact@ppy.sh>.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* \file
*
* Ruleset.
*/
#ifndef __GAME_RULESETS_RULESET_H
#define __GAME_RULESETS_RULESET_H
#include "game/rulesets/ruleset_info.h"
/**
* @addtogroup rulesets
*
* @{
*/
/**
* Base struct for rulesets.
*/
typedef struct Ruleset
{
RulesetInfo ruleset_info;
/* TODO */
}
/**
* Gets all mods available for this ruleset.
*/
void
ruleset_get_all_mods (
Ruleset * self,
ModImplType * mod_types,
int * num_mod_types);
/**
* Gets all modes for the given type and saves them
* into mods.
*/
void
ruleset_get_mods_for (
Ruleset * self,
ModType type,
Mod ** mods,
int * num_mods);
AutoplayMod *
ruleset_get_autoplay_mod (
Ruleset * self);
/**
* @}
*/
#endif

84
inc/game/rulesets/ruleset_info.h

@ -0,0 +1,84 @@
/*
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Ion
*
* Ion is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* Ion is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU General Affero Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
* Copyright (c) 2019 ppy Pty Ltd <contact@ppy.sh>.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* \file
*
* Ruleset info.
*/
#ifndef __GAME_RULESETS_RULESET_INFO_H__
#define __GAME_RULESETS_RULESET_INFO_H__
/**
* @addtogroup rulesets
*
* @{
*/
typedef struct RulesetInfo
{
int id;
char * name;
char * short_name;
char * instantiation_info;
int available;
/* TODO */
} RulesetInfo;
Ruleset
ruleset_info_create_instance (
RulesetInfo * self);
int
ruleset_info_equals (
RulesetInfo * self,
RulesetInfo * other);
char *
ruleset_info_to_string (
RulesetInfo * self);
/**
* @}
*/
#endif

90
inc/game/rulesets/scoring/hit_result.h

@ -0,0 +1,90 @@
/*
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Ion
*
* Ion is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* Ion is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU General Affero Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
* Copyright (c) 2019 ppy Pty Ltd <contact@ppy.sh>.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* \file
*
* Hit result.
*/
#ifndef __GAME_RULESETS_SCORING_HIT_RESULT_H__
#define __GAME_RULESETS_SCORING_HIT_RESULT_H__
/**
* @addtogroup rulesets
*
* @{
*/
typedef enum HitResult
{
/** Indicates that the object has not been judged
* yet. */
HIT_RESULT_NONE,
/**
* Indicates that the object has been judged as a
* miss.
*
* The miss window should determine how early a hit
* can be before it is considered for judgement (as
* opposed to being ignored as too far in the future).
* It should also define when a forced miss should be
* trigerred (as a result of no user input in time).
*/
HIT_RESULT_MISS,
HIT_RESULT_MEH,
/** Optional judgement. */
HIT_RESULT_OK,
HIT_RESULT_GOOD,
HIT_RESULT_GREAT,
/** Optional judgement. */
HIT_RESULT_PERFECT,
} HitResult;
/**
* @}
*/
#endif

70
inc/game/scoring/score.h

@ -0,0 +1,70 @@
/*
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org>
*
* This file is part of Ion
*
* Ion is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* Ion is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU General Affero Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
* Copyright (c) 2019 ppy Pty Ltd <contact@ppy.sh>.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* \file
*
* Score.
*/
#ifndef __GAME_SCORING_SCORE_H__
#define __GAME_SCORING_SCORE_H__
#include "game/scoring/score_info.h"
/**
* @addtogroup scoring