Did nothing
This commit is contained in:
parent
234e3ed440
commit
e60be463d1
7 changed files with 90 additions and 62 deletions
18
README.md
18
README.md
|
@ -11,7 +11,7 @@ ooga booga
|
||||||
- [Examples & Documentation](#examples--documentation)
|
- [Examples & Documentation](#examples--documentation)
|
||||||
- [Known bugs](#known-bugs)
|
- [Known bugs](#known-bugs)
|
||||||
- [Licensing](#licensing)
|
- [Licensing](#licensing)
|
||||||
- [Contributions)(#contributions)
|
- [Contributions](#contributions)
|
||||||
|
|
||||||
## What is ooga booga?
|
## What is ooga booga?
|
||||||
|
|
||||||
|
@ -109,7 +109,17 @@ You can obtain the full commercial license by being an active member of the comm
|
||||||
[Learn more here](https://www.skool.com/game-dev)
|
[Learn more here](https://www.skool.com/game-dev)
|
||||||
|
|
||||||
## Contributions
|
## Contributions
|
||||||
I'm not sure what the most optimal way to do this but here are some house rules I'll continually update which I'd like us to follow for contributions:
|
|
||||||
|
|
||||||
- Open PR's with `dev` as the base branch
|
- Open PR's with `dev` as the base branch
|
||||||
- Keep it simple
|
- Keep it simple, no multi-layer abstractions
|
||||||
|
- Keep the implementation code readable, comment confusing code
|
||||||
|
- If you're introducing a new file/module, document the API and how to use it at the top of the file
|
||||||
|
- Add tests in tests.c if it makes sense to test
|
||||||
|
- Run tests (#define RUN_TESTS 1) before submitting PR
|
||||||
|
- Don't submit PR's for:
|
||||||
|
- the sake of submitting PR's
|
||||||
|
- Small polishing/tweaks that doesn't really affect the people making games
|
||||||
|
- When you submit a PR, please answer these prompts (if you're submitting a bugfix then you can skip this):
|
||||||
|
- What feature/bugfix does this PR implement?
|
||||||
|
- Why do we need this?
|
||||||
|
- Describe at least one specific and practical problem this solves for people developing a game
|
||||||
|
- Does this add complexity/friction for people making games? If so, how do you justify that?
|
4
build.c
4
build.c
|
@ -37,11 +37,11 @@ typedef struct Context_Extra {
|
||||||
|
|
||||||
// #include "oogabooga/examples/text_rendering.c"
|
// #include "oogabooga/examples/text_rendering.c"
|
||||||
// #include "oogabooga/examples/custom_logger.c"
|
// #include "oogabooga/examples/custom_logger.c"
|
||||||
#include "oogabooga/examples/renderer_stress_test.c"
|
// #include "oogabooga/examples/renderer_stress_test.c"
|
||||||
// #include "oogabooga/examples/tile_game.c"
|
// #include "oogabooga/examples/tile_game.c"
|
||||||
// #include "oogabooga/examples/audio_test.c"
|
// #include "oogabooga/examples/audio_test.c"
|
||||||
// #include "oogabooga/examples/custom_shader.c"
|
// #include "oogabooga/examples/custom_shader.c"
|
||||||
// #include "oogabooga/examples/growing_array_example.c"
|
#include "oogabooga/examples/growing_array_example.c"
|
||||||
|
|
||||||
// This is where you swap in your own project!
|
// This is where you swap in your own project!
|
||||||
// #include "entry_yourepicgamename.c"
|
// #include "entry_yourepicgamename.c"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
## v0.01.003 -
|
## v0.01.003 - Nothing, really
|
||||||
- Os layer
|
- Os layer
|
||||||
- Implemented setting of mouse pointers, either to system standard pointers or a custom image
|
- Implemented setting of mouse pointers, either to system standard pointers or a custom image
|
||||||
- Ignore SETCURSOR events unless window resize
|
- Ignore SETCURSOR events unless window resize
|
||||||
|
@ -10,7 +10,9 @@
|
||||||
- Fix bad uv sampling bug when uneven window dimensions
|
- Fix bad uv sampling bug when uneven window dimensions
|
||||||
|
|
||||||
- Misc
|
- Misc
|
||||||
-
|
- Deprecate Rangef stuff
|
||||||
|
- peek_random()
|
||||||
|
- Update #Contributions
|
||||||
|
|
||||||
|
|
||||||
## v0.01.002 - Flexible build options, Hotloading, growing array
|
## v0.01.002 - Flexible build options, Hotloading, growing array
|
||||||
|
|
|
@ -170,7 +170,7 @@ typedef struct Cpu_Capabilities {
|
||||||
#define COMPILER_CAN_DO_AVX512 0
|
#define COMPILER_CAN_DO_AVX512 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define DEPRECATED(proc, msg) proc __attribute__((deprecated(msg)))
|
#define DEPRECATED(proc, msg) __attribute__((deprecated(msg))) proc
|
||||||
|
|
||||||
inline bool
|
inline bool
|
||||||
compare_and_swap_8(uint8_t *a, uint8_t b, uint8_t old) {
|
compare_and_swap_8(uint8_t *a, uint8_t b, uint8_t old) {
|
||||||
|
|
|
@ -32,8 +32,9 @@ int entry(int argc, char **argv) {
|
||||||
float now = (float)os_get_current_time_in_seconds();
|
float now = (float)os_get_current_time_in_seconds();
|
||||||
float animated_x = sin(now*0.1)*(window.width*0.5);
|
float animated_x = sin(now*0.1)*(window.width*0.5);
|
||||||
|
|
||||||
draw_text(font, STR("I am text"), font_height, v2(animated_x-2, 2), v2(1, 1), COLOR_BLACK);
|
// UTF-8 !
|
||||||
draw_text(font, STR("I am text"), font_height, v2(animated_x, 0), v2(1, 1), COLOR_WHITE);
|
draw_text(font, STR("Привет"), font_height, v2(animated_x-2, 2), v2(1, 1), COLOR_BLACK);
|
||||||
|
draw_text(font, STR("Привет"), font_height, v2(animated_x, 0), v2(1, 1), COLOR_WHITE);
|
||||||
|
|
||||||
// New lines are handled when drawing text
|
// New lines are handled when drawing text
|
||||||
string hello_str = STR("Hello,\nTTTT New line\nAnother line");
|
string hello_str = STR("Hello,\nTTTT New line\nAnother line");
|
||||||
|
|
|
@ -13,8 +13,13 @@ ogb_instance u64 seed_for_random;
|
||||||
u64 seed_for_random = 1;
|
u64 seed_for_random = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Like get_random but it doesn't advance the seed
|
||||||
|
u64 peek_random() {
|
||||||
|
return seed_for_random * MULTIPLIER + INCREMENT;
|
||||||
|
}
|
||||||
|
|
||||||
u64 get_random() {
|
u64 get_random() {
|
||||||
seed_for_random = seed_for_random * MULTIPLIER + INCREMENT;
|
seed_for_random = peek_random();
|
||||||
return seed_for_random;
|
return seed_for_random;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,51 +1,61 @@
|
||||||
|
|
||||||
// randy: we might wanna remove the f by default, similar to the Vector2 ?
|
// randy: we might wanna remove the f by default, similar to the Vector2 ?
|
||||||
// I know that we'll have a Range2i at some point, so maybe it's better to be explicit for less confusion?
|
// I know that we'll have a Range2i at some point, so maybe it's better to be explicit for less confusion?
|
||||||
// I'll leave this decision up to u charlie just delete this whenever u see it
|
// I'll leave this decision up to u charlie just delete this whenever u see it
|
||||||
|
|
||||||
// charlie:
|
// charlie:
|
||||||
// Is this range stuff really necessary?
|
// Is this range stuff really necessary?
|
||||||
// Why not just:
|
// Why not just:
|
||||||
// typedef Vector2 Range1f;
|
// typedef Vector2 Range1f;
|
||||||
// typedef Vector4 Range2f;
|
// typedef Vector4 Range2f;
|
||||||
// Vector4 also already have alias for x1, y1, x2, y2 and we could add an alias for min & max vectors (see linmath.c)
|
// Vector4 also already have alias for x1, y1, x2, y2 and we could add an alias for min & max vectors (see linmath.c)
|
||||||
// This feels like introducing unnecessary complexity and vocabulary when it's really just
|
// This feels like introducing unnecessary complexity and vocabulary when it's really just
|
||||||
// another way to say Vector2 and Vector4.
|
// another way to say Vector2 and Vector4.
|
||||||
|
|
||||||
typedef struct Range1f {
|
typedef DEPRECATED(struct Range1f Range1f, "Range2f & Range1f will be removed. If you are using this, you should yoink it into your game code (from oogabooga/range.c).");
|
||||||
float min;
|
typedef DEPRECATED(struct Range2f Range2f, "Range2f & Range1f will be removed. If you are using this, you should yoink it into your game code (from oogabooga/range.c).");
|
||||||
float max;
|
|
||||||
} Range1f;
|
typedef struct Range1f {
|
||||||
// ...
|
float min;
|
||||||
|
float max;
|
||||||
typedef struct Range2f {
|
} Range1f;
|
||||||
Vector2 min;
|
// ...
|
||||||
Vector2 max;
|
|
||||||
} Range2f;
|
typedef struct Range2f {
|
||||||
|
Vector2 min;
|
||||||
inline Range2f range2f_make(Vector2 min, Vector2 max) { return (Range2f) { min, max }; }
|
Vector2 max;
|
||||||
|
} Range2f;
|
||||||
Range2f range2f_shift(Range2f r, Vector2 shift) {
|
|
||||||
r.min = v2_add(r.min, shift);
|
DEPRECATED(Range2f range2f_make(Vector2 min, Vector2 max), "Range2f & Range1f will be removed. If you are using this, you should yoink it into your game code (from oogabooga/range.c).");
|
||||||
r.max = v2_add(r.max, shift);
|
DEPRECATED(Range2f range2f_shift(Range2f r, Vector2 shift), "Range2f & Range1f will be removed. If you are using this, you should yoink it into your game code (from oogabooga/range.c).");
|
||||||
return r;
|
DEPRECATED(Range2f range2f_make_bottom_center(Vector2 size), "Range2f & Range1f will be removed. If you are using this, you should yoink it into your game code (from oogabooga/range.c).");
|
||||||
}
|
DEPRECATED(Vector2 range2f_size(Range2f range), "Range2f & Range1f will be removed. If you are using this, you should yoink it into your game code (from oogabooga/range.c).");
|
||||||
|
DEPRECATED(bool range2f_contains(Range2f range, Vector2 v), "Range2f & Range1f will be removed. If you are using this, you should yoink it into your game code (from oogabooga/range.c).");
|
||||||
Range2f range2f_make_bottom_center(Vector2 size) {
|
|
||||||
Range2f range = {0};
|
|
||||||
range.max = size;
|
inline Range2f range2f_make(Vector2 min, Vector2 max) { return (Range2f) { min, max }; }
|
||||||
range = range2f_shift(range, v2(size.x * -0.5, 0.0));
|
|
||||||
return range;
|
Range2f range2f_shift(Range2f r, Vector2 shift) {
|
||||||
}
|
r.min = v2_add(r.min, shift);
|
||||||
|
r.max = v2_add(r.max, shift);
|
||||||
Vector2 range2f_size(Range2f range) {
|
return r;
|
||||||
Vector2 size = {0};
|
}
|
||||||
size = v2_sub(range.min, range.max);
|
|
||||||
size.x = fabsf(size.x);
|
Range2f range2f_make_bottom_center(Vector2 size) {
|
||||||
size.y = fabsf(size.y);
|
Range2f range = {0};
|
||||||
return size;
|
range.max = size;
|
||||||
}
|
range = range2f_shift(range, v2(size.x * -0.5, 0.0));
|
||||||
|
return range;
|
||||||
bool range2f_contains(Range2f range, Vector2 v) {
|
}
|
||||||
return v.x >= range.min.x && v.x <= range.max.x && v.y >= range.min.y && v.y <= range.max.y;
|
|
||||||
|
Vector2 range2f_size(Range2f range) {
|
||||||
|
Vector2 size = {0};
|
||||||
|
size = v2_sub(range.min, range.max);
|
||||||
|
size.x = fabsf(size.x);
|
||||||
|
size.y = fabsf(size.y);
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool range2f_contains(Range2f range, Vector2 v) {
|
||||||
|
return v.x >= range.min.x && v.x <= range.max.x && v.y >= range.min.y && v.y <= range.max.y;
|
||||||
}
|
}
|
Reference in a new issue