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)
|
||||
- [Known bugs](#known-bugs)
|
||||
- [Licensing](#licensing)
|
||||
- [Contributions)(#contributions)
|
||||
- [Contributions](#contributions)
|
||||
|
||||
## 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)
|
||||
|
||||
## 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
|
||||
- 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/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/audio_test.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!
|
||||
// #include "entry_yourepicgamename.c"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
## v0.01.003 -
|
||||
## v0.01.003 - Nothing, really
|
||||
- Os layer
|
||||
- Implemented setting of mouse pointers, either to system standard pointers or a custom image
|
||||
- Ignore SETCURSOR events unless window resize
|
||||
|
@ -10,7 +10,9 @@
|
|||
- Fix bad uv sampling bug when uneven window dimensions
|
||||
|
||||
- Misc
|
||||
-
|
||||
- Deprecate Rangef stuff
|
||||
- peek_random()
|
||||
- Update #Contributions
|
||||
|
||||
|
||||
## v0.01.002 - Flexible build options, Hotloading, growing array
|
||||
|
|
|
@ -170,7 +170,7 @@ typedef struct Cpu_Capabilities {
|
|||
#define COMPILER_CAN_DO_AVX512 0
|
||||
#endif
|
||||
|
||||
#define DEPRECATED(proc, msg) proc __attribute__((deprecated(msg)))
|
||||
#define DEPRECATED(proc, msg) __attribute__((deprecated(msg))) proc
|
||||
|
||||
inline bool
|
||||
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 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);
|
||||
draw_text(font, STR("I am text"), font_height, v2(animated_x, 0), v2(1, 1), COLOR_WHITE);
|
||||
// UTF-8 !
|
||||
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
|
||||
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;
|
||||
#endif
|
||||
|
||||
// Like get_random but it doesn't advance the seed
|
||||
u64 peek_random() {
|
||||
return seed_for_random * MULTIPLIER + INCREMENT;
|
||||
}
|
||||
|
||||
u64 get_random() {
|
||||
seed_for_random = seed_for_random * MULTIPLIER + INCREMENT;
|
||||
seed_for_random = peek_random();
|
||||
return seed_for_random;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,51 +1,61 @@
|
|||
|
||||
// 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'll leave this decision up to u charlie just delete this whenever u see it
|
||||
|
||||
// charlie:
|
||||
// Is this range stuff really necessary?
|
||||
// Why not just:
|
||||
// typedef Vector2 Range1f;
|
||||
// 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)
|
||||
// This feels like introducing unnecessary complexity and vocabulary when it's really just
|
||||
// another way to say Vector2 and Vector4.
|
||||
|
||||
typedef struct Range1f {
|
||||
float min;
|
||||
float max;
|
||||
} Range1f;
|
||||
// ...
|
||||
|
||||
typedef struct Range2f {
|
||||
Vector2 min;
|
||||
Vector2 max;
|
||||
} Range2f;
|
||||
|
||||
inline Range2f range2f_make(Vector2 min, Vector2 max) { return (Range2f) { min, max }; }
|
||||
|
||||
Range2f range2f_shift(Range2f r, Vector2 shift) {
|
||||
r.min = v2_add(r.min, shift);
|
||||
r.max = v2_add(r.max, shift);
|
||||
return r;
|
||||
}
|
||||
|
||||
Range2f range2f_make_bottom_center(Vector2 size) {
|
||||
Range2f range = {0};
|
||||
range.max = size;
|
||||
range = range2f_shift(range, v2(size.x * -0.5, 0.0));
|
||||
return range;
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
// 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'll leave this decision up to u charlie just delete this whenever u see it
|
||||
|
||||
// charlie:
|
||||
// Is this range stuff really necessary?
|
||||
// Why not just:
|
||||
// typedef Vector2 Range1f;
|
||||
// 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)
|
||||
// This feels like introducing unnecessary complexity and vocabulary when it's really just
|
||||
// another way to say Vector2 and Vector4.
|
||||
|
||||
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).");
|
||||
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).");
|
||||
|
||||
typedef struct Range1f {
|
||||
float min;
|
||||
float max;
|
||||
} Range1f;
|
||||
// ...
|
||||
|
||||
typedef struct Range2f {
|
||||
Vector2 min;
|
||||
Vector2 max;
|
||||
} Range2f;
|
||||
|
||||
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).");
|
||||
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).");
|
||||
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).");
|
||||
|
||||
|
||||
inline Range2f range2f_make(Vector2 min, Vector2 max) { return (Range2f) { min, max }; }
|
||||
|
||||
Range2f range2f_shift(Range2f r, Vector2 shift) {
|
||||
r.min = v2_add(r.min, shift);
|
||||
r.max = v2_add(r.max, shift);
|
||||
return r;
|
||||
}
|
||||
|
||||
Range2f range2f_make_bottom_center(Vector2 size) {
|
||||
Range2f range = {0};
|
||||
range.max = size;
|
||||
range = range2f_shift(range, v2(size.x * -0.5, 0.0));
|
||||
return range;
|
||||
}
|
||||
|
||||
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