stratadox/ascii-renderer

此包最新版本(v0.1)没有可用的许可信息。

ASCII艺术渲染引擎

v0.1 2021-12-15 23:42 UTC

This package is auto-updated.

Last update: 2024-09-16 05:43:23 UTC


README

一个用于ASCII艺术的微型渲染引擎。

这是什么

Ascii Renderer旨在通过加载部分艺术品并将它们组合成(可能动画的)结果来简化ASCII艺术项目。

它能做什么

该模块可以将自定义文件格式加载到带有蒙版帧的动画中。

通过包含对其他潜在动画的引用,可以使用类似骨骼系统。

如何使用它?

加载文件

use Stratadox\AsciiRenderer\FileLoader;
use Stratadox\AsciiRenderer\ImageFactory;
use Stratadox\AsciiRenderer\MaskFactory;

$loader = new FileLoader(new MaskFactory(), new ImageFactory());
$animation = $loader->load('file/name.ext');

组合动画

use Stratadox\AsciiRenderer\AnimationCombiner;
use Stratadox\AsciiRenderer\Combiner;
use Stratadox\AsciiRenderer\FileLoader;
use Stratadox\AsciiRenderer\ImageFactory;
use Stratadox\AsciiRenderer\MaskFactory;

$loader = new FileLoader(new MaskFactory(), new ImageFactory());
$combiner = new AnimationCombiner(new Combiner());

$animation = $combiner->combine(
    [
        'item2' => $this->loader->load('/Asset/item/kite-shield-back.txt'),
        'body' => $this->loader->load('/Asset/body/leather-jacket-walk.txt'),
        'head' => $this->loader->load('/Asset/head/default.txt'),
        'headgear' => $this->loader->load('/Asset/headgear/cap.txt'),
        'item1' => $this->loader->load('/Asset/item/axe.txt'),
    ],
    'body'
);

assert(8 === $animation->length())
assert((string) $animation->frame(0)) === <<<'EOT'
  ____       
 /   _}      
 \__/*}  ./\ 
 /~^~\--<)+))
 |(  V___|\/ 
 \\_____(| ) 
 /~~~\   |/  
 (   \   o   
  \\  ) /    
  ) \ |/     
 / /| |      
[__b[__b     
EOT
);

文件看起来像什么?

例如,上述人物的帽子

mask:
width: 6
height: 3
origin-x: 2
origin-y: 2

mask-frames:
1
 ....
######
####

frames:
1
 ____
/   _}
\__/

他们的斧头

mask:
origin-x: 1
origin-y: 3
width: 5
height: 6

mask-frames:
1
 .##
#####
 ###
 #
 #
 #

frames:
1
 ./\
<)+))
 |\/
 |
 |
 o

更多示例,请参阅测试资源