GithubHelp home page GithubHelp logo

kelsey-sorrels / zaffre Goto Github PK

View Code? Open in Web Editor NEW
101.0 4.0 5.0 1.1 MB

A fast clojure console library

License: MIT License

Clojure 97.00% GLSL 2.91% Shell 0.09%
tilesets clojure terminal console lwjgl

zaffre's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

zaffre's Issues

make-terminal always throws an exception in 0.3.0

Here's the output from trying to run Zaffre's main directly (so I know it's not me).

PS E:\clojurestuff\zaffre> lein run
Reflection warning, zaffre/glterminal.clj:95:24 - reference to field getName can't be resolved.
Reflection warning, zaffre/glterminal.clj:95:40 - reference to field getSize can't be resolved.
Reflection warning, zaffre/glterminal.clj:124:46 - call to method canDisplay can't be resolved (target class is unknown).
Reflection warning, zaffre/glterminal.clj:175:7 - call to method setRenderingHint on java.awt.Graphics can't be resolved (no such method).
Reflection warning, zaffre/glterminal.clj:213:24 - reference to field getWidth can't be resolved.
Reflection warning, zaffre/glterminal.clj:214:24 - reference to field getHeight can't be resolved.
Reflection warning, zaffre/glterminal.clj:217:18 - reference to field getRaster can't be resolved.
Reflection warning, zaffre/glterminal.clj:218:18 - reference to field getDataBuffer can't be resolved.
Reflection warning, zaffre/glterminal.clj:220:18 - reference to field getData can't be resolved.
Reflection warning, zaffre/glterminal.clj:221:33 - call to static method alength on clojure.lang.RT can't be resolved (argument types: unknown).
Reflection warning, zaffre/glterminal.clj:271:15 - reference to field getWidth can't be resolved.
Reflection warning, zaffre/glterminal.clj:272:16 - reference to field getHeight can't be resolved.
Reflection warning, zaffre/glterminal.clj:309:7 - call to static method glTexImage2D on org.lwjgl.opengl.GL11 can't be resolved (argument types: int, long, int, unknown, unknown, long, int, int, unknown).
Reflection warning, zaffre/glterminal.clj:355:59 - call to static method aset on clojure.lang.RT can't be resolved (argument types: unknown, int, unknown).
Reflection warning, zaffre/glterminal.clj:361:61 - call to static method aset on clojure.lang.RT can't be resolved (argument types: unknown, int, unknown).
Reflection warning, zaffre/glterminal.clj:362:61 - call to static method aset on clojure.lang.RT can't be resolved (argument types: unknown, int, unknown).
Reflection warning, zaffre/glterminal.clj:446:7 - call to static method glBindAttribLocation on org.lwjgl.opengl.GL20 can't be resolved (argument types: int, java.lang.Object, java.lang.Object).
Reflection warning, zaffre/glterminal.clj:446:7 - call to static method glBindAttribLocation on org.lwjgl.opengl.GL20 can't be resolved (argument types: int, java.lang.Object, java.lang.Object).
Reflection warning, zaffre/glterminal.clj:486:7 - reference to field flip can't be resolved.
Reflection warning, zaffre/glterminal.clj:498:7 - reference to field flip can't be resolved.
Reflection warning, zaffre/glterminal.clj:633:11 - call to static method glTexImage2D on org.lwjgl.opengl.GL11 can't be resolved (argument types: int, long, int, java.lang.Object, java.lang.Object, long, int, int, unknown).
Reflection warning, zaffre/glterminal.clj:930:68 - call to static method glGetAttribLocation on org.lwjgl.opengl.GL20 can't be resolved (argument types: java.lang.Object, java.lang.String).
Reflection warning, zaffre/glterminal.clj:931:68 - call to static method glGetAttribLocation on org.lwjgl.opengl.GL20 can't be resolved (argument types: java.lang.Object, java.lang.String).
Reflection warning, zaffre/glterminal.clj:932:71 - call to static method glGetAttribLocation on org.lwjgl.opengl.GL20 can't be resolved (argument types: java.lang.Object, java.lang.String).
Reflection warning, zaffre/glterminal.clj:933:71 - call to static method glGetAttribLocation on org.lwjgl.opengl.GL20 can't be resolved (argument types: java.lang.Object, java.lang.String).
Reflection warning, zaffre/glterminal.clj:949:59 - call to static method glGetUniformLocation on org.lwjgl.opengl.GL20 can't be resolved (argument types: java.lang.Object, unknown).
Reflection warning, zaffre/glterminal.clj:962:59 - call to static method glGetUniformLocation on org.lwjgl.opengl.GL20 can't be resolved (argument types: java.lang.Object, unknown).
16-02-29 00:46:14 Max-Desktop INFO [zaffre.glterminal] - Loading font by name
16-02-29 00:46:14 Max-Desktop INFO [zaffre.glterminal] - Using font java.awt.Font[family=Consolas,name=Consolas,style=plain,size=18]
16-02-29 00:46:14 Max-Desktop INFO [zaffre.glterminal] - characters per line 204
16-02-29 00:46:14 Max-Desktop INFO [zaffre.glterminal] - characters 4650 cwidth 2048 cheight 512
16-02-29 00:46:14 Max-Desktop INFO [zaffre.glterminal] - glyph image width 2048 height 512
16-02-29 00:46:14 Max-Desktop INFO [zaffre.glterminal] - arranging character with zaffre.glterminal$characters_per_line@1a1ccaaf per line
16-02-29 00:46:14 Max-Desktop INFO [zaffre.glterminal] - Created font texture. screen-width 800 screen-height 528
16-02-29 00:46:14 Max-Desktop INFO [zaffre.glterminal] - screen size 800 x 528
16-02-29 00:46:14 Max-Desktop INFO [zaffre.glterminal] - byte-buffer [Ljava.nio.ByteBuffer;@510a4cf4
16-02-29 00:46:14 Max-Desktop INFO [zaffre.glterminal] - Creating glyph array
16-02-29 00:46:14 Max-Desktop INFO [zaffre.glterminal] - creating buffers for glyph/fg/bg textures ( 128 x 32 )
ERROR: Linking Shaders:
Vertex shader(s) failed to link.
Vertex link error: INVALID_OPERATION.
ERROR: error(#272) Implicit version number 110 not supported by GL3 forward compatible context
ERROR: error(#273) 1 compilation errors.  No code generated


Exception in thread "main" java.lang.Exception: OpenGL Error(1282):GL_INVALID_OPERATION: glGenBuffers vertices-vbo-id - Invalid operation, compiling:(C:\Users\max\AppData\Local\Temp\form-init5499585173456089547.clj:1:106)
        at clojure.lang.Compiler.load(Compiler.java:7239)
        at clojure.lang.Compiler.loadFile(Compiler.java:7165)
        at clojure.main$load_script.invoke(main.clj:275)
        at clojure.main$init_opt.invoke(main.clj:280)
        at clojure.main$initialize.invoke(main.clj:308)
        at clojure.main$null_opt.invoke(main.clj:343)
        at clojure.main$main.doInvoke(main.clj:421)
        at clojure.lang.RestFn.invoke(RestFn.java:421)
        at clojure.lang.Var.invoke(Var.java:383)
        at clojure.lang.AFn.applyToHelper(AFn.java:156)
        at clojure.lang.Var.applyTo(Var.java:700)
        at clojure.main.main(main.java:37)
Caused by: java.lang.Exception: OpenGL Error(1282):GL_INVALID_OPERATION: glGenBuffers vertices-vbo-id - Invalid operation
        at zaffre.glterminal$except_gl_errors.invoke(glterminal.clj:266)
        at zaffre.glterminal$init_buffers.invoke(glterminal.clj:521)
        at zaffre.glterminal$make_terminal$fn__2943.invoke(glterminal.clj:939)
        at zaffre.glterminal$make_terminal.invoke(glterminal.clj:939)
        at zaffre.glterminal$handle_input_in_main.doInvoke(glterminal.clj:1104)
        at clojure.lang.RestFn.invoke(RestFn.java:397)
        at zaffre.glterminal$_main.doInvoke(glterminal.clj:1160)
        at clojure.lang.RestFn.invoke(RestFn.java:397)
        at clojure.lang.Var.invoke(Var.java:375)
        at user$eval2515.invoke(form-init5499585173456089547.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6782)
        at clojure.lang.Compiler.eval(Compiler.java:6772)
        at clojure.lang.Compiler.load(Compiler.java:7227)
        ... 11 more

Then a blank window pops up and I have to do something to kill off the JVM.

It seems to be related to the recent shader fx change. In my project I originally hadn't set the fx-shader-name option, and setting it to retro.fs didn't help.

I'm on 64 bit Windows 10, Java 1.8. If you need any more information or there's any other way I can help debugging let me know.

Layer design

I'm interested in feedback on an interface for terminal layers. Layer order would be a required make-terminal param ex: (:layer-order [:text :ui :fx] ) going from bottommost to topmost layer.

I have two options prepared. One adds a requirement that characters include a :layer-id value. The other adds a layer-id parameter to put-chars!.

They look like this:

Option 1:

(put-chars! terminal [{:c \a :x 0 :y 0 :layer-id :ui}
                      {:c \a :x 1 :y 0 :layer-id :ui}
                      {:c \a :x 0 :y 0 :layer-id :base}
                      {:c \a :x 1 :y 0 :layer-id :base}])

With a helper macro

(with-layer :ui
  (put-chars! terminal [{:c \a :x 0 :y 0}
                        {:c \a :x 1 :y 0}]))
(with-layer :text
  (put-chars! terminal [{:c \a :x 1 :y 0}
                        {:c \a :x 1 :y 0}]))

Option 2:

(put-chars! terminal :ui [{:c \a :x 0 :y 0}
                          {:c \a :x 1 :y 0}])
(put-chars! terminal :text [{:c \a :x 0 :y 0}
                            {:c \a :x 1 :y 0}])

Or multiple layers

(put-chars! terminal :ui   [{:c \a :x 0 :y 0}
                            {:c \a :x 1 :y 0}])
                     :text [{:c \a :x 0 :y 0}
                            {:c \a :x 1 :y 0}])

Other changes

clear!, set-fg!, set-bg-!, set-fx-fg!, set-fx-bg!, and set-fx-char! will require the addition of a layer-id parameter.

Add
(clear! terminal layer-id)
(clear-fx! terminal layer-id)

Repurpose
(clear! terminal) to clear all layers
(clear-fx! terminal) to clear fx on all layers

example "fx" fails

Fails with error:

No matching ctor found for class zaffre.font.CP437Font

On this line:

(def font (CP437Font. "http://dwarffortresswiki.org/images/b/be/Pastiche_8x8.png" :green 2 false))

I tried using the more Clojury syntax for making an instance:

(def font (zfont/->CP437Font "http://dwarffortresswiki.org/images/b/be/Pastiche_8x8.png" :green 2 false))

but:

Wrong number of args (4) passed to: zaffre.font/eval27940/->CP437Font--27993

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.