diff options
-rw-r--r-- | asset/tile/bl.pic | 1 | ||||
-rw-r--r-- | asset/tile/br.pic | 1 | ||||
-rw-r--r-- | asset/tile/empty.pic | bin | 0 -> 188 bytes | |||
-rw-r--r-- | asset/tile/filled.pic | bin | 0 -> 188 bytes | |||
-rw-r--r-- | asset/tile/grass.pic | 1 | ||||
-rw-r--r-- | asset/tile/hori.pic | 1 | ||||
-rw-r--r-- | asset/tile/tl.pic | 1 | ||||
-rw-r--r-- | asset/tile/tr.pic | 1 | ||||
-rw-r--r-- | asset/tile/vert.pic | 1 | ||||
-rw-r--r-- | grid.c | 163 | ||||
-rw-r--r-- | mkfile | 17 |
11 files changed, 187 insertions, 0 deletions
diff --git a/asset/tile/bl.pic b/asset/tile/bl.pic new file mode 100644 index 0000000..a594db2 --- /dev/null +++ b/asset/tile/bl.pic @@ -0,0 +1 @@ + m8 0 0 32 32 eeeeeeeeллллллллллллллллeeeeeeeeeлыыыыыыыыыыыыыыыeeveeeeeлыллллллллллллллeveeeeeeeлллылылылылылылыeeee ьыыллылылылылылы evevee клллыллллллллллл && eeee &&ллылылыыыкыыыыыы &' eeee & лыллыллллльллллл eeee & лылыллыылылклылылкклылллee & лылллылллылылылллыьлылыыee & лылыыллылыллльлыыллыллллee & лыллллыллылыыкклллыллыыыee & лылыылылылллллььылылылллee & лыллллылллыыылылклылллылee & лылыылылыыллллылкьклыыллee & лыллллыллллылыллльльлллыee & лылыылылыкьылылыыыкккылыee & лыллллыллльклллылллььллыee & лылыылылыылклыыллылклкькee & лыллллыллллыьлллыллылылыee & лылыылылылыллкылылылльллee & лыллллылллылылллылллыккыee & лылыылылыыллллыьклыылльлee & лыллллыллллыыыллкьлллылкee & & 7 7 7 7 7 veevee & & & 7 7 & & 7 eee & & & &&& & & & & &eeeeee & & & && eeveeeeveeveveevveeeeveeeeeeeevveeeveeeveeeveeeveveeveveveveveveeee
\ No newline at end of file diff --git a/asset/tile/br.pic b/asset/tile/br.pic new file mode 100644 index 0000000..18a9116 --- /dev/null +++ b/asset/tile/br.pic @@ -0,0 +1 @@ + m8 0 0 32 32 eeeeeeeeллллллллллллллллeeeeeeeeeлыыыыыыыыыыыыыыыeeveeeeeлыллллллллллллллeveeeeeeeлллылылылылылылыeeee ьыыллылылылылылы evevee клллыллллллллллл && eeee &&ллылылыыыкыыыыыы &' eeee & лыллыллллльллллл eeлллльклльылыллыылылклылы && veeлыылыллыыллылылллылылылл eлыллылылллыллылылыллльлы7&& evлылыллллыыллыллллылыыккл eeлылллыыылллыллыыыллллльь7 & evлылыыллллыыллыллллыыылыл7 & eeлыллллылылллыллылыллллыл evлылыылылылылылыллылылылл & evлыллллылллллылллыллылылы & eeлылыылклыыыыллыыллыллллл &evлыллллыьлллллылллыылыыыы && evлылыылылкылылылыылллыллл eeлыллллыллллылыллллыыллыл7 &&evлылыылылыыьклллыылыллылл & veeлыллллыллллкьыылллылыллы 7 vлылыылылылыльлллылылллыл & eeeeee 7 77 7 7 & eee && & & & & 7 & eveve &' & & && & & && &&& eeee & & &eveeeeeeeeveeeveeeeeeeeeeeevveeeeeeveeeeeveeeveeeevevevvevveveeeveveve
\ No newline at end of file diff --git a/asset/tile/empty.pic b/asset/tile/empty.pic Binary files differnew file mode 100644 index 0000000..3adc4e5 --- /dev/null +++ b/asset/tile/empty.pic diff --git a/asset/tile/filled.pic b/asset/tile/filled.pic Binary files differnew file mode 100644 index 0000000..d3bc0a7 --- /dev/null +++ b/asset/tile/filled.pic diff --git a/asset/tile/grass.pic b/asset/tile/grass.pic new file mode 100644 index 0000000..c1027e5 --- /dev/null +++ b/asset/tile/grass.pic @@ -0,0 +1 @@ + m8 0 0 32 32 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeveeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee vvvvee ee &&&&&&&&&&&&&&&&&&&&&&eeeeee & eee & & & & & & & & & & &veeee & & vee & & & & & & & & & eeeee & & & & & & & & & & eee & & evee & & &&&& && 7 7 7 veeee & && &' &' 7& & & vee & & & & & veee & && & & & && &eeee & & & & &&& &veee & && && & & & veee & & &' & & & &eeeee & && & & &&& eee & & 7& & & & vvee & && 7& & & & & &veeeee & & & & & ee & && 7& & & & & veeee & & & & & & & eee & && 7& & & &evee & & && & & & eeeevevvvveevevveeevevveeveveeeveeeeeveeeeveeeeeeeveeeeveeeeeveevevee
\ No newline at end of file diff --git a/asset/tile/hori.pic b/asset/tile/hori.pic new file mode 100644 index 0000000..ab12d67 --- /dev/null +++ b/asset/tile/hori.pic @@ -0,0 +1 @@ + m8 0 0 32 32 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeveeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee vvvvee ee &&&&&&&&&&&&&&&&&&&&&&eeeeee & eллллькллллллллллллллллллллллльлллыылыллыыыыыыыыыыыыыыыыыыыыыыыкьлыллылыллллллллллллллллллллллллллылыллллылылылылылылылылылылылыллылллыыыллылылылылылылылылылылыллылыыллллылллллллллллллллллллллллыллллылыллыыыыыыыыыыыыыыыыыыыыылылыылылылыллллллллллллллллллллллыллллылллллылылылылылылылылылыллылыылклыыыыллылклылллылллылллыллыллллыьлллллыллььллыыллыыллыылллылыылылкылылылыыккылллылллылллылыллллыллллылыллллльлылылылылылылылыылылыыьклллыылылкллылллылллылыллллыллллкьыылллылылыллыыллыыллылыылылылыльлллыылллльлылллылллeeee 7 77 7 7 7 eevee && & & & & & eeeve &' & & && & & &&&& & &veee & veeeeeeeeeveeeveeeeeeeeeeeeeeeveeeeeeeeeeveeeveeeevevevvevvevveveeveve
\ No newline at end of file diff --git a/asset/tile/tl.pic b/asset/tile/tl.pic new file mode 100644 index 0000000..a18f336 --- /dev/null +++ b/asset/tile/tl.pic @@ -0,0 +1 @@ + m8 0 0 32 32 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeveeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee vvvvee ee &&&&&&&&&&&&&&&&&&&&&&eeeeee & eee & ллллллллллллллллллллльллee & лыыыыыыыыыыыыыыыыыыыыыкьee & лыллллллллллллллллллллллee & лыллылылылылылылылылылылee & лылыллылылылылылылылылылee & лылллыллллллллллллллллллee & лылыыллыыыыыыыыыыыыыыыыыee & лыллллылллллллллллллллллee & лылыылылылылылылылылылылee & лыллллылллылылллылллылллee & лылыылылыыллллыыллыыллыыee & лыллллыллллыыылллылллыллee & лылыылылыылылллылылылылыee & лыллллыллллыллыллылллыллee & лылыылылылыллыллыллыыллыee & лыллллылллылыллыллылллылee & лылыылылыыллллыл eveeee & лыллллыллллыыылл &eee & лылыылылылыллллы & veee & лыллллылллылылыл & veeeveлылыылылыыллллылeeeeeeveьыллллыллллыыыллvveeeeeveлклыылылылыллллыeveeeeeveeльллллылллылылылeeeee
\ No newline at end of file diff --git a/asset/tile/tr.pic b/asset/tile/tr.pic new file mode 100644 index 0000000..131ba74 --- /dev/null +++ b/asset/tile/tr.pic @@ -0,0 +1 @@ + m8 0 0 32 32 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeveeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee vvvvee ee &&&&&&&&&&&&&&&&&&&&&&eeeeee & eлллльклллллллллллллллллл& & veeлыылыллыыыыыыыыыыыыыыыыы eлыллылыллллллллллллллллл &&&evлылыллллылылылылылылылыл7 veлылллыыыллылылылылылылыл & vvлылыыллллылллллллллллллл7 & eeлыллллылыллыыыыыыыыыыыыы & eeлылыылылылыллллллллллллл & evлыллллылллллылылылылылыл &eeлылыылклыыыыллылклылллыл77& vvлыллллыьлллллыллььллыылл eeeлылыылылкылылылыыккылллы 7& eлыллллыллллылыллллльлылы evлылыылылыыьклллыылылкллы && eeлыллллыллллкьыылллылылыл evлылыылылылыльлллыылллльл7&& eeeeee ллылыкклыллыыыкк eve && кыллллььылылллль 7 &eeeve &' кьлыыыклклллылыл7 &vvee ллыллллькькыллыл & veeeeыыллылылкьлллыллveeeeeeveeeлллыллылылкыьклыeeeeeeeлылылылллльллкьлeeeveeeveeeлылылллыыыкылылкveeve
\ No newline at end of file diff --git a/asset/tile/vert.pic b/asset/tile/vert.pic new file mode 100644 index 0000000..2a969fb --- /dev/null +++ b/asset/tile/vert.pic @@ -0,0 +1 @@ + m8 0 0 32 32 eeeeeeeeллллллллллллллллeeeeeeeeeлыыыыыыыыыыыыыыыeeveeeeeлыллллллллллллллeveeeeeeeлллылылылылылылыeeee ьыыллылылылылылы evevee клллыллллллллллл && eeee &&ллылылыыыкыыыыыы &' eeee & лыллыллллльллллл eeee & лылыллыылылклылы && veeee & лылллылллылылылл eee & лылыыллылыллльлы7&& evee & лыллллыллылыыккл eeee & лылыылылыллллльь7 & evee & лыллллылллыыылыл7 & eeee & лылыылылыыллллыл evee & лыллллыллллылылл & evee & лылыылылыкьылылы & eeee & лыллллыллльклллы &evee & лылыылылыылклыыл && evee & лыллллыллллыьллл7 eeee & лылыылылылыллкыл & evee & лыллллылллылыллл & evee & лылыылылыыллллыь7 & eeee & лыллллыллллыыылл & evee & лылыылылылыллллы veee & лыллллылллылылыл && eeeee & лылыылылыыллллыл7 eee & лыллллыллллыыылл & eveeveлылыылылылыллллыeeeeeeeveьыллллылллылылылeveveeveлклыылылыыллллылvveveeeveeльллллыллллыыыллeeeeee
\ No newline at end of file @@ -0,0 +1,163 @@ +#include <u.h> +#include <libc.h> +#include <draw.h> +#include <geometry.h> +#include <event.h> +#include <keyboard.h> + +enum { + Cbg, + Cfg, + Ctxtbg, + NCOLOR +}; + +enum { + TW = 32, + TH = 32 +}; + +typedef struct Tile Tile; +struct Tile +{ + char *name; + char id; + Image *img; +}; + +Image *pal[NCOLOR]; +Tile tiles[] = { + { .name = "tl", .id = 'n' }, + { .name = "tr", .id = 'e' }, + { .name = "bl", .id = 'w' }, + { .name = "br", .id = 's' }, + { .name = "hori", .id = 'H' }, + { .name = "vert", .id = 'V' }, + { .name = "grass", .id = 'g' } +}; +RFrame worldrf; +char *map[] = { + "nHHHHe", + "VggggV", + "VggggV", + "VggggV", + "wHHHHs" +}; +Point mpos; + +Point +toscreen(Point2 p) +{ + p = invrframexform(p, worldrf); + return Pt(p.x,p.y); +} + +Point2 +fromscreen(Point p) +{ + return rframexform(Pt2(p.x,p.y,1), worldrf); +} + +void +initpalette(void) +{ + pal[Cbg] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, DBlack); + pal[Cfg] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, DDarkblue); + pal[Ctxtbg] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, DPaleyellow); +} + +void +inittiles(void) +{ + char path[256]; + int fd, i; + + for(i = 0; i < nelem(tiles); i++){ + snprint(path, sizeof path, "asset/tile/%s.pic", tiles[i].name); + fd = open(path, OREAD); + tiles[i].img = readimage(display, fd, 0); + close(fd); + } +} + +void +drawstats(void) +{ + char s[256]; + + snprint(s, sizeof s, "%v", fromscreen(mpos)); + stringbg(screen, addpt(screen->r.min, Pt(20,20)), pal[Cfg], ZP, font, s, pal[Ctxtbg], ZP); +} + +void +redraw(void) +{ + Point2 dp; + int i, j; + char *row; + + draw(screen, screen->r, pal[Cbg], nil, ZP); + for(i = 0; i < nelem(map); i++) + for(row = map[i]; *row; row++){ + dp = Pt2((row-map[i])*TW,i*TH,1); + for(j = 0; j < nelem(tiles); j++) + if(tiles[j].id == *row) + draw(screen, Rpt(toscreen(dp),addpt(toscreen(dp), Pt(TW,TH))), tiles[j].img, nil, ZP); + } + drawstats(); + flushimage(display, 1); +} + +void +usage(void) +{ + fprint(2, "usage: %s\n", argv0); + exits("usage"); +} + +void +main(int argc, char *argv[]) +{ + Event e; + + GEOMfmtinstall(); + ARGBEGIN{ + default: usage(); + }ARGEND; + if(argc > 0) + usage(); + if(initdraw(nil, nil, nil) < 0) + sysfatal("initdraw: %r"); + initpalette(); + inittiles(); + worldrf.p = Pt2(screen->r.min.x,screen->r.min.y,1); + worldrf.p = addpt2(worldrf.p, Vec2(Dx(screen->r)/2,Dy(screen->r)/3)); + worldrf.bx = Vec2(1,0); + worldrf.by = Vec2(0,1); + einit(Emouse|Ekeyboard); + redraw(); + for(;;) + switch(event(&e)){ + case Emouse: + mpos = e.mouse.xy; + redraw(); + break; + case Ekeyboard: + switch(e.kbdc){ + case 'q': + case Kdel: + exits(0); + } + break; + } +} + +void +eresized(int) +{ + if(getwindow(display, Refnone) < 0) + sysfatal("resize failed"); + worldrf.p = Pt2(screen->r.min.x,screen->r.min.y,1); + worldrf.p = addpt2(worldrf.p, Vec2(Dx(screen->r)/2,Dy(screen->r)/3)); + redraw(); +} @@ -5,5 +5,22 @@ TARG=\ triangles\ beziers\ bsplines\ + grid\ + +HFILES=\ + libgeometry/geometry.h\ + +LIB=\ + libgeometry/libgeometry.a$O\ + +CFLAGS=$CFLAGS -Ilibgeometry </sys/src/cmd/mkmany + +libgeometry/libgeometry.a$O: + cd libgeometry + mk install + +clean nuke:V: + rm -f *.[$OS] [$OS].??* $TARG + @{cd libgeometry; mk $target} |