mirror of
https://git.shylie.info/shylie/glerminal.git
synced 2025-10-02 13:10:10 +00:00
Rework sprite API
This commit is contained in:
@@ -2,20 +2,37 @@ cmake_minimum_required(VERSION 3.28)
|
||||
|
||||
set(CMAKE_FOLDER examples)
|
||||
|
||||
add_executable(basic WIN32
|
||||
basic.cpp
|
||||
file(GLOB_RECURSE
|
||||
EXAMPLE_RESOURCES
|
||||
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
CONFIGURE_DEPENDS
|
||||
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/resources/**.png
|
||||
)
|
||||
|
||||
target_link_libraries(basic
|
||||
PRIVATE
|
||||
glerminal
|
||||
foreach(RESOURCE_FILE ${EXAMPLE_RESOURCES})
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${RESOURCE_FILE}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${RESOURCE_FILE}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${RESOURCE_FILE}
|
||||
DEPENDS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${RESOURCE_FILE}
|
||||
)
|
||||
endforeach()
|
||||
|
||||
file(GLOB_RECURSE
|
||||
EXAMPLE_SOURCES
|
||||
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
CONFIGURE_DEPENDS
|
||||
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
|
||||
)
|
||||
|
||||
add_executable(towers WIN32
|
||||
towers.cpp
|
||||
)
|
||||
list(TRANSFORM EXAMPLE_RESOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/)
|
||||
|
||||
target_link_libraries(towers
|
||||
PRIVATE
|
||||
glerminal
|
||||
)
|
||||
foreach(SOURCE_FILE ${EXAMPLE_SOURCES})
|
||||
get_filename_component(SOURCE_FILENAME ${SOURCE_FILE} NAME_WLE)
|
||||
add_executable(${SOURCE_FILENAME} WIN32 ${SOURCE_FILE} ${EXAMPLE_RESOURCES})
|
||||
target_link_libraries(${SOURCE_FILENAME} PRIVATE glerminal)
|
||||
endforeach()
|
46
examples/atlas.cpp
Normal file
46
examples/atlas.cpp
Normal file
@@ -0,0 +1,46 @@
|
||||
#include <glerminal.h>
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
namespace
|
||||
{
|
||||
void init()
|
||||
{
|
||||
glerminal_load_sprites_file("resources/atlas.png");
|
||||
}
|
||||
|
||||
void mainloop(float dt)
|
||||
{
|
||||
static float time = 1;
|
||||
|
||||
time += dt;
|
||||
|
||||
if (time < 1.0f)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
time = 0;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 40; i++)
|
||||
{
|
||||
for (int j = 0; j < 25; j++)
|
||||
{
|
||||
for (int k = 0; k < 256; k++)
|
||||
{
|
||||
glerminal_set(i, j, k, rand() % 4);
|
||||
glerminal_offset(i, j, k, (rand() * rand()) % 64 - 32, (rand() * rand()) % 64 - 32);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
glerminal_flush();
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
glerminal_run(init, mainloop);
|
||||
}
|
@@ -6,16 +6,7 @@ namespace
|
||||
{
|
||||
void init()
|
||||
{
|
||||
glerminal_update_sprite(1, {
|
||||
0x5000FF00, 0x5000FF00, 0x5000FF00, 0x5000FF00, 0x5000FF00, 0x5000FF00, 0x5000FF00, 0x5000FF00,
|
||||
0x5000FF00, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x5000FF00,
|
||||
0x5000FF00, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x5000FF00,
|
||||
0x5000FF00, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x5000FF00,
|
||||
0x5000FF00, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x5000FF00,
|
||||
0x5000FF00, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x5000FF00,
|
||||
0x5000FF00, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x500000FF, 0x5000FF00,
|
||||
0x5000FF00, 0x5000FF00, 0x5000FF00, 0x5000FF00, 0x5000FF00, 0x5000FF00, 0x5000FF00, 0x5000FF00
|
||||
});
|
||||
glerminal_load_sprites_file("resources/basic.png");
|
||||
}
|
||||
|
||||
void mainloop(float dt)
|
||||
@@ -39,7 +30,7 @@ namespace
|
||||
{
|
||||
for (int k = 0; k < 256; k++)
|
||||
{
|
||||
glerminal_set(i, j, k, rand() % 8 == 0);
|
||||
glerminal_set(i, j, k, rand() % 3 == 0);
|
||||
glerminal_offset(i, j, k, (rand() * rand()) % 64 - 32, (rand() * rand()) % 64 - 32);
|
||||
}
|
||||
}
|
||||
|
3
examples/resources/atlas.png
Normal file
3
examples/resources/atlas.png
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:93d9f6545bb2dc2dbb1fcc72875e104e7fa2bbeca6972dc133865dcfbf66e720
|
||||
size 120
|
3
examples/resources/basic.png
Normal file
3
examples/resources/basic.png
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:56e82b6fd40c3d880d1683d59a6a52f5e7b188d199aed22f375189eb1735e3a2
|
||||
size 120
|
3
examples/resources/towers.png
Normal file
3
examples/resources/towers.png
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:aba7635b3d53c74c5b177ddb02641a475664acc86344f884d350e61737d0f1ec
|
||||
size 98
|
@@ -7,64 +7,48 @@ namespace
|
||||
{
|
||||
void init()
|
||||
{
|
||||
glerminal_update_sprite(1,
|
||||
{
|
||||
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
|
||||
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
|
||||
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
|
||||
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
|
||||
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
|
||||
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
|
||||
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
|
||||
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
|
||||
});
|
||||
glerminal_load_sprites_file("resources/towers.png");
|
||||
|
||||
for (int i = 0; i < 256; i++)
|
||||
{
|
||||
constexpr unsigned char c = 32;
|
||||
constexpr unsigned char c = 0;
|
||||
const unsigned char v = (255 - c) * powf((i - 1) / 256.0f, 2.0f) + c;
|
||||
const unsigned int j = (0xFF << 24) | (v << 16) | (v << 8) | v;
|
||||
const unsigned int j = (0x7F << 24) | (v << 16) | (v << 8) | v;
|
||||
glerminal_layer_color(i, j);
|
||||
glerminal_layer_scale(i, i / 256.0f + 1);
|
||||
}
|
||||
}
|
||||
|
||||
void mainloop(float dt)
|
||||
{
|
||||
static float time = 1;
|
||||
|
||||
time += dt;
|
||||
|
||||
if (time < 0.15f)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
time = 0;
|
||||
}
|
||||
|
||||
const int cx = rand() % 40;
|
||||
const int cy = rand() % 25;
|
||||
|
||||
for (int i = 0; i < 40; i++)
|
||||
{
|
||||
for (int j = 0; j < 25; j++)
|
||||
{
|
||||
const int c = rand() % 224 + 32;
|
||||
for (int k = 0; k < c; k++)
|
||||
{
|
||||
glerminal_set(i, j, k, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void mainloop(float dt)
|
||||
{
|
||||
static float time = 0;
|
||||
|
||||
time += dt;
|
||||
|
||||
const float cx = 20.0f * cosf(time / 3.1415f) + 20.0f;
|
||||
const float cy = 12.5f * sinf(time / 3.1415f) + 12.5f;
|
||||
|
||||
for (int i = 0; i < 40; i++)
|
||||
{
|
||||
for (int j = 0; j < 25; j++)
|
||||
{
|
||||
for (int k = 0; k < 256; k++)
|
||||
{
|
||||
if (k < c)
|
||||
{
|
||||
glerminal_set(i, j, k, 1);
|
||||
const float ox = 0.01f * k * (i - cx);
|
||||
const float oy = 0.01f * k * (j - cy);
|
||||
glerminal_offset(i, j, k, ox + (1 + 0.004f * k) * cosf(c * i + k * 6.28f / 128.0f), oy + (1 + 0.004f * k) * sinf(c * j + k * 6.28f / 128.0f));
|
||||
}
|
||||
else
|
||||
{
|
||||
glerminal_set(i, j, k, 0);
|
||||
}
|
||||
const float ox = 0.01f * k * (i - cx);
|
||||
const float oy = 0.01f * k * (j - cy);
|
||||
glerminal_offset(i, j, k, ox + (1 + 0.004f * k) * cosf(i + k * 6.2832f / 128.0f + 3.1415f * time), oy + (1 + 0.004f * k) * sinf(j + k * 6.2832f / 128.0f + 3.1415f * time));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user