Uh
This commit is contained in:
@@ -4,4 +4,149 @@
|
|||||||
** Historia i czas
|
** Historia i czas
|
||||||
Wschód. Od początku 2027 do sierpnia. Lubelską jeżdżą namiętnie
|
Wschód. Od początku 2027 do sierpnia. Lubelską jeżdżą namiętnie
|
||||||
pojazdy wojskowe transportujące czołgi, haubice, i gigantyczne
|
pojazdy wojskowe transportujące czołgi, haubice, i gigantyczne
|
||||||
anteny.
|
anteny. Na deptaku w Chełmie chodzą amerykańscy żołnierze w
|
||||||
|
kamuflażu. Polaka rzadko idzie spotkać; powiat chełmski w dużej mierze
|
||||||
|
wysiedlony, ludzie uciekli od wojny. Huk dział i murmur samolotów i
|
||||||
|
bezzałogowych dronów autonomicznych słychać w zabitych dechami
|
||||||
|
wiochach pow. chełmskiego.
|
||||||
|
|
||||||
|
Amerykańcy bardzo cenią sobie lokalną twórczość bimbrowników i
|
||||||
|
kłusowników. Nielegalne wymiany broni i zasobów za magiczne wywary 96
|
||||||
|
volt. Szpital w Chełmie przerobiony na szpital wojskowy; oddział
|
||||||
|
psychiatryczny spowrotem na koszary. Ci, co zostali, albo są polskimi
|
||||||
|
wojskowymi, albo pomagają w trudach wojennych pracując w szpitalach,
|
||||||
|
magazynach, nowo powstałych fabrykach wojennych. Telefony mają teraz
|
||||||
|
taki pipsztyk, że można do nich powiedzieć "Powiedz mi żart", i
|
||||||
|
telefon opowiada żart.
|
||||||
|
|
||||||
|
Powiat rządzi się innymi zasadami. Policja prawie że nie istnieje,
|
||||||
|
ledwo co utrzymuje prawo, ale ludzie wcale go nie łamią. Pomoc
|
||||||
|
wzajemna powszednieje. Podziemie nielegalnego handlu rozwija
|
||||||
|
się. Spustoszałe domy nowobogackich rezydentów stoją z gnijącymi
|
||||||
|
fundamentami. Leśnictwo i nadleśnictwo przestało efektywnie
|
||||||
|
funkcjonować; wojsko poniekąd pomaga, ale dzikość wraca do powiatu.
|
||||||
|
|
||||||
|
Buch. Epicentrum: amerykańskie koszary wojskowe w Chełmie. Rosyjskie
|
||||||
|
MPB zrzuciły kilka głowic i kilkanaście dipoli; tarcze antyrakietowe
|
||||||
|
nie pomogły. MAD na skalę światową.
|
||||||
|
|
||||||
|
W Siedliszczu, patrząc na wschód, widać obrzydliwie duży i jasny grzyb
|
||||||
|
termojądrowy. Stary statystyk podaje, że 15 % ludności gminy,
|
||||||
|
zwłaszcza w starszych przedziałach wiekowych, jest ślepe. Poparzenia
|
||||||
|
drugiego i trzeciego stopnia na starych chłopach co akurat jechali
|
||||||
|
trzydziestką po polu.
|
||||||
|
|
||||||
|
Drony --- skonfundowane, bez siatki komunikacyjnej i centrali --- lecą
|
||||||
|
w stronę gminy, kręcą się trochę nad polami, i spadają na
|
||||||
|
pola. Napromieniowani rolnicy zbierają je, podczepiając ich baterie do
|
||||||
|
sprzętów RTV i AGD.
|
||||||
|
|
||||||
|
Stary statystyk szacuje, że w gminie przeżyło jedynie sto czy dwieście
|
||||||
|
mieszkańców.
|
||||||
|
|
||||||
|
Nowa moda: tryb łowiecko-zbieracki. Kłusownictwo, zbieranie grzybów,
|
||||||
|
próby polowań. Dzika natura wraca do gminy, ilość dziczyzny na
|
||||||
|
poziomie Paleolitycznym.
|
||||||
|
|
||||||
|
Zbiornik im. Edwarda Wojtasa centrum nowej społeczności
|
||||||
|
gminnej. Rybołówstwo, próby agrokultury. Slumsy majdańskie,
|
||||||
|
skonstruowane ze starych PGR-owskich plandek i leszczyny, wyglądają
|
||||||
|
naprawdę imponująco.
|
||||||
|
|
||||||
|
Samo Siedliszcze jest puste jak zawsze. W centrum została jedynie
|
||||||
|
stara babka, znająca się na układzie kostnym człowieka, ziołach, i
|
||||||
|
ogólnym znachorstwie. Jest w tajemniczym kontakcie z bandami leśnymi
|
||||||
|
operującymi w lasach obok Bezku i na Janowicy. Szałasy z gałęzi
|
||||||
|
świerkowych i niebieskich plandek, łachmany, oraz niezmierna wiedza o
|
||||||
|
lokalnej florze i faunie charakteryzuje leitmotif bandy.
|
||||||
|
|
||||||
|
** Mechanika gry
|
||||||
|
*** Ekonomia pogłoski
|
||||||
|
Rozmowy i handle z postaciami uzależnione są od tego, jaką famę ma
|
||||||
|
gracz, z kim się zna, komu podpadł, a komu się przylizał. Różne grupy
|
||||||
|
i postacie mają różne sposoby rozumienia tego, i sieć jest bardzo
|
||||||
|
skomplikowana, więc gracz musi uważać, czy jak pomoże temu, to nie
|
||||||
|
podpadnie tamtemu; jak nie zrobi tego, to podpanie temu, a pomoże
|
||||||
|
tamtemu, itp.
|
||||||
|
*** Rozmowy z NPC
|
||||||
|
Każdy NPC ma swój sposób rozumienia świata, analizowania sytuacji,
|
||||||
|
itp. Tym samym gracz musi być bardzo uważny i naprawdę zrzozumieć
|
||||||
|
przekonania jakiejś postaci, jeśli chce jej pomóc --- lub się jej
|
||||||
|
sprzeciwić. Np., stary statystyk jest stricte empriyczny, rozumie
|
||||||
|
świat jako liczby i relacje między liczbami. Stara babka jest
|
||||||
|
enigmatycznym bytem, który rozumie świat jako mieszankę ludowej
|
||||||
|
wiedzy, anarchoprymitywistycznej ideologii, itp.
|
||||||
|
*** Ciało, obrażenia, stany
|
||||||
|
Nie istnieje HP; zamiast tego, stan ciała jest opisywany
|
||||||
|
symptomatycznie: "brzydko wyglądające rany otwarte", "mdłości (3
|
||||||
|
dni)", "słuch utracony po wybuchu".
|
||||||
|
|
||||||
|
Stany ciała i symptomy zazwyczaj wpływają na wewnętrzny licznik
|
||||||
|
szczęścia. Jak jesteśmy głusi i mamy mdłości, jesteśmy nieszczęśliwi;
|
||||||
|
a więc, nie możemy robić różnych rzeczy bo nie mamy ochoty.
|
||||||
|
|
||||||
|
Kontrą do tego jest statystyka woli mocy, którą zdobywamy poprzez
|
||||||
|
interakcje z NPC i decyzjami które promują samostanowienie. Taka
|
||||||
|
determinacja pozwala na działanie /mimo/ tego, że jesteśmy
|
||||||
|
nieszczęśliwi, mamy połamaną nogę,
|
||||||
|
*** Cechy i "statystki" postaci
|
||||||
|
Gracz kilka "zacznij grę", i nie może nic ze swoją postacią
|
||||||
|
zrobić. Nie ma ona płci, głosu, niczego. Jedynie losową garstkę cech
|
||||||
|
(niekoniecznie podzielonych na pozytywne i negatywne, ale mających i
|
||||||
|
pozytywy, i negatywy).
|
||||||
|
|
||||||
|
| Cecha | Pozytywy | Negatywy |
|
||||||
|
|--------------------------+--------------------------------------+-------------------------------|
|
||||||
|
| technik informatyk | zna się na komputerach i telefonach | ludzie uważają go za dziwnego |
|
||||||
|
|--------------------------+--------------------------------------+-------------------------------|
|
||||||
|
| intuicja botaniczna | może mniej więcej stwierdzić | nie wiem |
|
||||||
|
| | czy coś jest jadalne, czy nie | |
|
||||||
|
|--------------------------+--------------------------------------+-------------------------------|
|
||||||
|
| złota rączka | potrafi dobrze naprawiać różnorakie | nieufność otoczenia |
|
||||||
|
| | przedmioty | |
|
||||||
|
|--------------------------+--------------------------------------+-------------------------------|
|
||||||
|
| nawyk palacza | dużo NPC go lubi, "swój chłop", | częściej ma zadyszkę |
|
||||||
|
| | czuje mniej lęku | |
|
||||||
|
|--------------------------+--------------------------------------+-------------------------------|
|
||||||
|
| przeszywające spojrzenie | jest bardziej spotrzegawczy | ludzie się go boją |
|
||||||
|
| | w rozmowach i stanach afektywnych | |
|
||||||
|
| | innych postaci | |
|
||||||
|
|--------------------------+--------------------------------------+-------------------------------|
|
||||||
|
| głos, co łamie ciszę | pogłoski szybciej się roznoszą | nieśmiali NPC się go boją |
|
||||||
|
|--------------------------+--------------------------------------+-------------------------------|
|
||||||
|
| pijany chirurg | niezwykle zwinne palce i precyzja | jak nie jest, to traci dużo |
|
||||||
|
| | ale tylko jak jest najebany | swojej zwinności |
|
||||||
|
|--------------------------+--------------------------------------+-------------------------------|
|
||||||
|
| schizoduch PGR-u | czasami graczowi objawia się | inni myślą, że jest obłąkany |
|
||||||
|
| | duch PGR-u, podpowiadający o różnych | |
|
||||||
|
| | rzeczach związanych z osiągnięciem | |
|
||||||
|
| | większego szczęścia | |
|
||||||
|
|--------------------------+--------------------------------------+-------------------------------|
|
||||||
|
| schizocień za plecami | czasami graczowi objawia się cień, | inni myślą, że jest obłąkany |
|
||||||
|
| | który podpowiada o różnych rzeczach | |
|
||||||
|
| | związanych z osiągnięciem większej | |
|
||||||
|
| | woli | |
|
||||||
|
|--------------------------+--------------------------------------+-------------------------------|
|
||||||
|
| oczy prababki | świetna widoczność w nocy | słabsza widoczność w dzień |
|
||||||
|
|--------------------------+--------------------------------------+-------------------------------|
|
||||||
|
| | | |
|
||||||
|
|
||||||
|
*** Czas w grze
|
||||||
|
Nie ma godzin, minut, ani sekund. Takie dane nie są udostępniane
|
||||||
|
graczowi. Wszystko zależy od tego, co widzi i słyszy. Gra kusi gracza
|
||||||
|
zegarkami porozrzucanymi w niektórych miejscach, ale każdy z nich jest
|
||||||
|
popsuty.
|
||||||
|
*** Fizyczny świat
|
||||||
|
Nie ma żadnej mapy w grze. Gracz musi poradzić sobie znakami
|
||||||
|
drogowymi, specyficznymi drzewami, domami, wieżami, itp. W orientacji
|
||||||
|
pomaga zoptymalizowany silnik, więc dystans renderowania jest wielki.
|
||||||
|
*** Mapa afektywna
|
||||||
|
Żeby gracz nie pogubił się we wszystkich relacjach w grze, relacje
|
||||||
|
między postaciami są pokazywane na "mapie afektywnej" jako pewna sieć
|
||||||
|
z postaciami i ich połączeniami.
|
||||||
|
*** Przedmioty
|
||||||
|
**** Flora
|
||||||
|
Żadna roślina, jarzyna, warzywo, czy jagoda nie ma żadnej przypisanej
|
||||||
|
nazwy. Są tylko domyślne nazwy typu "nieznane warzywo". Gracz może
|
||||||
|
zmieniać nazwy przedmiotów na podstawie tego, jakie mają na niego
|
||||||
|
efekty, czy na podstawie tego, co dowie się od innych osób.
|
||||||
|
|||||||
@@ -1,11 +1,19 @@
|
|||||||
#+TITLE: Wschód TODO
|
hhhh#+TITLE: Wschód TODO
|
||||||
|
|
||||||
* UI system
|
* UI system
|
||||||
|
** DONE Switch from floats to ints in all UI stuff, from vec2's to ivec2's
|
||||||
|
** TODO Centering widget in parent
|
||||||
|
** TODO Inheriting width/height from parent
|
||||||
** TODO Flowbox proper weighing
|
** TODO Flowbox proper weighing
|
||||||
|
** TODO UI system major refactoring and redesign
|
||||||
|
** TODO Context menus
|
||||||
|
** TODO Z-sorting UI children (or windows)
|
||||||
|
** DONE Loading UI from a file or script
|
||||||
|
** TODO Better GL scissoring, calculating the summed AABB crop box from ALL parents
|
||||||
|
** DONE Move layout_width and layout_spacing into the widget out of the style
|
||||||
** DONE Entry cursor
|
** DONE Entry cursor
|
||||||
** DONE Reset UI state (hovered, clicked, focused) on lose UI focus
|
** DONE Reset UI state (hovered, clicked, focused) on lose UI focus
|
||||||
** DONE Entry UTF-8 support
|
** DONE Entry UTF-8 support
|
||||||
** TODO UI system major refactoring and redesign
|
|
||||||
** DONE Think about the UI on_xxx_down/up handling (solved)
|
** DONE Think about the UI on_xxx_down/up handling (solved)
|
||||||
** DONE Revamp UI event system
|
** DONE Revamp UI event system
|
||||||
** DONE Implement vtables (something else was done)
|
** DONE Implement vtables (something else was done)
|
||||||
@@ -15,7 +23,7 @@
|
|||||||
** DONE Scissoring of out-of-bounds UI elements
|
** DONE Scissoring of out-of-bounds UI elements
|
||||||
** DONE On mouse enter, on mouse leave, and on mouse move callbacks
|
** DONE On mouse enter, on mouse leave, and on mouse move callbacks
|
||||||
** DONE Button widget
|
** DONE Button widget
|
||||||
** TODO Tooltip rendering
|
** DONE Tooltip rendering
|
||||||
** DONE Borders
|
** DONE Borders
|
||||||
** DONE Padding/margin
|
** DONE Padding/margin
|
||||||
** DONE Aspect ratios
|
** DONE Aspect ratios
|
||||||
@@ -28,22 +36,26 @@
|
|||||||
** DONE FlowLayout widget
|
** DONE FlowLayout widget
|
||||||
** DONE Multiline text widget
|
** DONE Multiline text widget
|
||||||
** DONE Text entry widget
|
** DONE Text entry widget
|
||||||
** TODO Movable and resizable windows
|
** DONE Movable windows
|
||||||
** TODO Loading UI from a file or script
|
** DONE Resizable windows
|
||||||
|
** DONE Move uicursor to uidummy
|
||||||
** DONE Fix scrollable scrolling being a bit weird
|
** DONE Fix scrollable scrolling being a bit weird
|
||||||
* Entity system
|
* Entity system
|
||||||
** TODO Entity hit testing
|
** TODO Entity hit testing
|
||||||
** TODO Entity on hover UI label, outline
|
|
||||||
** TODO Meshing together N entities for less drawcalls
|
|
||||||
** TODO Sky/sun/clouds drawing seperate from other entities
|
** TODO Sky/sun/clouds drawing seperate from other entities
|
||||||
|
** TODO Entity on hover UI label, outline
|
||||||
** TODO Optimize entity rendering and ticking; it's a huge bottleneck
|
** TODO Optimize entity rendering and ticking; it's a huge bottleneck
|
||||||
** TODO Ticking system revamp; ticking calculation when out of tick radius and coming back
|
** TODO Ticking system revamp; ticking calculation when out of tick radius and coming back
|
||||||
|
** TODO Meshing together N entities for less drawcalls
|
||||||
* Chunk system
|
* Chunk system
|
||||||
** TODO Chunk queue/heap sorted by distance to player
|
** TODO Chunk queue/heap sorted by distance to player
|
||||||
* Misc.
|
* Misc.
|
||||||
|
** TODO Move cursor changing to graphics.c
|
||||||
** TODO Better sky/cloud system, perhaps a hemisphere
|
** TODO Better sky/cloud system, perhaps a hemisphere
|
||||||
** TODO Sun system
|
** TODO Sun system
|
||||||
* Overall game structure
|
* Overall game structure
|
||||||
** TODO Resource packs with shaders, textures, entity templates
|
** DONE Resource packs with shaders, textures, entity templates
|
||||||
** TODO Map pack with heightmap data, materialmap data, entities and their placements
|
** TODO Map pack with heightmap data, materialmap data, entities and their placements
|
||||||
** TODO Guile/Lua integration
|
** DONE Guile/Lua integration
|
||||||
|
** TODO Proper memory freeing: UI Widgets, pakman, UIContext, stateman
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
+210
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 1.6 MiB |
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 510 KiB |
@@ -13,15 +13,13 @@ Entity_new ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
Entity_render (Entity *entity, vec3 camera_position, mat4 view, vec4 frustum_planes[6])
|
Entity_render (Entity *entity, vec3 camera_position, mat4 view, vec4 frustum_planes[6],
|
||||||
|
int render_distance, gboolean wireframe_enabled)
|
||||||
{
|
{
|
||||||
if (!entity->visible)
|
if (!entity->visible)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int render_distance = gvar_get ("render_distance");
|
|
||||||
gboolean wireframe_enabled = gvar_get ("wireframe_enabled");
|
|
||||||
|
|
||||||
/* Why an int, why int division? It's simply much faster than
|
/* Why an int, why int division? It's simply much faster than
|
||||||
floating point operations. No need to have super accurate cull
|
floating point operations. No need to have super accurate cull
|
||||||
|
|||||||
@@ -29,9 +29,8 @@ typedef struct Entity
|
|||||||
vec3 position;
|
vec3 position;
|
||||||
vec3 rotation;
|
vec3 rotation;
|
||||||
vec3 scale;
|
vec3 scale;
|
||||||
/* Use RESPRG to get the int. */
|
|
||||||
unsigned int program;
|
unsigned int program;
|
||||||
/* Use RESTEX to get the int. */
|
|
||||||
unsigned int texture;
|
unsigned int texture;
|
||||||
} Entity;
|
} Entity;
|
||||||
|
|
||||||
@@ -60,4 +59,5 @@ entity_compute_aabb (Entity *e, vec3 out_min, vec3 out_max)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Entity *Entity_new ();
|
Entity *Entity_new ();
|
||||||
gboolean Entity_render (Entity *entity, vec3 camera_position, mat4 view, vec4 frustum_planes[6]);
|
gboolean Entity_render (Entity *entity, vec3 camera_position, mat4 view, vec4 frustum_planes[6],
|
||||||
|
int render_distance, gboolean wireframe_enabled);
|
||||||
|
|||||||
+3
-2
@@ -100,6 +100,7 @@ World_render (World *w, vec3 position, mat4 view, vec4 planes[6])
|
|||||||
texture_use (PMTEX ("terrain4"), 4);
|
texture_use (PMTEX ("terrain4"), 4);
|
||||||
|
|
||||||
int render_distance = gvar_get ("render_distance");
|
int render_distance = gvar_get ("render_distance");
|
||||||
|
gboolean wireframe_enabled = gvar_get ("wireframe_enabled");
|
||||||
int frame_chunks = 0, frame_entities = 0;
|
int frame_chunks = 0, frame_entities = 0;
|
||||||
|
|
||||||
for (int z = cz - render_distance; z <= cz + render_distance; ++z)
|
for (int z = cz - render_distance; z <= cz + render_distance; ++z)
|
||||||
@@ -127,7 +128,7 @@ World_render (World *w, vec3 position, mat4 view, vec4 planes[6])
|
|||||||
|
|
||||||
ChunkMesh_bind (mesh);
|
ChunkMesh_bind (mesh);
|
||||||
program_set_vec3_ind (PMPRG ("chunk"), "chunk_position", x * CHUNK_DIM, 0.0, z * CHUNK_DIM);
|
program_set_vec3_ind (PMPRG ("chunk"), "chunk_position", x * CHUNK_DIM, 0.0, z * CHUNK_DIM);
|
||||||
ChunkMesh_render (mesh, FLAG_GET ("wireframe_enabled"));
|
ChunkMesh_render (mesh, wireframe_enabled);
|
||||||
frame_chunks++;
|
frame_chunks++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -136,7 +137,7 @@ World_render (World *w, vec3 position, mat4 view, vec4 planes[6])
|
|||||||
for (guint i = 0; i < w->entities->len; ++i)
|
for (guint i = 0; i < w->entities->len; ++i)
|
||||||
{
|
{
|
||||||
Entity *ent = g_array_index (w->entities, Entity*, i);
|
Entity *ent = g_array_index (w->entities, Entity*, i);
|
||||||
frame_entities += Entity_render (ent, position, view, planes) ? 1 : 0;
|
frame_entities += Entity_render (ent, position, view, planes, render_distance, wireframe_enabled) ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
gvar_set ("frame_chunks", frame_chunks);
|
gvar_set ("frame_chunks", frame_chunks);
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 306 KiB |
@@ -1,21 +0,0 @@
|
|||||||
SRC=src/mapedit.c
|
|
||||||
|
|
||||||
OBJ=$(SRC:.c=.o)
|
|
||||||
CFLAGS=-g -Werror -Wextra -Wall `pkg-config --cflags gtk4`
|
|
||||||
LDFLAGS=`pkg-config --libs gtk4`
|
|
||||||
TARGET=mapedit
|
|
||||||
CC=gcc
|
|
||||||
LD=gcc
|
|
||||||
|
|
||||||
.PHONY: clean
|
|
||||||
|
|
||||||
all: $(TARGET)
|
|
||||||
|
|
||||||
$(TARGET): $(OBJ)
|
|
||||||
$(LD) $^ -o $@ $(LDFLAGS)
|
|
||||||
|
|
||||||
.c.o:
|
|
||||||
$(CC) -c $^ -o $@ $(CFLAGS)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
$(RM) $(TARGET) $(OBJ)
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
#define SDL_MAIN_USE_CALLBACKS 1
|
|
||||||
#include <SDL3/SDL.h>
|
|
||||||
#include <SDL3/SDL_main.h>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#include "shader.h"
|
|
||||||
|
|
||||||
static SDL_Window *window = NULL;
|
|
||||||
static SDL_GLContext context = NULL;
|
|
||||||
|
|
||||||
SDL_AppResult
|
|
||||||
SDL_AppInit (void **appstate, int argc, char **argv)
|
|
||||||
{
|
|
||||||
(void) appstate; (void) argc; (void) argv;
|
|
||||||
|
|
||||||
INFO ("Running game with debugging facilities.");
|
|
||||||
SDL_SetAppMetadata ("Wschód", VERSION, "eur.chopininteractive.wschod-game");
|
|
||||||
|
|
||||||
if (!SDL_Init (SDL_INIT_VIDEO)) {
|
|
||||||
ERROR ("Couldn't initialize SDL: %s", SDL_GetError());
|
|
||||||
return SDL_APP_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
window = SDL_CreateWindow ("Wschód", 640, 480, SDL_WINDOW_OPENGL);
|
|
||||||
|
|
||||||
if (!window) {
|
|
||||||
ERROR ("Couldn't create window: %s", SDL_GetError());
|
|
||||||
return SDL_APP_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
context = SDL_GL_CreateContext (window);
|
|
||||||
|
|
||||||
return SDL_APP_CONTINUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_AppResult
|
|
||||||
SDL_AppEvent (void *appstate, SDL_Event *event)
|
|
||||||
{
|
|
||||||
(void) appstate;
|
|
||||||
|
|
||||||
if (event->type == SDL_EVENT_QUIT) {
|
|
||||||
return SDL_APP_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
return SDL_APP_CONTINUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_AppResult
|
|
||||||
SDL_AppIterate (void *appstate)
|
|
||||||
{
|
|
||||||
(void) appstate;
|
|
||||||
|
|
||||||
glClearColor (0, 0, 0, 1);
|
|
||||||
glClear (GL_COLOR_BUFFER_BIT);
|
|
||||||
SDL_GL_SwapWindow (window);
|
|
||||||
|
|
||||||
return SDL_APP_CONTINUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
SDL_AppQuit (void *appstate, SDL_AppResult result)
|
|
||||||
{
|
|
||||||
(void) appstate;
|
|
||||||
(void) result;
|
|
||||||
SDL_GL_DestroyContext (context);
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
let
|
|
||||||
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-25.05";
|
|
||||||
pkgs = import nixpkgs { config = {}; overlays = []; };
|
|
||||||
in
|
|
||||||
|
|
||||||
|
|
||||||
pkgs.mkShellNoCC {
|
|
||||||
packages = with pkgs; [
|
|
||||||
gcc
|
|
||||||
pkg-config
|
|
||||||
gtk4
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main ()
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user