ramen

package module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2022 License: Apache-2.0 Imports: 1 Imported by: 0

README

Documentation Go Report Card Hex.pm

ramen is a simple console emulator written in go that can be used to create various ascii / text (roguelike) games. It's based on the great ebiten library and inspired by libraries like libtcod.

Warning: This is still a early version so api and features are not fixed yet. Bugs will happen!


2022 Rework

ramen will see a rework this year and hopefully arrive in a more stable and thought out version. As a first update I finally bumped ebiten to v2 and the go version to 1.18.

Features

  • PNG Fonts with more than 256 chars possible
  • Fonts can contain chars and colored tiles
  • Create sub-consoles to organize rendering
  • Component based ui system
  • Inlined color definitions in strings
  • Pre-build components ready to use
    • TextBox
    • Button
  • REXPaint file parsing
  • Everything ebiten can do
    • Input: Mouse, Keyboard, Gamepads, Touches
    • Audio: MP3, Ogg/Vorbis, WAV, PCM
    • ...

Get Started

go get github.com/BigJk/ramen/...

Transformer

In ramen you change the content of the console by applying transformations to cells. Examples would be:

// set one cell at position 10,15 to a green @:
con.Transform(10, 15, t.CharByte('@'), t.Foreground(concolor.RGB(0, 255, 0)))

// change the background of the area 0,0 with the width and height of 25,25:
con.TransformArea(0, 0, 25, 25, t.Background(concolor.RGBA(255, 255, 255, 20)))

// change the background of all the cells:
con.TransformAll(t.Background(concolor.RGBA(255, 255, 255, 10)))

All transformer functions accept objects that implement the t.Transformer interface, so it's also possible to create transformers with custom behaviour by implementing that interface.

Inlined Color Definitions

There are also convenient string printing functions. The console.Print function supports parsing of inlined color definitions that can change the forground and background color of parts of the string.

[[f:#ff0000]]red foreground\n[[f:#ffffff|b:#000000]]white foreground and black background\n[[b:#00ff00]]green background

Example

package main

import (
  "fmt"
  "github.com/BigJk/ramen/concolor"
  "github.com/BigJk/ramen/console"
  "github.com/BigJk/ramen/font"
  "github.com/BigJk/ramen/t"
  "github.com/hajimehoshi/ebiten/v2"
)

func main() {
  // create a 50x30 cells console with the title 'ramen example'
  con, err := console.New(50, 30, font.DefaultFont, "ramen example")
  if err != nil {
    panic(err)
  }

  // set a tick hook. This function will be executed
  // each tick (60 ticks per second by default) even
  // when the fps is lower than 60fps. This is a good
  // place for your game logic.
  //
  // The timeDelta parameter is the elapsed time in seconds
  // since the last tick.
  con.SetTickHook(func(timeElapsed float64) error {
    // your game logic
    return nil
  })

  // set a pre-render hook. This function will be executed
  // each frame before the drawing happens. This is a good
  // place to draw onto the console, because it only executes
  // if a draw is really about to happen.
  //
  // The timeDelta parameter is the elapsed time in seconds
  // since the last frame.
  con.SetPreRenderHook(func(screen *ebiten.Image, timeDelta float64) error {
    con.ClearAll() // clear console 
    con.TransformAll(t.Background(concolor.RGB(50, 50, 50))) // set the background
	
    con.Print(2, 2, "Hello!\nTEST\n Line 3", t.Foreground(concolor.RGB(0, 255, 0)), t.Background(concolor.RGB(255, 0, 0)))
    con.Print(2, 7, fmt.Sprintf("TPS: %0.2f\nFPS: %0.2f\nElapsed: %0.4f", ebiten.CurrentFPS(), ebiten.CurrentFPS(), timeDelta))
	
    return nil
  })

  // start the console with a scaling of 1
  con.Start(1)
}

Screenshots

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Cell

type Cell struct {
	Foreground concolor.Color
	Background concolor.Color

	Char int
}

Cell represents a cell in the console

Directories

Path Synopsis
Package concolor provides console color creation functions.
Package concolor provides console color creation functions.
Package console provides a emulated console view.
Package console provides a emulated console view.
examples
Package font provides functionality to load ascii fonts from png files.
Package font provides functionality to load ascii fonts from png files.
t
Package t provides functionality to transform (change) cells in the console.
Package t provides functionality to transform (change) cells in the console.
Package xp provides REXPaint (.xp) file parsing.
Package xp provides REXPaint (.xp) file parsing.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL