From 9792953849a98434c4422f2e6a67e9b1e9452429 Mon Sep 17 00:00:00 2001 From: Sander Schobers Date: Sat, 7 Aug 2021 00:00:18 +0200 Subject: [PATCH] Initial version, includes simple level renderer & player movement. --- .gitignore | 3 + README.md | 295 ++++++++++++++++++ cmd/tins2021/app.go | 138 ++++++++ cmd/tins2021/extract.go | 38 +++ cmd/tins2021/levelcontrol.go | 86 +++++ cmd/tins2021/resources/fonts/FiraMono-OFL.txt | 93 ++++++ .../resources/fonts/FiraMono-Regular.ttf | Bin 0 -> 169464 bytes cmd/tins2021/resources/fonts/escher.ttf | Bin 0 -> 21036 bytes cmd/tins2021/resources/fonts/escheresk.ttf | Bin 0 -> 21812 bytes cmd/tins2021/resources/images/dwarf.png | Bin 0 -> 20341 bytes cmd/tins2021/resources/textures.txt | 1 + cmd/tins2021/tins2021.go | 95 ++++++ cmd/tins2021/tins2021_allegro.go | 16 + cmd/tins2021/tins2021_sdl.go | 13 + cmd/tins2021/ui.go | 26 ++ cube.go | 110 +++++++ io.go | 11 + level.go | 102 ++++++ resourceloader.go | 53 ++++ scripts/release.sh | 60 ++++ settings.go | 41 +++ 21 files changed, 1181 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 cmd/tins2021/app.go create mode 100644 cmd/tins2021/extract.go create mode 100644 cmd/tins2021/levelcontrol.go create mode 100644 cmd/tins2021/resources/fonts/FiraMono-OFL.txt create mode 100644 cmd/tins2021/resources/fonts/FiraMono-Regular.ttf create mode 100644 cmd/tins2021/resources/fonts/escher.ttf create mode 100644 cmd/tins2021/resources/fonts/escheresk.ttf create mode 100644 cmd/tins2021/resources/images/dwarf.png create mode 100644 cmd/tins2021/resources/textures.txt create mode 100644 cmd/tins2021/tins2021.go create mode 100644 cmd/tins2021/tins2021_allegro.go create mode 100644 cmd/tins2021/tins2021_sdl.go create mode 100644 cmd/tins2021/ui.go create mode 100644 cube.go create mode 100644 io.go create mode 100644 level.go create mode 100644 resourceloader.go create mode 100644 scripts/release.sh create mode 100644 settings.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9f1521f --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.vscode/launch.json + +scripts/build diff --git a/README.md b/README.md new file mode 100644 index 0000000..a5bada4 --- /dev/null +++ b/README.md @@ -0,0 +1,295 @@ +# TINS 2020 + +## Content + +- [Introduction](##Introduction) +- [Additional Rules](##Additional-Rules) + * [Implementation](###Implementation) + * [Definition](###Definition) +- [Building](##Building) +- [Sources](##Sources) +- [Licenses (third party)](##Licenses) + * [Go-SDL2](###Go-SDL2) + * [SDL 2.0](###SDL-2.0) + * [Fira Mono font](###Fira-Mono-font) + * [Escher font](###Escher-font) + * [Escheresk font](###Escheresk-font) + +## Introduction + +**Welcome to Qbitter!** + +TODO: description of the game. + +**Controls:** + +TODO: fill in. + +## Additional Rules + +### Implementation + +**genre rule #143** + +This rule has been omitted by applying the bonus rule. + +**artistical rule #60** + +The least obvious and not finished within the time contraint: when researching you'll have to dial a phone number like you used to do with an old rotary dial (works by repeating the number on the keyboard an exact number of times). + +**artistical rule #94** + +TODO: describe plug. + +**technical rule #113** + +The main grid is made of cubes (faux 3D) that are regular hexagons in 2D. + +**bonus rule #13** + +TODO: describe tests. + +### Definition + +### Genre requirement +**** There will be 1 genre rule + +**genre rule #143** + +Humoristic/Funny. Make the player laugh out loud at least once by funny situations, dialogue, or anything else in your game. + +Comments: If you need inspiriation take a look at [this list of 27 funniest video games of all time](https://www.theguardian.com/technology/2017/sep/07/the-27-funniest-video-games-of-all-time-hitman-grand-theft-auto) (Which includes some of my personal favorites, like monkey island or THHGTTG text adventure). + +### Artistic requirements +**** There will be 2 artistical rules + +**artistical rule #147** + +Inspired by MC Escher + +Comments: M.C. Escher created math-inspired graphical art. He created well known artworks that use impossible objects, symmetry and tesselations. One might say he was the very first creative coder. All his works can be browsed on this [online gallery](https://mcescher.com/). + +**artistical rule #94** + +The game should contain a plug for another program or thing you made. + +Comments: It's not uncommon for a game to contain ads for other games by the same publisher. But you can get creative with it. Take for example Kings quest II. In that game you can find a complete [trailer for Space Quest](https://youtu.be/rKZwVQYV34g?t=1115) hidden as an easter egg. + +### Technical requirement +**** There will be 1 technical rule + +**technical rule #113** + +Hexagonal - something in the game must be hexagonal + +Comments: [Hexagons are the bestagons](https://www.youtube.com/watch?v=thOifuHs6eY). + +### Bonus rule +**** There will be 1 bonus rule + +**bonus rule #13** + +Test of Might - you may skip another rule if your code contains automated test coverage (integration or unit tests). + +Comments: You may use this as an escape clause to remove one of the other rules. Your automated test code should be included with your submission. For clarity, explain whether you applied this rule, and which rule you skipped, in the README of your game. + +## Building +Prerequisites: +- [SDL 2.0](https://www.libsdl.org/) (SDL2, SDL2_image, SDL2_ttf and SDL2_gfx development libraries are required; for [more information](https://github.com/veandco/go-sdl2)). +- [Go](https://golang.org/dl/) 1.12 or later. +- GCC or a compatible compiler. +- [Git](https://git-scm.com/download). + +With all prequisites installed you can run: +``` +go get -u opslag.de/schobers/tins2021/cmd/tins2021 +``` + +This will create the binary `$HOME/go/bin/tins2021`. Additionally you can embed the resources and build a static release with the following commands (this assumes `$HOME/go/bin` is available in the `PATH`): +``` +go generate opslag.de/schobers/tins2021/cmd/tins2021 +go install -tags static -ldflags "-s -w" opslag.de/schobers/tins2021/cmd/tins2021 +``` + +If you want to use the Allegro backend you can add the build tag `allegro` to the `go install` command. E.g.: +``` +go get -u opslag.de/schobers/allg5 +go install -tags static,allegro -ldflags "-s -w" opslag.de/schobers/tins2021/cmd/tins2021 +``` +In this case the SDL 2.0 prerequisite is replaced by the Allegro 5.2 (development libraries must be available for your C compiler). + +## Command line interface +You can extract all resources embedded in the executable by running it from the command line with the `--extract-resources` flag. The resources will be extract in the current working directory. Note that the game will use the resources on disk first if they are available. + +## Sources +Can be found at https://opslag.de/schobers/tins2021 (Git repository). + +## Licenses + +### SDL 2.0 + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +### Go-SDL2 + +Copyright (c) 2013, Go-SDL2 Authors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + * Neither the name of Go-SDL2 nor the names of its contributors may be +used to endorse or promote products derived from this software without specific +prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +### Fira Mono font + +Copyright (c) 2012-2013, The Mozilla Corporation and Telefonica S.A. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +### Escher font + +Licensed under WTFPL (https://isene.org/2019/12/Escher.html) + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + +### Escheresk font + +**Note of the author** + +If you want to use this for commercial projects, please contact me: tobias (dot) sommer (at) gmx (dot) ch +I also appreciate it if you send me links/images of your non-commercial work featuring this font. +Enjoy! :) diff --git a/cmd/tins2021/app.go b/cmd/tins2021/app.go new file mode 100644 index 0000000..9454381 --- /dev/null +++ b/cmd/tins2021/app.go @@ -0,0 +1,138 @@ +package main + +import ( + "image" + + "opslag.de/schobers/geom" + "opslag.de/schobers/tins2021" + "opslag.de/schobers/zntg/play" + "opslag.de/schobers/zntg/ui" +) + +type app struct { + ui.Proxy + + settings *tins2021.Settings + + intro *introView +} + +type fontDescriptor struct { + Name string + Path string + Size int +} + +func (a *app) loadFonts(ctx ui.Context, descriptors ...fontDescriptor) error { + fonts := ctx.Fonts() + for _, desc := range descriptors { + _, err := fonts.CreateFontPath(desc.Name, desc.Path, desc.Size) + if err != nil { + return err + } + } + return nil +} + +const fpsOverlayName = `fps` + +func (a *app) Init(ctx ui.Context) error { + + if err := a.loadFonts(ctx, + fontDescriptor{"debug", "fonts/FiraMono-Regular.ttf", 12}, + fontDescriptor{"default", "fonts/escheresk.ttf", 32}, + fontDescriptor{"title", "fonts/escher.ttf", 80}, + ); err != nil { + return err + } + + textureLoader := tins2021.NewResourceLoader() + textures := ctx.Textures() + if err := textureLoader.LoadFromFile(ctx.Resources(), "textures.txt", func(name, content string) error { + _, err := textures.CreateTexturePath(name, content, true) + return err + }); err != nil { + return err + } + + ctx.Overlays().AddOnTop(fpsOverlayName, &play.FPS{Align: ui.AlignRight}, false) + + a.intro = newIntroView(ctx) + a.Content = a.intro + + return nil +} + +func (a *app) Handle(ctx ui.Context, e ui.Event) bool { + switch e := e.(type) { + case *ui.DisplayMoveEvent: + location := e.Bounds.Min.ToInt() + a.settings.Window.Location = &location + case *ui.DisplayResizeEvent: + a.Arrange(ctx, e.Bounds, geom.ZeroPtF32, nil) + size := e.Bounds.Size().ToInt() + a.settings.Window.Size = &size + case *ui.KeyDownEvent: + switch e.Key { + case ui.KeyEscape: + ctx.Quit() + case ui.KeyF3: + ctx.Overlays().Toggle(ui.DefaultDebugOverlay) + ctx.Overlays().Toggle(fpsOverlayName) + } + } + return a.Proxy.Handle(ctx, e) +} + +func (a *app) Render(ctx ui.Context) { + ctx.Renderer().Clear(ctx.Style().Palette.Background) + a.Proxy.Render(ctx) +} + +type introView struct { + ui.StackPanel +} + +type Scene struct { + ui.ControlBase + + Sprites []Sprite +} + +func (s *Scene) Render(ctx ui.Context) { + renderer := ctx.Renderer() + for _, sprite := range s.Sprites { + renderer.DrawTexturePoint(sprite.Texture, sprite.Position) + } +} + +type Sprite struct { + Position geom.PointF32 + Texture ui.Texture +} + +func newSpriteImage(ctx ui.Context, im image.Image) Sprite { + texture, err := ctx.Textures().CreateTextureGo("cube_1", im, false) + if err != nil { + panic("couldn't create texture") + } + return Sprite{geom.ZeroPtF32, texture} +} + +func (s Sprite) Destroy() { s.Texture.Destroy() } + +func newIntroView(ctx ui.Context) *introView { + view := &introView{} + + level := tins2021.NewRandomLevel() + + view.Children = []ui.Control{ + label("QBITTER", "title"), + paragraph("Welcome at Qbitter!\n"+ + "ABCDEFGHIJKLMNOPQRSTUVWXYZ, abcdefghijklmnopqrstuvwxyz\n"+ + "", + "default"), + newLevelControl(ctx, level), + } + return view +} diff --git a/cmd/tins2021/extract.go b/cmd/tins2021/extract.go new file mode 100644 index 0000000..66dc907 --- /dev/null +++ b/cmd/tins2021/extract.go @@ -0,0 +1,38 @@ +package main + +import ( + "embed" + "io" + "io/fs" + "os" + "path/filepath" +) + +func copyFile(path string, file fs.File) error { + dir := filepath.Dir(path) + os.MkdirAll(dir, 0777) + dst, err := os.Create(path) + if err != nil { + return err + } + defer dst.Close() + _, err = io.Copy(dst, file) + return err +} + +func copyBoxToDisk(resources embed.FS) error { + return fs.WalkDir(resources, "", func(path string, entry fs.DirEntry, err error) error { + if err != nil { + return err + } + if entry.IsDir() { + return nil + } + src, err := resources.Open(path) + if err != nil { + return err + } + defer src.Close() + return copyFile(filepath.Join(`resources`, path), src) + }) +} diff --git a/cmd/tins2021/levelcontrol.go b/cmd/tins2021/levelcontrol.go new file mode 100644 index 0000000..32e3a9b --- /dev/null +++ b/cmd/tins2021/levelcontrol.go @@ -0,0 +1,86 @@ +package main + +import ( + "opslag.de/schobers/geom" + "opslag.de/schobers/tins2021" + "opslag.de/schobers/zntg" + "opslag.de/schobers/zntg/ui" +) + +type levelControl struct { + ui.ControlBase + + Scale float32 + Level *tins2021.Level +} + +func newLevelControl(ctx ui.Context, level *tins2021.Level) *levelControl { + renderer := &levelControl{Level: level, Scale: .3} + ctx.Textures().CreateTextureGo("cube1", tins2021.GenerateCube(tins2021.Orange), true) + ctx.Textures().CreateTextureGo("cube1_inversed", tins2021.GenerateHole(tins2021.Orange), true) + return renderer +} + +func IsModifierPressed(modifiers ui.KeyModifier, pressed ui.KeyModifier) bool { + return modifiers&pressed == pressed +} + +func (r levelControl) Handle(ctx ui.Context, e ui.Event) bool { + switch e := e.(type) { + case *ui.KeyDownEvent: + switch e.Key { + case ui.KeyW: + r.Level.MovePlayer(tins2021.DirectionUpLeft) + case ui.KeyD: + r.Level.MovePlayer(tins2021.DirectionUpRight) + case ui.KeyS: + r.Level.MovePlayer(tins2021.DirectionDownRight) + case ui.KeyA: + r.Level.MovePlayer(tins2021.DirectionDownLeft) + } + } + return false +} + +func (r levelControl) Render(ctx ui.Context) { + const twelfth = (1. / 6) * geom.Pi + renderer := ctx.Renderer() + + size := geom.Floor32(256. * r.Scale) + scale := size / 256 + + centerTopSquare := geom.PtF32(.5, .5*geom.Sin32(twelfth)) + delta := geom.PtF32(geom.Cos32(twelfth), .5+centerTopSquare.Y).Mul(size) + centerTopSquare = centerTopSquare.Mul(size) + + delta.X = geom.Round32(delta.X) + delta.Y = geom.Round32(delta.Y) + toScreen := func(p geom.Point) geom.PointF32 { + if p.Y%2 == 0 { + return p.ToF32().Mul2D(delta.XY()).Add2D(.5*delta.X, 0) + } + return p.ToF32().Mul2D(delta.XY()) + } + cube := ctx.Textures().ScaledByName("cube1", scale) + inversed := ctx.Textures().ScaledByName("cube1_inversed", scale) + player := ctx.Textures().ScaledByName("dwarf", scale) + + for pos, tile := range r.Level.Tiles { + if tile.Inversed { + renderer.DrawTexturePoint(inversed, toScreen(pos)) + } else { + renderer.DrawTexturePoint(cube, toScreen(pos)) + } + } + playerPosition := toScreen(r.Level.Player).Sub(geom.Pt(player.Width()/2, player.Height()).ToF32()) + if r.Level.Tiles[r.Level.Player].Inversed { + centerBottomSquare := geom.PtF32(centerTopSquare.X, size-centerTopSquare.Y) + renderer.DrawTexturePointOptions(player, playerPosition.Add(centerBottomSquare), ui.DrawOptions{ + Tint: zntg.MustHexColor(tins2021.Blue), + }) + } else { + renderer.DrawTexturePointOptions(player, playerPosition.Add(centerTopSquare), ui.DrawOptions{ + Tint: zntg.MustHexColor(tins2021.Lighten(tins2021.Blue, 0.1)), + }) + } +} diff --git a/cmd/tins2021/resources/fonts/FiraMono-OFL.txt b/cmd/tins2021/resources/fonts/FiraMono-OFL.txt new file mode 100644 index 0000000..beaf848 --- /dev/null +++ b/cmd/tins2021/resources/fonts/FiraMono-OFL.txt @@ -0,0 +1,93 @@ +Copyright (c) 2012-2013, The Mozilla Corporation and Telefonica S.A. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/cmd/tins2021/resources/fonts/FiraMono-Regular.ttf b/cmd/tins2021/resources/fonts/FiraMono-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3910f17e894307cfb06b09d4565161c5c6f8692f GIT binary patch literal 169464 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

