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 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.