mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 12:21:52 +09:00
Some space saving, terrain reads GZip directly
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -1,3 +1,4 @@
|
||||
*.psd filter=lfs diff=lfs merge=lfs -text
|
||||
*.ogg filter=lfs diff=lfs merge=lfs -text
|
||||
*.tga filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
\relax
|
||||
\providecommand\hyper@newdestlabel[2]{}
|
||||
\providecommand*{\memsetcounter}[2]{}
|
||||
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
|
||||
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
|
||||
\global\let\oldcontentsline\contentsline
|
||||
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
|
||||
\global\let\oldnewlabel\newlabel
|
||||
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
|
||||
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
|
||||
\AtEndDocument{\ifx\hyper@anchor\@undefined
|
||||
\let\contentsline\oldcontentsline
|
||||
\let\newlabel\oldnewlabel
|
||||
\fi}
|
||||
\fi}
|
||||
\global\let\hyper@last\relax
|
||||
\gdef\HyperFirstAtBeginDocument#1{#1}
|
||||
\providecommand\HyField@AuxAddToFields[1]{}
|
||||
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{4}{section.0.1}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Luggage preparation}{4}{subsection.0.1.1}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2}Moving around}{5}{section.0.2}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Your first toddling}{5}{subsection.0.2.1}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{ISO/\penalty \exhyphenpenalty ANSI/\penalty \exhyphenpenalty JIS pedalboards}{5}{section*.1}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{Joypads}{6}{section*.2}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {3}World}{6}{section.0.3}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Geograghy}{7}{subsection.0.3.1}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Day and night}{7}{subsection.0.3.2}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Biome}{8}{subsection.0.3.3}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}Vegetation}{8}{subsection.0.3.4}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.5}Races and their civilisations}{8}{subsection.0.3.5}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.6}Common animals}{8}{subsection.0.3.6}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {4}World creation}{8}{section.0.4}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}World Size}{9}{subsection.0.4.1}}
|
||||
\memsetcounter{lastsheet}{9}
|
||||
\memsetcounter{lastpage}{9}
|
||||
@@ -1,13 +0,0 @@
|
||||
\BOOKMARK [1][-]{section.0.1}{\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n}{}% 1
|
||||
\BOOKMARK [2][-]{subsection.0.1.1}{\376\377\000L\000u\000g\000g\000a\000g\000e\000\040\000p\000r\000e\000p\000a\000r\000a\000t\000i\000o\000n}{section.0.1}% 2
|
||||
\BOOKMARK [1][-]{section.0.2}{\376\377\000M\000o\000v\000i\000n\000g\000\040\000a\000r\000o\000u\000n\000d}{}% 3
|
||||
\BOOKMARK [2][-]{subsection.0.2.1}{\376\377\000Y\000o\000u\000r\000\040\000f\000i\000r\000s\000t\000\040\000t\000o\000d\000d\000l\000i\000n\000g}{section.0.2}% 4
|
||||
\BOOKMARK [1][-]{section.0.3}{\376\377\000W\000o\000r\000l\000d}{}% 5
|
||||
\BOOKMARK [2][-]{subsection.0.3.1}{\376\377\000G\000e\000o\000g\000r\000a\000g\000h\000y}{section.0.3}% 6
|
||||
\BOOKMARK [2][-]{subsection.0.3.2}{\376\377\000D\000a\000y\000\040\000a\000n\000d\000\040\000n\000i\000g\000h\000t}{section.0.3}% 7
|
||||
\BOOKMARK [2][-]{subsection.0.3.3}{\376\377\000B\000i\000o\000m\000e}{section.0.3}% 8
|
||||
\BOOKMARK [2][-]{subsection.0.3.4}{\376\377\000V\000e\000g\000e\000t\000a\000t\000i\000o\000n}{section.0.3}% 9
|
||||
\BOOKMARK [2][-]{subsection.0.3.5}{\376\377\000R\000a\000c\000e\000s\000\040\000a\000n\000d\000\040\000t\000h\000e\000i\000r\000\040\000c\000i\000v\000i\000l\000i\000s\000a\000t\000i\000o\000n\000s}{section.0.3}% 10
|
||||
\BOOKMARK [2][-]{subsection.0.3.6}{\376\377\000C\000o\000m\000m\000o\000n\000\040\000a\000n\000i\000m\000a\000l\000s}{section.0.3}% 11
|
||||
\BOOKMARK [1][-]{section.0.4}{\376\377\000W\000o\000r\000l\000d\000\040\000c\000r\000e\000a\000t\000i\000o\000n}{}% 12
|
||||
\BOOKMARK [2][-]{subsection.0.4.1}{\376\377\000W\000o\000r\000l\000d\000\040\000S\000i\000z\000e}{section.0.4}% 13
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,15 +0,0 @@
|
||||
\contentsline {section}{\numberline {1}Introduction}{4}{section.0.1}
|
||||
\contentsline {subsection}{\numberline {1.1}Luggage preparation}{4}{subsection.0.1.1}
|
||||
\contentsline {section}{\numberline {2}Moving around}{5}{section.0.2}
|
||||
\contentsline {subsection}{\numberline {2.1}Your first toddling}{5}{subsection.0.2.1}
|
||||
\contentsline {subsubsection}{ISO/\penalty \exhyphenpenalty ANSI/\penalty \exhyphenpenalty JIS pedalboards}{5}{section*.1}
|
||||
\contentsline {subsubsection}{Joypads}{6}{section*.2}
|
||||
\contentsline {section}{\numberline {3}World}{6}{section.0.3}
|
||||
\contentsline {subsection}{\numberline {3.1}Geograghy}{7}{subsection.0.3.1}
|
||||
\contentsline {subsection}{\numberline {3.2}Day and night}{7}{subsection.0.3.2}
|
||||
\contentsline {subsection}{\numberline {3.3}Biome}{8}{subsection.0.3.3}
|
||||
\contentsline {subsection}{\numberline {3.4}Vegetation}{8}{subsection.0.3.4}
|
||||
\contentsline {subsection}{\numberline {3.5}Races and their civilisations}{8}{subsection.0.3.5}
|
||||
\contentsline {subsection}{\numberline {3.6}Common animals}{8}{subsection.0.3.6}
|
||||
\contentsline {section}{\numberline {4}World creation}{8}{section.0.4}
|
||||
\contentsline {subsection}{\numberline {4.1}World Size}{9}{subsection.0.4.1}
|
||||
@@ -1,33 +0,0 @@
|
||||
\relax
|
||||
\providecommand\hyper@newdestlabel[2]{}
|
||||
\providecommand*{\memsetcounter}[2]{}
|
||||
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
|
||||
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
|
||||
\global\let\oldcontentsline\contentsline
|
||||
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
|
||||
\global\let\oldnewlabel\newlabel
|
||||
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
|
||||
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
|
||||
\AtEndDocument{\ifx\hyper@anchor\@undefined
|
||||
\let\contentsline\oldcontentsline
|
||||
\let\newlabel\oldnewlabel
|
||||
\fi}
|
||||
\fi}
|
||||
\global\let\hyper@last\relax
|
||||
\gdef\HyperFirstAtBeginDocument#1{#1}
|
||||
\providecommand\HyField@AuxAddToFields[1]{}
|
||||
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{4}{section.0.1}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Luggage preparation}{4}{subsection.0.1.1}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2}Moving around}{5}{section.0.2}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Your first toddling}{5}{subsection.0.2.1}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {3}World}{5}{section.0.3}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Geograghy}{6}{subsection.0.3.1}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Day and night}{7}{subsection.0.3.2}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Biome}{7}{subsection.0.3.3}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}Vegetation}{8}{subsection.0.3.4}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.5}Races and their civilisations}{8}{subsection.0.3.5}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.6}Common animals}{8}{subsection.0.3.6}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {4}World creation}{8}{section.0.4}}
|
||||
\memsetcounter{lastsheet}{9}
|
||||
\memsetcounter{lastpage}{9}
|
||||
@@ -1,12 +0,0 @@
|
||||
\BOOKMARK [1][-]{section.0.1}{\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n}{}% 1
|
||||
\BOOKMARK [2][-]{subsection.0.1.1}{\376\377\000L\000u\000g\000g\000a\000g\000e\000\040\000p\000r\000e\000p\000a\000r\000a\000t\000i\000o\000n}{section.0.1}% 2
|
||||
\BOOKMARK [1][-]{section.0.2}{\376\377\000M\000o\000v\000i\000n\000g\000\040\000a\000r\000o\000u\000n\000d}{}% 3
|
||||
\BOOKMARK [2][-]{subsection.0.2.1}{\376\377\000Y\000o\000u\000r\000\040\000f\000i\000r\000s\000t\000\040\000t\000o\000d\000d\000l\000i\000n\000g}{section.0.2}% 4
|
||||
\BOOKMARK [1][-]{section.0.3}{\376\377\000W\000o\000r\000l\000d}{}% 5
|
||||
\BOOKMARK [2][-]{subsection.0.3.1}{\376\377\000G\000e\000o\000g\000r\000a\000g\000h\000y}{section.0.3}% 6
|
||||
\BOOKMARK [2][-]{subsection.0.3.2}{\376\377\000D\000a\000y\000\040\000a\000n\000d\000\040\000n\000i\000g\000h\000t}{section.0.3}% 7
|
||||
\BOOKMARK [2][-]{subsection.0.3.3}{\376\377\000B\000i\000o\000m\000e}{section.0.3}% 8
|
||||
\BOOKMARK [2][-]{subsection.0.3.4}{\376\377\000V\000e\000g\000e\000t\000a\000t\000i\000o\000n}{section.0.3}% 9
|
||||
\BOOKMARK [2][-]{subsection.0.3.5}{\376\377\000R\000a\000c\000e\000s\000\040\000a\000n\000d\000\040\000t\000h\000e\000i\000r\000\040\000c\000i\000v\000i\000l\000i\000s\000a\000t\000i\000o\000n\000s}{section.0.3}% 10
|
||||
\BOOKMARK [2][-]{subsection.0.3.6}{\376\377\000C\000o\000m\000m\000o\000n\000\040\000a\000n\000i\000m\000a\000l\000s}{section.0.3}% 11
|
||||
\BOOKMARK [1][-]{section.0.4}{\376\377\000W\000o\000r\000l\000d\000\040\000c\000r\000e\000a\000t\000i\000o\000n}{}% 12
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,110 +0,0 @@
|
||||
\documentclass[stock,9pt,nohan]{oblivoir}
|
||||
|
||||
\usepackage{fapapersize}
|
||||
\usefapapersize{3in,4.5in,.333in,*,.333in,.333in}
|
||||
\usepackage{gensymb}
|
||||
\usepackage{allrunes}
|
||||
\usepackage[T1]{fontenc}
|
||||
|
||||
\linespread{1.25}
|
||||
\frenchspacing
|
||||
|
||||
\usepackage[verbose=true]{microtype}
|
||||
|
||||
\renewcommand{\contentsname}{\arnfamily efnisifirlit}
|
||||
|
||||
\newcommand{\gamever}{\arnfamily alfa:f}
|
||||
|
||||
\newcommand{\Terrarumemph}{\arnfamily +iArþin+}
|
||||
|
||||
\newcommand{\boktitle}{\arnfamily ferþahantbukin:furiR \\ \Terrarumemph himR \vskip1ex \small nurAna:utkafa \normalsize}
|
||||
|
||||
\newcommand{\bokauthor}{\arnfamily \small fra\Terrarumemph hAfuntum}
|
||||
|
||||
\newcommand{\bokdate}{\arnfamily\small basa:uiþ:\gamever}
|
||||
|
||||
\title{\boktitle}
|
||||
\author{\bokauthor}
|
||||
\date{\bokdate}
|
||||
|
||||
\epigraphposition{center}
|
||||
\setlength{\epigraphrule}{0pt}
|
||||
\setlength{\epigraphwidth}{2in}
|
||||
\setlength{\beforeepigraphskip}{72pt}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
\newpage
|
||||
|
||||
\epigraph{
|
||||
Uilkumin! You are most likely an explorer, or a brave and courageous traveller who seeks uncharted planet in the universe, or an aspiring ruler-to-be who want rule your own world. We hope this little book to be an useful guide for whatever ambitious work you are up to.
|
||||
}{Writers}
|
||||
|
||||
\tableofcontents*
|
||||
|
||||
\newpage
|
||||
|
||||
\newpage
|
||||
|
||||
\section{Introduction}
|
||||
\emph{Terrarum} is a rogue-like world which things are happening on real-time basis as in real-time role-playing games.
|
||||
|
||||
\subsection{Luggage preparation}
|
||||
Trip to \emph{Terrarum} can be achieved with any proper wagon, which should be equipped with:
|
||||
\begin{itemize}
|
||||
\item 64-bit wagon engine
|
||||
\item \emph{Java Roving Environs 8} or higher
|
||||
\item A wagon engine with cylinder size of 2 GB, 4 GB or more is recommended
|
||||
\item Free luggage space of 4 GB or more
|
||||
\end{itemize}
|
||||
|
||||
\section{Moving around}
|
||||
The control is omnidirectional. In other words, \emph{not} cell-based.
|
||||
|
||||
\subsection{Your first toddling}
|
||||
Your default moving around uses ESDF (qwerty)\slash FRST (colemak)\slash .OEW (dvorak) pedals for default `WASD', in order for you to provide more modifier pedals that are pressed with your little finger and more comfort to pedalboards with \emph{Topre} actuators.\footnote{Writers of this book recommend you to use pedalboard with \emph{Cherry MX Red} actuators.}
|
||||
|
||||
\section{World}
|
||||
The world is composed with \emph{three-dimensional} blocks, which is the feature you should keep in mind during your trip. Each block is a metre-size and a metre-high, so an average-height man should occupy two tiles vertically, thus he is two-tile-high in the world.
|
||||
|
||||
Cliffs are treated as a stair, and you---as well as any living things in the world---can climb the tile as you would use a stair. Climbable cliff height is calculated as $$ floor( \frac{height_{you}}{height_{cliff}} ) $$
|
||||
|
||||
i.e. The man mentioned above can climb one-tile-high cliff as a stair.
|
||||
|
||||
\subsection{Geograghy}
|
||||
The world---the continent you play on---features mountains, valleys, rivers, lakes, ocean, caves, etc.
|
||||
|
||||
There are several continents on the planet, which are created by you. While there are multiple continents, however, your wagon cannot travel interplanetary.
|
||||
|
||||
Each time you create a continent, unless you specified a \emph{seed}\footnote{Refer to Section 4.}, will never be the same.
|
||||
|
||||
\subsection{Day and night}
|
||||
A day in \emph{Terrarum} world---the planet---is 72 000 seconds. A second in Earth would be equivalent to 60 (depends on the operational speed of your wagon) planetary seconds, which consists a planetary minute.
|
||||
|
||||
\subsection{Biome}
|
||||
Average temperature in meadows\slash forests\slash mountains are kept to pleasant 298 K\slash 25 \degree{}C\slash 77 \degree{}F. However, you might want to re-think before setting your feet on the snowy area, unless you are prepared well. While the Snow Queen % ---one of the devteam
|
||||
will not hinder any access to her territory, in the same time she will not be welcoming.
|
||||
|
||||
\subsection{Vegetation}
|
||||
|
||||
|
||||
\subsection{Races and their civilisations}
|
||||
|
||||
|
||||
\subsection{Common animals}
|
||||
|
||||
|
||||
\section{World creation}
|
||||
You can specify some parameters when you create a continent. Controllable parameters are:
|
||||
\begin{itemize}
|
||||
\item World size (affects distance between tribes)
|
||||
\item Ore amount (affects civilisation)
|
||||
\item Vegetation (more trees means more building materials)
|
||||
\item Seed (each randomly-created continent has its own \emph{seed} for landform. Leave it blank to randomise)
|
||||
\end{itemize}
|
||||
|
||||
You can name your continent while in creation, so try to come up with a good name!
|
||||
|
||||
\end{document}
|
||||
@@ -1,12 +0,0 @@
|
||||
\contentsline {section}{\numberline {1}Introduction}{4}{section.0.1}
|
||||
\contentsline {subsection}{\numberline {1.1}Luggage preparation}{4}{subsection.0.1.1}
|
||||
\contentsline {section}{\numberline {2}Moving around}{5}{section.0.2}
|
||||
\contentsline {subsection}{\numberline {2.1}Your first toddling}{5}{subsection.0.2.1}
|
||||
\contentsline {section}{\numberline {3}World}{5}{section.0.3}
|
||||
\contentsline {subsection}{\numberline {3.1}Geograghy}{6}{subsection.0.3.1}
|
||||
\contentsline {subsection}{\numberline {3.2}Day and night}{7}{subsection.0.3.2}
|
||||
\contentsline {subsection}{\numberline {3.3}Biome}{7}{subsection.0.3.3}
|
||||
\contentsline {subsection}{\numberline {3.4}Vegetation}{8}{subsection.0.3.4}
|
||||
\contentsline {subsection}{\numberline {3.5}Races and their civilisations}{8}{subsection.0.3.5}
|
||||
\contentsline {subsection}{\numberline {3.6}Common animals}{8}{subsection.0.3.6}
|
||||
\contentsline {section}{\numberline {4}World creation}{8}{section.0.4}
|
||||
BIN
assets/modules/basegame/tiles/terrain.tga.gz
LFS
Normal file
BIN
assets/modules/basegame/tiles/terrain.tga.gz
LFS
Normal file
Binary file not shown.
@@ -8,6 +8,7 @@ import com.jme3.math.FastMath
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.concurrent.ThreadParallel
|
||||
import net.torvald.terrarum.gameactors.roundInt
|
||||
import net.torvald.terrarum.gameworld.toUint
|
||||
import net.torvald.terrarum.mapdrawer.FeaturesDrawer.TILE_SIZE
|
||||
import net.torvald.terrarum.mapdrawer.LightmapRenderer.normaliseToColour
|
||||
import net.torvald.terrarum.mapdrawer.MapCamera.x
|
||||
@@ -17,7 +18,12 @@ import net.torvald.terrarum.mapdrawer.MapCamera.width
|
||||
import net.torvald.terrarum.realestate.LandUtil
|
||||
import org.lwjgl.opengl.GL11
|
||||
import org.newdawn.slick.*
|
||||
import org.newdawn.slick.opengl.*
|
||||
import java.io.FileInputStream
|
||||
import java.nio.ByteBuffer
|
||||
import java.util.*
|
||||
import java.util.zip.GZIPInputStream
|
||||
import java.util.zip.InflaterInputStream
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 16-01-19.
|
||||
@@ -27,10 +33,41 @@ object TilesDrawer {
|
||||
private val TILE_SIZE = FeaturesDrawer.TILE_SIZE
|
||||
private val TILE_SIZEF = FeaturesDrawer.TILE_SIZE.toFloat()
|
||||
|
||||
val tilesTerrain = SpriteSheet(ModMgr.getPath("basegame", "tiles/terrain.tga"), TILE_SIZE, TILE_SIZE)
|
||||
//val tilesTerrain = SpriteSheet(ModMgr.getPath("basegame", "tiles/terrain.tga"), TILE_SIZE, TILE_SIZE)
|
||||
// Slick has some weird quirks with PNG's transparency. I'm using 32-bit targa here.
|
||||
val tilesWire = SpriteSheet(ModMgr.getPath("basegame", "tiles/wire.tga"), TILE_SIZE, TILE_SIZE)
|
||||
|
||||
val tilesTerrain: SpriteSheet
|
||||
|
||||
init {
|
||||
// read DEFLATEd terrain.tar
|
||||
val tgaLoader = TGAImageData()
|
||||
val terrainImageData = tgaLoader.loadImage(
|
||||
GZIPInputStream(
|
||||
FileInputStream(ModMgr.getFile("basegame", "tiles/terrain.tga.gz")),
|
||||
8192
|
||||
), false, null)
|
||||
terrainImageData.rewind()
|
||||
/*val terrainTex = InternalTextureLoader.get().getTexture(object : ImageData {
|
||||
override fun getHeight(): Int = tgaLoader.height
|
||||
override fun getTexWidth(): Int = tgaLoader.texWidth
|
||||
override fun getDepth(): Int = tgaLoader.depth
|
||||
override fun getImageBufferData(): ByteBuffer = terrainImageData
|
||||
override fun getWidth(): Int = tgaLoader.width
|
||||
override fun getTexHeight(): Int = tgaLoader.texHeight
|
||||
}, Image.FILTER_NEAREST)*/
|
||||
|
||||
//// method 1
|
||||
//val terrainImage = Image(terrainTex)
|
||||
//tilesTerrain = SpriteSheet(terrainImage, TILE_SIZE, TILE_SIZE)
|
||||
|
||||
//// method 2
|
||||
val terrainImgBuffer = ImageBuffer(tgaLoader.width, tgaLoader.height)
|
||||
terrainImageData.get(terrainImgBuffer.rgba)
|
||||
tilesTerrain = SpriteSheet(terrainImgBuffer.image, TILE_SIZE, TILE_SIZE)
|
||||
}
|
||||
|
||||
|
||||
val breakAnimSteps = 10
|
||||
|
||||
val WALL = GameWorld.WALL
|
||||
|
||||
@@ -468,15 +468,19 @@ object VDUtil {
|
||||
}
|
||||
/**
|
||||
* Add subdirectory to the specified directory.
|
||||
*
|
||||
* @return EntryID of newly created directory
|
||||
*/
|
||||
fun addDir(disk: VirtualDisk, parentPath: VDPath, name: ByteArray) {
|
||||
fun addDir(disk: VirtualDisk, parentPath: VDPath, name: ByteArray): EntryID {
|
||||
val parentID = getFile(disk, parentPath)!!.entryID
|
||||
return addDir(disk, parentID, name)
|
||||
}
|
||||
/**
|
||||
* Add file to the specified directory.
|
||||
*
|
||||
* @return EntryID of newly created directory
|
||||
*/
|
||||
fun addDir(disk: VirtualDisk, directoryID: EntryID, name: ByteArray) {
|
||||
fun addDir(disk: VirtualDisk, parentDir: EntryID, name: ByteArray): EntryID {
|
||||
disk.checkReadOnly()
|
||||
disk.checkCapacity(EntryDirectory.NEW_ENTRY_SIZE)
|
||||
|
||||
@@ -484,16 +488,18 @@ object VDUtil {
|
||||
|
||||
try {
|
||||
// add record to the directory
|
||||
getAsDirectory(disk, directoryID).add(newID)
|
||||
getAsDirectory(disk, parentDir).add(newID)
|
||||
// add entry on the disk
|
||||
disk.entries[newID] = DiskEntry(
|
||||
newID,
|
||||
directoryID,
|
||||
parentDir,
|
||||
name,
|
||||
currentUnixtime,
|
||||
currentUnixtime,
|
||||
EntryDirectory()
|
||||
)
|
||||
|
||||
return newID
|
||||
}
|
||||
catch (e: KotlinNullPointerException) {
|
||||
throw FileNotFoundException("No such directory")
|
||||
@@ -519,6 +525,8 @@ object VDUtil {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
val entry = disk.entries[directoryID]
|
||||
if (entry != null && entry.contents is EntryDirectory) {
|
||||
entry.contents.forEach {
|
||||
@@ -543,20 +551,49 @@ object VDUtil {
|
||||
/**
|
||||
* Imports external file and returns corresponding DiskEntry.
|
||||
*/
|
||||
fun importFile(file: File, id: EntryID): DiskEntry {
|
||||
fun importFile(file: File, newID: EntryID, charset: Charset): DiskEntry {
|
||||
if (file.isDirectory) {
|
||||
throw IOException("The file is a directory")
|
||||
}
|
||||
|
||||
return DiskEntry(
|
||||
entryID = id,
|
||||
entryID = newID,
|
||||
parentEntryID = 0, // placeholder
|
||||
filename = file.name.toByteArray(),
|
||||
filename = file.name.toEntryName(DiskEntry.NAME_LENGTH, charset),
|
||||
creationDate = currentUnixtime,
|
||||
modificationDate = currentUnixtime,
|
||||
contents = EntryFile(file.readBytes64())
|
||||
)
|
||||
}
|
||||
|
||||
fun importDirRecurse(disk: VirtualDisk, dir: File, path: VDPath, charset: Charset) =
|
||||
importDirRecurse(disk, dir, getFile(disk, path)!!.entryID, charset)
|
||||
|
||||
fun importDirRecurse(disk: VirtualDisk, dir: File, superNode: EntryID, charset: Charset, newName: String? = null) {
|
||||
fun recurse1(file: File, node: EntryID) {
|
||||
// return conditions
|
||||
if (!file.isDirectory) {
|
||||
// if not a directory, add to node
|
||||
val importedFile = importFile(file, disk.generateUniqueID(), charset)
|
||||
addFile(disk, node, importedFile)
|
||||
return
|
||||
}
|
||||
// recurse
|
||||
else {
|
||||
// mkdir
|
||||
val newDir = addDir(disk, node, file.name.toEntryName(DiskEntry.NAME_LENGTH, charset))
|
||||
// for entries in this fileDirectory...
|
||||
file.listFiles().forEach { recurse1(it, newDir) }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// mkdir to superNode
|
||||
val newDir = addDir(disk, superNode, (newName ?: dir.name).toEntryName(DiskEntry.NAME_LENGTH, charset))
|
||||
// for entries in this fileDirectory...
|
||||
dir.listFiles().forEach { recurse1(it, newDir) }
|
||||
}
|
||||
|
||||
/**
|
||||
* Export file on the virtual disk into real disk.
|
||||
*/
|
||||
@@ -565,6 +602,33 @@ object VDUtil {
|
||||
outfile.writeBytes64(entryFile.bytes)
|
||||
}
|
||||
|
||||
fun exportDirRecurse(disk: VirtualDisk, parentDir: EntryID, outfile: File, charset: Charset) {
|
||||
fun recurse1(file: DiskEntry, dir: File) {
|
||||
// return conditions
|
||||
if (file.contents is EntryFile) {
|
||||
// if not a directory, write as file
|
||||
val newFile = File(dir, file.getFilenameString(charset))
|
||||
newFile.writeBytes64(file.contents.bytes)
|
||||
return
|
||||
}
|
||||
// recurse
|
||||
else if (file.contents is EntryDirectory) {
|
||||
// mkdir
|
||||
val newDir = File(dir, file.getFilenameString(charset))
|
||||
newDir.mkdir()
|
||||
// for entries in this fileDirectory...
|
||||
file.contents.forEach { recurse1(disk.entries[it]!!, newDir) }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// mkdir to superNode
|
||||
val newDir = File(outfile, disk.entries[parentDir]!!.getFilenameString(charset))
|
||||
newDir.mkdir()
|
||||
// for entries in this fileDirectory...
|
||||
getDirectoryEntries(disk, parentDir).forEach { recurse1(it, newDir) }
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for name collision in specified directory.
|
||||
*/
|
||||
@@ -765,7 +829,8 @@ object VDUtil {
|
||||
}
|
||||
}
|
||||
catch (e: Exception) {
|
||||
throw InternalError("Aw, snap! Here's what it says:\n$e")
|
||||
e.printStackTrace()
|
||||
throw InternalError("Aw, snap!")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -779,7 +844,8 @@ object VDUtil {
|
||||
}
|
||||
}
|
||||
catch (e: Exception) {
|
||||
throw InternalError("Aw, snap! Here's what it says:\n$e")
|
||||
e.printStackTrace()
|
||||
throw InternalError("Aw, snap!")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,7 +198,7 @@ class EntryDirectory(private val entries: ArrayList<EntryID> = ArrayList<EntryID
|
||||
}
|
||||
|
||||
fun remove(entryID: EntryID) {
|
||||
entries.removeAt(entryID)
|
||||
entries.remove(entryID)
|
||||
}
|
||||
|
||||
fun contains(entryID: EntryID) = entries.contains(entryID)
|
||||
|
||||
BIN
work_files/graphics/terrain/terrain.psd.gz
LFS
Normal file
BIN
work_files/graphics/terrain/terrain.psd.gz
LFS
Normal file
Binary file not shown.
@@ -1,193 +0,0 @@
|
||||
\relax
|
||||
\providecommand\hyper@newdestlabel[2]{}
|
||||
\providecommand*{\memsetcounter}[2]{}
|
||||
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
|
||||
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
|
||||
\global\let\oldcontentsline\contentsline
|
||||
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
|
||||
\global\let\oldnewlabel\newlabel
|
||||
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
|
||||
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
|
||||
\AtEndDocument{\ifx\hyper@anchor\@undefined
|
||||
\let\contentsline\oldcontentsline
|
||||
\let\newlabel\oldnewlabel
|
||||
\fi}
|
||||
\fi}
|
||||
\global\let\hyper@last\relax
|
||||
\gdef\HyperFirstAtBeginDocument#1{#1}
|
||||
\providecommand\HyField@AuxAddToFields[1]{}
|
||||
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||
\@writefile{toc}{\contentsline {part}{\partnumberline {I}APIs and Libraries}{5}{part.1}}
|
||||
\gdef \LT@i {\LT@entry
|
||||
{2}{155.06007pt}\LT@entry
|
||||
{1}{45.25516pt}\LT@entry
|
||||
{1}{134.68477pt}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {1}Filesystem}{6}{chapter.1}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.1}Functions}{6}{section.1.1}}
|
||||
\gdef \LT@ii {\LT@entry
|
||||
{2}{99.95pt}\LT@entry
|
||||
{1}{235.05pt}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.2}File Handler}{7}{section.1.2}}
|
||||
\gdef \LT@iii {\LT@entry
|
||||
{2}{154.76003pt}\LT@entry
|
||||
{1}{45.25516pt}\LT@entry
|
||||
{1}{134.98482pt}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {2}Hexutils}{9}{chapter.2}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2.1}Functions}{9}{section.2.1}}
|
||||
\gdef \LT@iv {\LT@entry
|
||||
{2}{138.81004pt}\LT@entry
|
||||
{1}{45.25516pt}\LT@entry
|
||||
{1}{150.9348pt}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {3}Input}{10}{chapter.3}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Functions}{10}{section.3.1}}
|
||||
\gdef \LT@v {\LT@entry
|
||||
{2}{126.83005pt}\LT@entry
|
||||
{1}{45.25516pt}\LT@entry
|
||||
{1}{162.9148pt}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {4}Keys}{11}{chapter.4}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {4.1}Functions}{11}{section.4.1}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {4.2}Accepted Key Names}{11}{section.4.2}}
|
||||
\gdef \LT@vi {\LT@entry
|
||||
{2}{104.04007pt}\LT@entry
|
||||
{2}{45.37001pt}\LT@entry
|
||||
{1}{185.58992pt}}
|
||||
\gdef \LT@vii {\LT@entry
|
||||
{2}{29.40001pt}\LT@entry
|
||||
{1}{138.0pt}\LT@entry
|
||||
{2}{29.6pt}\LT@entry
|
||||
{1}{138.0pt}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {5}OS}{13}{chapter.5}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {5.1}Functions}{13}{section.5.1}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {5.2}Date Format String}{13}{section.5.2}}
|
||||
\gdef \LT@viii {\LT@entry
|
||||
{2}{136.82pt}\LT@entry
|
||||
{1}{45.25516pt}\LT@entry
|
||||
{1}{152.92484pt}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {6}Security}{15}{chapter.6}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {6.1}Functions}{15}{section.6.1}}
|
||||
\gdef \LT@ix {\LT@entry
|
||||
{2}{150.79007pt}\LT@entry
|
||||
{1}{45.25516pt}\LT@entry
|
||||
{2}{138.95477pt}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {7}Shell}{16}{chapter.7}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {7.1}Functions}{16}{section.7.1}}
|
||||
\gdef \LT@x {\LT@entry
|
||||
{2}{165.05502pt}\LT@entry
|
||||
{1}{45.25516pt}\LT@entry
|
||||
{1}{124.68982pt}}
|
||||
\gdef \LT@xi {\LT@entry
|
||||
{2}{102.20006pt}\LT@entry
|
||||
{2}{45.37001pt}\LT@entry
|
||||
{2}{106.29002pt}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {8}Speaker}{17}{chapter.8}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {8.1}Functions}{17}{section.8.1}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {8.2}Constants}{17}{section.8.2}}
|
||||
\gdef \LT@xii {\LT@entry
|
||||
{2}{139.76003pt}\LT@entry
|
||||
{1}{45.25516pt}\LT@entry
|
||||
{1}{149.98482pt}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {9}Terminal}{18}{chapter.9}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {9.1}Functions}{18}{section.9.1}}
|
||||
\gdef \LT@xiii {\LT@entry
|
||||
{1}{22.26001pt}\LT@entry
|
||||
{1}{39.16003pt}\LT@entry
|
||||
{1}{22.26001pt}\LT@entry
|
||||
{1}{57.87003pt}\LT@entry
|
||||
{1}{22.26001pt}\LT@entry
|
||||
{1}{49.88002pt}\LT@entry
|
||||
{1}{22.26001pt}\LT@entry
|
||||
{1}{58.02002pt}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {9.2}Standard Colours}{20}{section.9.2}}
|
||||
\gdef \LT@xiv {\LT@entry
|
||||
{1}{28.3155pt}\LT@entry
|
||||
{1}{139.1845pt}\LT@entry
|
||||
{1}{28.3155pt}\LT@entry
|
||||
{1}{139.1845pt}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {9.3}Codepage}{21}{section.9.3}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {9.4}Accepted Control Sequences}{21}{section.9.4}}
|
||||
\gdef \LT@xv {\LT@entry
|
||||
{2}{134.13005pt}\LT@entry
|
||||
{1}{45.25516pt}\LT@entry
|
||||
{1}{155.61479pt}}
|
||||
\gdef \LT@xvi {\LT@entry
|
||||
{2}{135.95003pt}\LT@entry
|
||||
{2}{50.73004pt}\LT@entry
|
||||
{1}{148.31993pt}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {10}Lua Globals}{22}{chapter.10}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {10.1}Functions}{22}{section.10.1}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {10.2}Constants}{22}{section.10.2}}
|
||||
\gdef \LT@xvii {\LT@entry
|
||||
{1}{49.09001pt}\LT@entry
|
||||
{1}{108.52003pt}\LT@entry
|
||||
{1}{53.81001pt}\LT@entry
|
||||
{1}{122.25pt}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {10.3}Bell Codes}{24}{section.10.3}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {10.3.1}Changes from Generic Lua Environment}{24}{subsection.10.3.1}}
|
||||
\gdef \LT@xviii {\LT@entry
|
||||
{2}{110.12003pt}\LT@entry
|
||||
{1}{45.25516pt}\LT@entry
|
||||
{1}{179.62482pt}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {11}Machine}{25}{chapter.11}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {11.1}Functions}{25}{section.11.1}}
|
||||
\@writefile{toc}{\contentsline {part}{\partnumberline {II}Compatibility Layers---ComputerCraft}{26}{part.2}}
|
||||
\gdef \LT@xix {\LT@entry
|
||||
{2}{108.45001pt}\LT@entry
|
||||
{2}{125.76003pt}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {12}Bit}{27}{chapter.12}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {12.1}Functions}{27}{section.12.1}}
|
||||
\gdef \LT@xx {\LT@entry
|
||||
{1}{77.19011pt}\LT@entry
|
||||
{1}{68.63008pt}\LT@entry
|
||||
{1}{76.35007pt}\LT@entry
|
||||
{1}{76.36005pt}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {13}Colors}{28}{chapter.13}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {13.1}Constants}{28}{section.13.1}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {13.2}Functions}{28}{section.13.2}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {14}Term}{29}{chapter.14}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {15}Filesystem}{30}{chapter.15}}
|
||||
\@writefile{toc}{\contentsline {part}{\partnumberline {III}Compatibility Layers---OpenComputers}{31}{part.3}}
|
||||
\@writefile{toc}{\contentsline {part}{\partnumberline {IV}Peripherals}{32}{part.4}}
|
||||
\gdef \LT@xxi {\LT@entry
|
||||
{2}{71.78003pt}\LT@entry
|
||||
{1}{45.25516pt}\LT@entry
|
||||
{2}{153.90001pt}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {16}Line Printer}{33}{chapter.16}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {16.1}Functions}{33}{section.16.1}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {17}PSG}{34}{chapter.17}}
|
||||
\@writefile{toc}{\contentsline {part}{\partnumberline {V}References}{35}{part.5}}
|
||||
\memsetcounter{lastsheet}{37}
|
||||
\memsetcounter{lastpage}{37}
|
||||
@@ -1,46 +0,0 @@
|
||||
\BOOKMARK [-1][-]{part.1}{\376\377\000A\000P\000I\000s\000\040\000a\000n\000d\000\040\000L\000i\000b\000r\000a\000r\000i\000e\000s}{}% 1
|
||||
\BOOKMARK [0][-]{chapter.1}{\376\377\000F\000i\000l\000e\000s\000y\000s\000t\000e\000m}{part.1}% 2
|
||||
\BOOKMARK [1][-]{section.1.1}{\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000s}{chapter.1}% 3
|
||||
\BOOKMARK [1][-]{section.1.2}{\376\377\000F\000i\000l\000e\000\040\000H\000a\000n\000d\000l\000e\000r}{chapter.1}% 4
|
||||
\BOOKMARK [0][-]{chapter.2}{\376\377\000H\000e\000x\000u\000t\000i\000l\000s}{part.1}% 5
|
||||
\BOOKMARK [1][-]{section.2.1}{\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000s}{chapter.2}% 6
|
||||
\BOOKMARK [0][-]{chapter.3}{\376\377\000I\000n\000p\000u\000t}{part.1}% 7
|
||||
\BOOKMARK [1][-]{section.3.1}{\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000s}{chapter.3}% 8
|
||||
\BOOKMARK [0][-]{chapter.4}{\376\377\000K\000e\000y\000s}{part.1}% 9
|
||||
\BOOKMARK [1][-]{section.4.1}{\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000s}{chapter.4}% 10
|
||||
\BOOKMARK [1][-]{section.4.2}{\376\377\000A\000c\000c\000e\000p\000t\000e\000d\000\040\000K\000e\000y\000\040\000N\000a\000m\000e\000s}{chapter.4}% 11
|
||||
\BOOKMARK [0][-]{chapter.5}{\376\377\000O\000S}{part.1}% 12
|
||||
\BOOKMARK [1][-]{section.5.1}{\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000s}{chapter.5}% 13
|
||||
\BOOKMARK [1][-]{section.5.2}{\376\377\000D\000a\000t\000e\000\040\000F\000o\000r\000m\000a\000t\000\040\000S\000t\000r\000i\000n\000g}{chapter.5}% 14
|
||||
\BOOKMARK [0][-]{chapter.6}{\376\377\000S\000e\000c\000u\000r\000i\000t\000y}{part.1}% 15
|
||||
\BOOKMARK [1][-]{section.6.1}{\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000s}{chapter.6}% 16
|
||||
\BOOKMARK [0][-]{chapter.7}{\376\377\000S\000h\000e\000l\000l}{part.1}% 17
|
||||
\BOOKMARK [1][-]{section.7.1}{\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000s}{chapter.7}% 18
|
||||
\BOOKMARK [0][-]{chapter.8}{\376\377\000S\000p\000e\000a\000k\000e\000r}{part.1}% 19
|
||||
\BOOKMARK [1][-]{section.8.1}{\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000s}{chapter.8}% 20
|
||||
\BOOKMARK [1][-]{section.8.2}{\376\377\000C\000o\000n\000s\000t\000a\000n\000t\000s}{chapter.8}% 21
|
||||
\BOOKMARK [0][-]{chapter.9}{\376\377\000T\000e\000r\000m\000i\000n\000a\000l}{part.1}% 22
|
||||
\BOOKMARK [1][-]{section.9.1}{\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000s}{chapter.9}% 23
|
||||
\BOOKMARK [1][-]{section.9.2}{\376\377\000S\000t\000a\000n\000d\000a\000r\000d\000\040\000C\000o\000l\000o\000u\000r\000s}{chapter.9}% 24
|
||||
\BOOKMARK [1][-]{section.9.3}{\376\377\000C\000o\000d\000e\000p\000a\000g\000e}{chapter.9}% 25
|
||||
\BOOKMARK [1][-]{section.9.4}{\376\377\000A\000c\000c\000e\000p\000t\000e\000d\000\040\000C\000o\000n\000t\000r\000o\000l\000\040\000S\000e\000q\000u\000e\000n\000c\000e\000s}{chapter.9}% 26
|
||||
\BOOKMARK [0][-]{chapter.10}{\376\377\000L\000u\000a\000\040\000G\000l\000o\000b\000a\000l\000s}{part.1}% 27
|
||||
\BOOKMARK [1][-]{section.10.1}{\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000s}{chapter.10}% 28
|
||||
\BOOKMARK [1][-]{section.10.2}{\376\377\000C\000o\000n\000s\000t\000a\000n\000t\000s}{chapter.10}% 29
|
||||
\BOOKMARK [1][-]{section.10.3}{\376\377\000B\000e\000l\000l\000\040\000C\000o\000d\000e\000s}{chapter.10}% 30
|
||||
\BOOKMARK [0][-]{chapter.11}{\376\377\000M\000a\000c\000h\000i\000n\000e}{part.1}% 31
|
||||
\BOOKMARK [1][-]{section.11.1}{\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000s}{chapter.11}% 32
|
||||
\BOOKMARK [-1][-]{part.2}{\376\377\000C\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000y\000\040\000L\000a\000y\000e\000r\000s\040\024\000C\000o\000m\000p\000u\000t\000e\000r\000C\000r\000a\000f\000t}{}% 33
|
||||
\BOOKMARK [0][-]{chapter.12}{\376\377\000B\000i\000t}{part.2}% 34
|
||||
\BOOKMARK [1][-]{section.12.1}{\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000s}{chapter.12}% 35
|
||||
\BOOKMARK [0][-]{chapter.13}{\376\377\000C\000o\000l\000o\000r\000s}{part.2}% 36
|
||||
\BOOKMARK [1][-]{section.13.1}{\376\377\000C\000o\000n\000s\000t\000a\000n\000t\000s}{chapter.13}% 37
|
||||
\BOOKMARK [1][-]{section.13.2}{\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000s}{chapter.13}% 38
|
||||
\BOOKMARK [0][-]{chapter.14}{\376\377\000T\000e\000r\000m}{part.2}% 39
|
||||
\BOOKMARK [0][-]{chapter.15}{\376\377\000F\000i\000l\000e\000s\000y\000s\000t\000e\000m}{part.2}% 40
|
||||
\BOOKMARK [-1][-]{part.3}{\376\377\000C\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000y\000\040\000L\000a\000y\000e\000r\000s\040\024\000O\000p\000e\000n\000C\000o\000m\000p\000u\000t\000e\000r\000s}{}% 41
|
||||
\BOOKMARK [-1][-]{part.4}{\376\377\000P\000e\000r\000i\000p\000h\000e\000r\000a\000l\000s}{}% 42
|
||||
\BOOKMARK [0][-]{chapter.16}{\376\377\000L\000i\000n\000e\000\040\000P\000r\000i\000n\000t\000e\000r}{part.4}% 43
|
||||
\BOOKMARK [1][-]{section.16.1}{\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000s}{chapter.16}% 44
|
||||
\BOOKMARK [0][-]{chapter.17}{\376\377\000P\000S\000G}{part.4}% 45
|
||||
\BOOKMARK [-1][-]{part.5}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 46
|
||||
Binary file not shown.
@@ -1,47 +0,0 @@
|
||||
\contentsline {part}{\partnumberline {I}APIs and Libraries}{5}{part.1}
|
||||
\contentsline {chapter}{\chapternumberline {1}Filesystem}{6}{chapter.1}
|
||||
\contentsline {section}{\numberline {1.1}Functions}{6}{section.1.1}
|
||||
\contentsline {section}{\numberline {1.2}File Handler}{7}{section.1.2}
|
||||
\contentsline {chapter}{\chapternumberline {2}Hexutils}{9}{chapter.2}
|
||||
\contentsline {section}{\numberline {2.1}Functions}{9}{section.2.1}
|
||||
\contentsline {chapter}{\chapternumberline {3}Input}{10}{chapter.3}
|
||||
\contentsline {section}{\numberline {3.1}Functions}{10}{section.3.1}
|
||||
\contentsline {chapter}{\chapternumberline {4}Keys}{11}{chapter.4}
|
||||
\contentsline {section}{\numberline {4.1}Functions}{11}{section.4.1}
|
||||
\contentsline {section}{\numberline {4.2}Accepted Key Names}{11}{section.4.2}
|
||||
\contentsline {chapter}{\chapternumberline {5}OS}{13}{chapter.5}
|
||||
\contentsline {section}{\numberline {5.1}Functions}{13}{section.5.1}
|
||||
\contentsline {section}{\numberline {5.2}Date Format String}{13}{section.5.2}
|
||||
\contentsline {chapter}{\chapternumberline {6}Security}{15}{chapter.6}
|
||||
\contentsline {section}{\numberline {6.1}Functions}{15}{section.6.1}
|
||||
\contentsline {chapter}{\chapternumberline {7}Shell}{16}{chapter.7}
|
||||
\contentsline {section}{\numberline {7.1}Functions}{16}{section.7.1}
|
||||
\contentsline {chapter}{\chapternumberline {8}Speaker}{17}{chapter.8}
|
||||
\contentsline {section}{\numberline {8.1}Functions}{17}{section.8.1}
|
||||
\contentsline {section}{\numberline {8.2}Constants}{17}{section.8.2}
|
||||
\contentsline {chapter}{\chapternumberline {9}Terminal}{18}{chapter.9}
|
||||
\contentsline {section}{\numberline {9.1}Functions}{18}{section.9.1}
|
||||
\contentsline {section}{\numberline {9.2}Standard Colours}{20}{section.9.2}
|
||||
\contentsline {section}{\numberline {9.3}Codepage}{21}{section.9.3}
|
||||
\contentsline {section}{\numberline {9.4}Accepted Control Sequences}{21}{section.9.4}
|
||||
\contentsline {chapter}{\chapternumberline {10}Lua Globals}{22}{chapter.10}
|
||||
\contentsline {section}{\numberline {10.1}Functions}{22}{section.10.1}
|
||||
\contentsline {section}{\numberline {10.2}Constants}{22}{section.10.2}
|
||||
\contentsline {section}{\numberline {10.3}Bell Codes}{24}{section.10.3}
|
||||
\contentsline {subsection}{\numberline {10.3.1}Changes from Generic Lua Environment}{24}{subsection.10.3.1}
|
||||
\contentsline {chapter}{\chapternumberline {11}Machine}{25}{chapter.11}
|
||||
\contentsline {section}{\numberline {11.1}Functions}{25}{section.11.1}
|
||||
\contentsline {part}{\partnumberline {II}Compatibility Layers---ComputerCraft}{26}{part.2}
|
||||
\contentsline {chapter}{\chapternumberline {12}Bit}{27}{chapter.12}
|
||||
\contentsline {section}{\numberline {12.1}Functions}{27}{section.12.1}
|
||||
\contentsline {chapter}{\chapternumberline {13}Colors}{28}{chapter.13}
|
||||
\contentsline {section}{\numberline {13.1}Constants}{28}{section.13.1}
|
||||
\contentsline {section}{\numberline {13.2}Functions}{28}{section.13.2}
|
||||
\contentsline {chapter}{\chapternumberline {14}Term}{29}{chapter.14}
|
||||
\contentsline {chapter}{\chapternumberline {15}Filesystem}{30}{chapter.15}
|
||||
\contentsline {part}{\partnumberline {III}Compatibility Layers---OpenComputers}{31}{part.3}
|
||||
\contentsline {part}{\partnumberline {IV}Peripherals}{32}{part.4}
|
||||
\contentsline {chapter}{\chapternumberline {16}Line Printer}{33}{chapter.16}
|
||||
\contentsline {section}{\numberline {16.1}Functions}{33}{section.16.1}
|
||||
\contentsline {chapter}{\chapternumberline {17}PSG}{34}{chapter.17}
|
||||
\contentsline {part}{\partnumberline {V}References}{35}{part.5}
|
||||
@@ -1,35 +0,0 @@
|
||||
\relax
|
||||
\providecommand\hyper@newdestlabel[2]{}
|
||||
\providecommand*{\memsetcounter}[2]{}
|
||||
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
|
||||
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
|
||||
\global\let\oldcontentsline\contentsline
|
||||
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
|
||||
\global\let\oldnewlabel\newlabel
|
||||
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
|
||||
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
|
||||
\AtEndDocument{\ifx\hyper@anchor\@undefined
|
||||
\let\contentsline\oldcontentsline
|
||||
\let\newlabel\oldnewlabel
|
||||
\fi}
|
||||
\fi}
|
||||
\global\let\hyper@last\relax
|
||||
\gdef\HyperFirstAtBeginDocument#1{#1}
|
||||
\providecommand\HyField@AuxAddToFields[1]{}
|
||||
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {1}Main Applications}{5}{chapter.1}}
|
||||
\gdef \LT@i {\LT@entry
|
||||
{1}{72.64pt}\LT@entry
|
||||
{1}{262.36pt}}
|
||||
\gdef \LT@ii {\LT@entry
|
||||
{1}{72.64pt}\LT@entry
|
||||
{1}{262.36pt}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.1}DSH}{6}{section.1.1}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.2}MSH}{6}{section.1.2}}
|
||||
\@writefile{lof}{\addvspace {10pt}}
|
||||
\@writefile{lot}{\addvspace {10pt}}
|
||||
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {2}References}{7}{chapter.2}}
|
||||
\memsetcounter{lastsheet}{8}
|
||||
\memsetcounter{lastpage}{8}
|
||||
@@ -1,4 +0,0 @@
|
||||
\BOOKMARK [0][-]{chapter.1}{\376\377\000M\000a\000i\000n\000\040\000A\000p\000p\000l\000i\000c\000a\000t\000i\000o\000n\000s}{}% 1
|
||||
\BOOKMARK [1][-]{section.1.1}{\376\377\000D\000S\000H}{chapter.1}% 2
|
||||
\BOOKMARK [1][-]{section.1.2}{\376\377\000M\000S\000H}{chapter.1}% 3
|
||||
\BOOKMARK [0][-]{chapter.2}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 4
|
||||
Binary file not shown.
@@ -1,4 +0,0 @@
|
||||
\contentsline {chapter}{\chapternumberline {1}Main Applications}{5}{chapter.1}
|
||||
\contentsline {section}{\numberline {1.1}DSH}{6}{section.1.1}
|
||||
\contentsline {section}{\numberline {1.2}MSH}{6}{section.1.2}
|
||||
\contentsline {chapter}{\chapternumberline {2}References}{7}{chapter.2}
|
||||
Reference in New Issue
Block a user