K1S_p?R{@4vC^H!8_Ilm_aeHzh*qso5{@ytM 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 STFPvmPucvVNPW=_&ixnL;<2It literal 0 HcmV?d00001 diff --git a/cmd/tins2021/resources/fonts/escher.ttf b/cmd/tins2021/resources/fonts/escher.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1432e5588bd7fd775389f1889212fc5de0e37045 GIT binary patch literal 21036 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 R>L9&1|M);(2#3D5{THr4vbX>M literal 0 HcmV?d00001 diff --git a/cmd/tins2021/resources/images/dwarf.png b/cmd/tins2021/resources/images/dwarf.png new file mode 100644 index 0000000000000000000000000000000000000000..c1cbe75ff9e3c2aa192e9d217aeb27de788cc979 GIT binary patch literal 20341 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 cN}}OZ(gX;0RR9107*qoM6N<$g61kWPyhe` literal 0 HcmV?d00001 diff --git a/cmd/tins2021/resources/textures.txt b/cmd/tins2021/resources/textures.txt new file mode 100644 index 0000000..0dcd41e --- /dev/null +++ b/cmd/tins2021/resources/textures.txt @@ -0,0 +1 @@ +dwarf: images/dwarf.png \ No newline at end of file diff --git a/cmd/tins2021/tins2021.go b/cmd/tins2021/tins2021.go new file mode 100644 index 0000000..a9784bc --- /dev/null +++ b/cmd/tins2021/tins2021.go @@ -0,0 +1,95 @@ +package main + +import ( + "embed" + "flag" + "image/color" + "log" + + "opslag.de/schobers/geom" + "opslag.de/schobers/tins2021" + "opslag.de/schobers/zntg" + "opslag.de/schobers/zntg/addons/embedres" + "opslag.de/schobers/zntg/ui" +) + +//go:embed resources/* +var resources embed.FS + +func main() { + err := run() + if err != nil { + log.Fatal(err) + } +} + +func openResources() ui.Resources { + embedded := embedres.New(resources) + return ui.NewFallbackResources(ui.NewPathResources(nil, `resources`), embedded) +} + +func run() error { + var extract bool + flag.BoolVar(&extract, "extract-resources", false, "extracts all resources to the current working directory") + flag.Parse() + + if extract { + return copyBoxToDisk(resources) + } + res := openResources() + + ptPtr := func(x, y int) *geom.Point { + p := geom.Pt(x, y) + return &p + } + + settings := &tins2021.Settings{} + err := settings.Init() + if err != nil { + return err + } + defer settings.Store() + + var location *geom.PointF32 + if settings.Window.Location != nil { + location = &geom.PointF32{X: float32(settings.Window.Location.X), Y: float32(settings.Window.Location.Y)} + } + if settings.Window.Size == nil { + settings.Window.Size = ptPtr(800, 600) + } + if settings.Window.VSync == nil { + vsync := true + settings.Window.VSync = &vsync + } + renderer, err := ui.NewRenderer("Qbitter - TINS 2021", settings.Window.Size.X, settings.Window.Size.Y, ui.NewRendererOptions{ + Location: location, + Resizable: true, + VSync: *settings.Window.VSync, + }) + if err != nil { + return err + } + defer renderer.Destroy() + renderer.SetResourceProvider(res) + + app := &app{ + settings: settings, + } + style := ui.DefaultStyle() + style.Palette = &ui.Palette{ + Background: zntg.MustHexColor(`#494949`), + Disabled: zntg.MustHexColor(`#DEDEDE`), + Primary: zntg.MustHexColor(`#356DAD`), + PrimaryDark: zntg.MustHexColor(`#15569F`), + PrimaryLight: zntg.MustHexColor(`#ABCAED`), + Secondary: zntg.MustHexColor(`#4AC69A`), + SecondaryDark: zntg.MustHexColor(`#0AA36D`), + SecondaryLight: zntg.MustHexColor(`#A6EED4`), + Text: zntg.MustHexColor(`#EFEFEF`), + TextOnPrimary: color.White, + TextOnSecondary: color.White, + TextNegative: zntg.MustHexColor(`#F3590E`), + TextPositive: zntg.MustHexColor(`#65D80D`), + } + return ui.Run(renderer, style, app) +} diff --git a/cmd/tins2021/tins2021_allegro.go b/cmd/tins2021/tins2021_allegro.go new file mode 100644 index 0000000..41eb55c --- /dev/null +++ b/cmd/tins2021/tins2021_allegro.go @@ -0,0 +1,16 @@ +// +build allegro + +package main + +import ( + "log" + + _ "opslag.de/schobers/zntg/allg5ui" // rendering backend +) + +// #cgo windows,allegro LDFLAGS: -Wl,-subsystem,windows +import "C" + +func init() { + log.Println("Using Allegro5 rendering backend") +} diff --git a/cmd/tins2021/tins2021_sdl.go b/cmd/tins2021/tins2021_sdl.go new file mode 100644 index 0000000..6302110 --- /dev/null +++ b/cmd/tins2021/tins2021_sdl.go @@ -0,0 +1,13 @@ +// +build !allegro + +package main + +import ( + "log" + + _ "opslag.de/schobers/zntg/sdlui" // SDL rendering backend +) + +func init() { + log.Println("Using SDL rendering backend") +} diff --git a/cmd/tins2021/ui.go b/cmd/tins2021/ui.go new file mode 100644 index 0000000..ab9d1a3 --- /dev/null +++ b/cmd/tins2021/ui.go @@ -0,0 +1,26 @@ +package main + +import "opslag.de/schobers/zntg/ui" + +func label(text, font string) *ui.Label { + return ui.BuildLabel(text, func(l *ui.Label) { + l.Font.Name = font + }) +} + +type labelOptions struct { + TextAlignment ui.HorizontalAlignment +} + +func labelOpts(text, font string, opts labelOptions) *ui.Label { + return ui.BuildLabel(text, func(l *ui.Label) { + l.Font.Name = font + l.TextAlignment = opts.TextAlignment + }) +} + +func paragraph(text, font string) *ui.Paragraph { + return ui.BuildParagraph(text, func(l *ui.Paragraph) { + l.Font.Name = font + }) +} diff --git a/cube.go b/cube.go new file mode 100644 index 0000000..1a39b28 --- /dev/null +++ b/cube.go @@ -0,0 +1,110 @@ +package tins2021 + +import ( + "image" + "image/color" + + "github.com/llgcode/draw2d/draw2dimg" + "github.com/lucasb-eyer/go-colorful" + "opslag.de/schobers/geom" +) + +var Orange = `#FF9849` +var Blue = `#499BFF` + +func Clamp(f float64) float64 { + if f < 0 { + return 0 + } + if f > 1 { + return 1 + } + return f +} + +const hexagonRadius = 128 + +func drawToGC(gc *draw2dimg.GraphicContext, color color.Color, points ...geom.PointF) { + gc.SetStrokeColor(color) + gc.SetFillColor(color) + gc.MoveTo(points[0].XY()) + for _, p := range points[1:] { + gc.LineTo(p.XY()) + } + gc.Close() + gc.FillStroke() +} + +func Lighten(hexColor string, lighten float64) string { + color := mustHexColor(hexColor) + h, c, l := color.Hcl() + lightened := colorful.Hcl(h, c, Clamp(l+lighten)).Clamped() + return lightened.Hex() +} + +func GenerateCube(hexColor string) image.Image { + im := image.NewRGBA(image.Rect(0, 0, 2*hexagonRadius, 2*hexagonRadius)) + + normal := mustHexColor(hexColor) + h, c, l := normal.Hcl() + light := colorful.Hcl(h, c, Clamp(l+0.1)).Clamped() + dark := colorful.Hcl(h, c, Clamp(l-0.1)).Clamped() + + center, points := Hexagon(hexagonRadius) + + gc := draw2dimg.NewGraphicContext(im) + drawToGC(gc, dark, points[2], points[3], points[4], center) + drawToGC(gc, normal, points[4], points[5], points[0], center) + drawToGC(gc, light, points[0], points[1], points[2], center) + + return im +} + +func GenerateHexagon(hexColor string) image.Image { + im := image.NewRGBA(image.Rect(0, 0, 2*hexagonRadius, 2*hexagonRadius)) + color := mustHexColor(hexColor) + center, points := Hexagon(hexagonRadius) + + gc := draw2dimg.NewGraphicContext(im) + drawToGC(gc, color, points[2], points[3], points[4], center) + drawToGC(gc, color, points[4], points[5], points[0], center) + drawToGC(gc, color, points[0], points[1], points[2], center) + + return im +} + +func Hexagon(radius float64) (geom.PointF, []geom.PointF) { + points := make([]geom.PointF, 6) + center := geom.PtF(radius, radius) + for i := range points { + a := geom.Pi * (float64(i)/3 + (1. / 6)) + points[i] = center.Add(geom.PtF(radius*geom.Cos(a), -radius*geom.Sin(a))) + } + return center, points +} + +func GenerateHole(hexColor string) image.Image { + im := image.NewRGBA(image.Rect(0, 0, 2*hexagonRadius, 2*hexagonRadius)) + + normal := mustHexColor(hexColor) + h, c, l := normal.Hcl() + light := colorful.Hcl(h, c, Clamp(l+0.1)).Clamped() + dark := colorful.Hcl(h, c, Clamp(l-0.1)).Clamped() + + center, points := Hexagon(hexagonRadius) + + gc := draw2dimg.NewGraphicContext(im) + drawToGC(gc, dark, points[5], points[0], points[1], center) + drawToGC(gc, normal, points[1], points[2], points[3], center) + drawToGC(gc, light, points[3], points[4], points[5], center) + + return im +} + +func mustHexColor(s string) colorful.Color { + c, err := colorful.Hex(s) + if err != nil { + panic("invalid color") + } + return c +} diff --git a/io.go b/io.go new file mode 100644 index 0000000..98bea25 --- /dev/null +++ b/io.go @@ -0,0 +1,11 @@ +package tins2021 + +import ( + "opslag.de/schobers/zntg" +) + +const appName = "tins2021_qbitter" + +func UserDir() (string, error) { return zntg.UserDir(appName) } + +func UserFile(name string) (string, error) { return zntg.UserFile(appName, name) } diff --git a/level.go b/level.go new file mode 100644 index 0000000..b064d03 --- /dev/null +++ b/level.go @@ -0,0 +1,102 @@ +package tins2021 + +import ( + "math/rand" + + "opslag.de/schobers/geom" +) + +type Direction int + +const ( + DirectionDownRight Direction = iota + DirectionDownLeft + DirectionUpLeft + DirectionUpRight +) + +type Level struct { + Player geom.Point + Tiles map[geom.Point]*Tile +} + +func AdjacentPosition(pos geom.Point, dir Direction) geom.Point { + if pos.Y%2 == 0 { + switch dir { + case DirectionDownRight: + return geom.Pt(pos.X+1, pos.Y+1) + case DirectionDownLeft: + return geom.Pt(pos.X, pos.Y+1) + case DirectionUpLeft: + return geom.Pt(pos.X, pos.Y-1) + case DirectionUpRight: + return geom.Pt(pos.X+1, pos.Y-1) + default: + panic("invalid direction") + } + } + switch dir { + case DirectionDownRight: + return geom.Pt(pos.X, pos.Y+1) + case DirectionDownLeft: + return geom.Pt(pos.X-1, pos.Y+1) + case DirectionUpLeft: + return geom.Pt(pos.X-1, pos.Y-1) + case DirectionUpRight: + return geom.Pt(pos.X, pos.Y-1) + default: + panic("invalid direction") + } +} + +func (l Level) CanPlayerMove(dir Direction) (geom.Point, bool) { + towards := AdjacentPosition(l.Player, dir) + from := l.Tiles[l.Player] + to := l.Tiles[towards] + if to == nil { + return geom.ZeroPt, false + } + if dir == DirectionDownRight || dir == DirectionDownLeft { + if !from.Inversed && to.Inversed { + return geom.ZeroPt, false + } + } else { + if from.Inversed && !to.Inversed { + return geom.ZeroPt, false + } + } + return towards, true +} + +func (l *Level) MovePlayer(dir Direction) bool { + towards, allowed := l.CanPlayerMove(dir) + if !allowed { + return false + } + l.Tiles[l.Player].Invert() + l.Player = towards + return true +} + +func NewRandomLevel() *Level { + f := &Level{ + Tiles: map[geom.Point]*Tile{}, + Player: geom.Pt(1, 1), + } + for y := 1; y <= 10; y++ { + endX := 10 + if y%2 == 0 { + endX-- + } + for x := 1; x <= endX; x++ { + f.Tiles[geom.Pt(x, y)] = &Tile{Inversed: rand.Intn(6) == 0} + } + } + return f +} + +type Tile struct { + Inversed bool +} + +func (t *Tile) Invert() { t.Inversed = !t.Inversed } diff --git a/resourceloader.go b/resourceloader.go new file mode 100644 index 0000000..b7f010d --- /dev/null +++ b/resourceloader.go @@ -0,0 +1,53 @@ +package tins2021 + +import ( + "bufio" + "fmt" + "strings" + + "opslag.de/schobers/zntg/ui" +) + +type ResourceLoader struct { + Resources map[string]string +} + +func NewResourceLoader() *ResourceLoader { + return &ResourceLoader{} +} + +func (l *ResourceLoader) parseResourcesFile(res ui.Resources, name string) error { + f, err := res.OpenResource(name) + if err != nil { + return err + } + defer f.Close() + + l.Resources = map[string]string{} + scanner := bufio.NewScanner(f) + for scanner.Scan() { + definition := scanner.Text() + sep := strings.Index(definition, ":") + if sep == -1 { + continue + } + name := strings.TrimSpace(definition[:sep]) + content := strings.TrimSpace(definition[sep+1:]) + l.Resources[name] = content + } + return nil +} + +func (l *ResourceLoader) LoadFromFile(res ui.Resources, name string, action func(string, string) error) error { + err := l.parseResourcesFile(res, name) + if err != nil { + return err + } + for name, content := range l.Resources { + err = action(name, content) + if err != nil { + return fmt.Errorf("cannot load resource '%s'; error: %v", name, err) + } + } + return nil +} diff --git a/scripts/release.sh b/scripts/release.sh new file mode 100644 index 0000000..5e62ea1 --- /dev/null +++ b/scripts/release.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +if [ -z "$1" ] +then + version="0.0.0" +else + version="$1" +fi + +version_safe=${version//\./_} + +echo "Creating ${version} release" + +rm -rf build/linux* +rm -rf build/macosx* +rm -rf build/windows* + +mkdir -p build/release + +go generate ../cmd/tins2021 + +mkdir -p build/linux +go build -tags static -ldflags "-s -w" -o build/linux/qbitter ../cmd/tins2021 +cp ../README.md build/linux +cd build/linux +zip -9 -q ../release/qbitter_${version_safe}_linux_amd64.zip * +echo "Created Linux release: build/release/qbitter_${version_safe}_linux_amd64.zip" +cd ../.. + +mkdir -p build/linux-allegro +go build -tags static,allegro -ldflags "-s -w" -o build/linux-allegro/qbitter ../cmd/tins2021 +cp ../README.md build/linux-allegro +cd build/linux-allegro +zip -9 -q ../release/qbitter_allegro_${version_safe}_linux_amd64.zip * +echo "Created Linux (Allegro) release: build/release/qbitter_allegro_${version_safe}_linux_amd64.zip" +cd ../.. + +mkdir -p build/macosx +CGO_ENABLED=1 CC=o64-clang CXX=o64-clang++ GOOS=darwin GOARCH=amd64 go build -tags static -ldflags "-s -w" -o build/macosx/qbitter ../cmd/tins2021 +cp ../README.md build/macosx +cd build/macosx +zip -9 -q ../release/qbitter_${version_safe}_macosx_amd64.zip * +echo "Created Mac OS X release: build/release/qbitter_${version_safe}_macosx_amd64.zip" +cd ../.. + +mkdir -p build/windows +CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc GOOS=windows GOARCH=amd64 go build -tags static -ldflags "-s -w" -o build/windows/qbitter.exe ../cmd/tins2021 +cp ../README.md build/windows +cd build/windows +zip -9 -q ../release/qbitter_${version_safe}_windows_amd64.zip * +echo "Created Windows release: build/release/qbitter_${version_safe}_windows_amd64.zip" +cd ../.. + +mkdir -p build/windows-allegro +CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc GOOS=windows GOARCH=amd64 go build -tags static,allegro,mingw64_7_3 -ldflags "-s -w" -o build/windows-allegro/qbitter.exe ../cmd/tins2021 +cp ../README.md build/windows-allegro +cd build/windows-allegro +zip -9 -q ../release/qbitter_allegro_${version_safe}_windows_amd64.zip * +echo "Created Windows (Allegro) release: build/release/qbitter_allegro_${version_safe}_windows_amd64.zip" +cd ../.. diff --git a/settings.go b/settings.go new file mode 100644 index 0000000..c0c6faf --- /dev/null +++ b/settings.go @@ -0,0 +1,41 @@ +package tins2021 + +import ( + "os" + + "opslag.de/schobers/geom" + "opslag.de/schobers/zntg" +) + +type Settings struct { + Window WindowSettings +} + +func SettingsPath() (string, error) { + return UserFile("settings.json") +} + +func (s *Settings) Init() error { + path, err := SettingsPath() + if err != nil { + return err + } + if _, err := os.Stat(path); os.IsNotExist(err) { + return nil + } + return zntg.DecodeJSON(path, s) +} + +func (s *Settings) Store() error { + path, err := SettingsPath() + if err != nil { + return err + } + return zntg.EncodeJSON(path, s) +} + +type WindowSettings struct { + Location *geom.Point + Size *geom.Point + VSync *bool +}