Removed sphinx based docs, as a better readme.md should be enough.

This commit is contained in:
Relintai 2020-04-10 15:56:38 +02:00
parent f29b01af8b
commit cc4c5edc91
54 changed files with 0 additions and 1558 deletions

26
docs/.gitignore vendored
View File

@ -1,26 +0,0 @@
_build/
env/
classes/*
!classes/index.rst
__pycache__
*.pyc
*~
.directory
.vs/
.vscode/
*.mo
*.swo
*.swp
.DS_Store
[Tt]humbs.db
[Tt]humbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
__MACOSX
*.lnk
[Dd]esktop.ini

View File

@ -1,20 +0,0 @@
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?= -j auto
SPHINXBUILD ?= sphinx-build
SOURCEDIR = .
BUILDDIR = _build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

View File

@ -1,273 +0,0 @@
/**
* Various tweaks to the Read the Docs theme to better conform with Godot's visual identity.
*/
:root {
--navbar-background-color: #292c37;
--navbar-background-color-hover: #292c37;
--navbar-background-color-active: #212d51;
--navbar-current-background-color: #000;
--navbar-current-background-color-hover: #1c1f26;
--navbar-current-background-color-active: #131e3b;
--navbar-level-1-color: #fff;
--navbar-level-2-color: #f0f8ff;
--navbar-level-3-color: #ddcd8d;
--navbar-heading-color: #d7bd6f;
--link-color-active: #105078;
--code-literal-color: #d04c60;
--highlight-background-color: #f5ffe1;
--input-background-color: #fcfcfc;
--input-focus-border-color: #5f8cff;
}
body,
h1,
h2,
h3,
h4,
h5,
h6,
input[type="text"],
input[type="button"],
input[type="reset"],
input[type="submit"],
textarea,
legend,
.btn,
.rst-content .toctree-wrapper p.caption,
.rst-versions {
/* Use a system font stack for better performance (no Web fonts required) */
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
}
h1,
h2,
h3,
h4,
h5,
h6,
legend,
.rst-content .toctree-wrapper p.caption {
/* Use a lighter font for headers (Medium instead of Bold) */
font-weight: 500;
}
p,
article ul,
article ol,
.wy-plain-list-disc,
.wy-plain-list-decimal,
.rst-content ol.arabic,
.rst-content .section ul,
.rst-content .toctree-wrapper ul,
.rst-content .section ol {
/* Increase the line height slightly to account for the different font */
line-height: 25px;
}
a:hover {
text-decoration: underline;
}
a:active {
/* Add visual feedback when clicking on a link */
color: var(--link-color-active);
}
a.btn:hover {
text-decoration: none;
}
/* Code display tweaks */
code,
.rst-content tt,
.rst-content code {
font-size: 14px;
}
.rst-content tt.literal,
.rst-content code.literal {
color: var(--code-literal-color);
}
.rst-content pre.literal-block,
.rst-content div[class^="highlight"] pre,
.rst-content .linenodiv pre {
/* Increase the font size and line height in code blocks */
font-size: 14px;
line-height: 1.5;
}
.highlight {
background-color: var(--highlight-background-color);
}
/* Navigation bar logo and search */
.wy-side-nav-search {
background-color: var(--navbar-background-color);
}
.wy-side-nav-search > a:hover,
.wy-side-nav-search .wy-dropdown > a:hover {
background-color: var(--navbar-background-color-hover);
}
.wy-side-nav-search > a:active,
.wy-side-nav-search .wy-dropdown > a:active {
background-color: var(--navbar-background-color-active);
}
.wy-side-nav-search input[type="text"] {
background-color: var(--input-background-color);
/* Avoid reflowing when toggling the focus state */
border: 2px solid transparent;
box-shadow: none;
/* Make visual feedback instant */
transition: none;
font-size: 14px;
}
.wy-side-nav-search input[type="text"]:focus {
border: 2px solid var(--input-focus-border-color);
}
/* Navigation bar */
.wy-nav-side {
background-color: var(--navbar-background-color);
}
.wy-menu-vertical header,
.wy-menu-vertical p.caption {
color: var(--navbar-heading-color);
/* Improves the appearance of uppercase text */
letter-spacing: 0.75px;
}
/* Mobile navigation */
.wy-nav-top,
.wy-nav-top a {
background-color: var(--navbar-background-color);
color: var(--navbar-level-1-color);
}
/* Version branch label below the logo */
.wy-side-nav-search > div.version {
color: var(--navbar-level-3-color);
opacity: 0.9;
}
/* First level of navigation items */
.wy-menu-vertical {
/* Account for the increased `toctree-expand` button margins */
width: 308px;
}
.wy-menu-vertical a {
color: var(--navbar-level-1-color);
}
.wy-menu-vertical a:hover {
background-color: var(--navbar-background-color-hover);
color: var(--navbar-level-1-color);
}
.wy-menu-vertical a:active {
background-color: var(--navbar-background-color-active);
}
.wy-menu-vertical li.toctree-l1.current > a {
border: none;
}
.wy-side-nav-search, .wy-menu-vertical a, .wy-menu-vertical a span.toctree-expand,
.wy-menu-vertical li.toctree-l2 a span.toctree-expand {
color: var(--navbar-level-3-color);
opacity: 0.9;
margin-right: 8px;
}
.wy-side-nav-search, .wy-menu-vertical a, .wy-menu-vertical a:hover span.toctree-expand,
.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand {
color: var(--navbar-level-2-color);
opacity: 1;
}
.wy-side-nav-search, .wy-menu-vertical a, .wy-menu-vertical a:active span.toctree-expand,
.wy-menu-vertical li.toctree-l2 a:active span.toctree-expand {
color: var(--navbar-level-1-color);
opacity: 1;
}
/* Second (and higher) levels of navigation items */
.wy-menu-vertical li.current a,
.wy-menu-vertical li.toctree-l2.current > a,
.wy-menu-vertical li.toctree-l2.current li.toctree-l3 > a,
.wy-menu-vertical li.toctree-l2.current li.toctree-l4 > a {
background-color: var(--navbar-current-background-color);
color: var(--navbar-level-2-color);
}
.wy-menu-vertical li.current a:hover,
.wy-menu-vertical li.toctree-l2.current > a:hover,
.wy-menu-vertical li.toctree-l2.current li.toctree-l3 > a:hover,
.wy-menu-vertical li.toctree-l3.current li.toctree-l4 > a:hover {
background-color: var(--navbar-current-background-color-hover);
}
.wy-menu-vertical li.current a:active,
.wy-menu-vertical li.toctree-l2.current > a:active,
.wy-menu-vertical li.toctree-l2.current li.toctree-l3 > a:active,
.wy-menu-vertical li.toctree-l3.current li.toctree-l4 > a:active {
background-color: var(--navbar-current-background-color-active);
}
/* Version selector (only visible on Read the Docs) */
.rst-versions {
background-color: var(--navbar-current-background-color);
}
.rst-versions a,
.rst-versions .rst-current-version,
.rst-versions .rst-current-version .fa,
.rst-versions .rst-other-versions dd a {
color: var(--navbar-level-1-color);
}
.rst-versions .rst-other-versions small {
color: var(--navbar-level-3-color);
}
.rst-versions .rst-other-versions dd a:hover {
text-decoration: underline;
}
.rst-versions .rst-other-versions {
color: var(--navbar-heading-color);
}
.rst-versions .rst-current-version {
background-color: var(--navbar-current-background-color);
}
.rst-versions .rst-current-version:hover {
background-color: var(--navbar-current-background-color-hover);
}
.rst-versions .rst-current-version:active {
background-color: var(--navbar-current-background-color-active);
}
/* Hide the obnoxious automatic highlight in search results */
.rst-content .highlighted {
background-color: transparent;
font-weight: inherit;
padding: 0;
}

View File

@ -1,7 +0,0 @@
{%- extends "sphinx_rtd_theme/breadcrumbs.html" %}
{% block breadcrumbs_aside %}
{% if not meta or meta.get('github_url') != 'hide' %}
{{ super() }}
{% endif %}
{% endblock %}

View File

@ -1,4 +0,0 @@
{% extends "!layout.html" %}
{% block linktags %}
{{ super() }}
{% endblock %}

View File

@ -1,9 +0,0 @@
Entity Spell System API
=======================
.. toctree::
:maxdepth: 1
:name: toc-class-ref
:glob:
class_*

View File

@ -1,117 +0,0 @@
# -*- coding: utf-8 -*-
# Configuration file for the Sphinx documentation builder.
#
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Path setup --------------------------------------------------------------
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
import os
import sys
# sys.path.insert(0, os.path.abspath('.'))
needs_sphinx = '1.3'
# -- Project information -----------------------------------------------------
project = 'Entity Spell System for GODOT'
copyright = '2019-2020, Péter Magyar (Relintai)'
author = 'Péter Magyar (Relintai)'
version = 'latest'
release = 'latest'
# Parse Sphinx tags passed from RTD via environment
env_tags = os.getenv('SPHINX_TAGS')
if env_tags != None:
for tag in env_tags.split(','):
print("Adding Sphinx tag: %s" % tag.strip())
tags.add(tag.strip())
# -- General configuration ---------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
sys.path.append(os.path.abspath('extensions'))
extensions = [
'gdscript', 'sphinx.ext.imgmath'
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
source_suffix = '.rst'
source_encoding = 'utf-8-sig'
# GDScript syntax highlighting
from gdscript import GDScriptLexer
from sphinx.highlighting import lexers
lexers['gdscript'] = GDScriptLexer()
# Pygments (syntax highlighting) style to use
pygments_style = 'sphinx'
highlight_language = 'gdscript'
# -- Options for HTML output -------------------------------------------------
# on_rtd is whether we are on readthedocs.org, this line of code grabbed from docs.readthedocs.org
on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
import sphinx_rtd_theme
html_theme = 'sphinx_rtd_theme'
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
if on_rtd:
using_rtd_theme = True
# Theme options
html_theme_options = {
# 'typekit_id': 'hiw1hhg',
# 'analytics_id': '',
# 'sticky_navigation': True # Set to False to disable the sticky nav while scrolling.
'logo_only': True, # if we have a html_logo below, this shows /only/ the logo with no title text
'collapse_navigation': False, # Collapse navigation (False makes it tree-like)
# 'display_version': True, # Display the docs version
# 'navigation_depth': 4, # Depth of the headers shown in the navigation bar
}
# VCS options: https://docs.readthedocs.io/en/latest/vcs.html#github
html_context = {
"display_github": True, # Integrate GitHub
"github_user": "Relintai", # Username
"github_repo": "entity_spell_system", # Repo name
"github_version": "master", # Version
"conf_py_path": "/docs/", # Path in the checkout to the docs root
}
#html_logo = 'img/docs_logo.png'
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# These paths are either relative to html_static_path
# or fully qualified paths (eg. https://...)
html_css_files = [
'css/custom.css',
]
# Output file base name for HTML help builder
htmlhelp_basename = 'ESSdoc'
# -- Options for reStructuredText parser ----------------------------------
# Enable directives that insert the contents of external files
file_insertion_enabled = False

View File

@ -1,2 +0,0 @@
python ../../../doc/tools/makerst.py ../doc_classes/ -o classes/

View File

@ -1,8 +0,0 @@
.. _doc_entities_ai:
AI
==
EntityAI

View File

@ -1,7 +0,0 @@
.. _doc_entities_auras:
Auras
=====
AuraData

View File

@ -1,46 +0,0 @@
.. _doc_entities_bags:
Bags
====
For implementing inventories use the :ref:`Bag<class_Bag>` base class.
Right now :ref:`Bags<class_Bag>` implements a really simple system (think of Skyrim).
Later more implementations will be added (as subclasses).
If you need a Diablo-like inventory grid, this is a work-in-progress version:
https://github.com/Relintai/entity_spell_system/blob/master/inventory/grid_bag.h
It's not in the build right now, but at least you won't start from scratch, if you want to create one
like this. The item size properties were removed from items, they'll be added back.
Every :ref:`Entity<class_Entity>` contains a :ref:`Bags<class_Bag>` property, both server, and clientside.
See :ref:`Entity.sbag<class_Entity_property_sbag>`, and :ref:`Entity.cbag<class_Entity_property_cbag>`.
For networked players, whenever the contents of an :ref:`Entity<class_Entity>`'s bag changes, the
system automatically sends a message to the :ref:`Entity<class_Entity>`'s owner, thus keeping the
state consistent on both server and client.
The system can also send a bag's contents all at once, for example this happens whenever you replace an
:ref:`Entity<class_Entity>`'s bags, using the serverside properties.
By default Entities won't actually create their own bags, because for example mobs don't need bags by default.
.. note:: Right now for the player the :ref:`setup_actionbars<class_Entity_method_setup_actionbars>` will allocate bags.
This will be changed. Also since the module needs the ability to easily switch bag implementations, bag
allocation will probably be pushed into a virtual function, like setup_bags() -> _setup_bags() (virtual).
Target Bags
-----------
See :ref:`starget_bag<class_Entity_property_starget_bag>`, and :ref:`ctarget_bag<class_Entity_property_ctarget_bag>`.
With these it becomes possible to implement checsts, bank, loot, with minimal code.
For example when a mob dies, loot is generated into their bags, then when you click their corpse, that bag gets set
as you player's target bag. When you do this, the system sends the contents to that player, and they can manipulate
the contents, based on what the server allows.
If you want to see how to setup loot interaction, check the _son_death method here:
https://github.com/Relintai/broken_seals/blob/master/game/player/Mob.gd
It you want to see how to setup loot, check the _sinteract method here:
https://github.com/Relintai/broken_seals/blob/master/game/scripts/entities/EntityDataGD.gd

View File

@ -1,19 +0,0 @@
.. _doc_entities_crafting:
Crafting
========
The module supports crafting. In order to set it up, first you'll probably need a gui.
As a starter you can take Broken Seal's crafting window from here:
https://github.com/Relintai/broken_seals/tree/master/game/ui/crafting
Or if you want to implement one yourself, implement the ability to your window to display recipes,
and then you can just get recipes from your target entity with functions like
:ref:`getc_craft_recipe<class_Entity_method_getc_craft_recipe>` **(** int craft_recipe **)** ,
and :ref:`getc_craft_recipe_count<class_Entity_method_getc_craft_recipe_count>` **(** **)**.
.. note:: You usually want to use the client side functions/properties for uis. The serverside
versions will have the ability to have additional, hidden entries. This will allow
for more effects, for example you can remove the player's ability to temporarily
see/craft certain things, without them actually forgeting them.

View File

@ -1,12 +0,0 @@
.. _doc_entities_data:
Data
====
Data
EntityData
EntityClassData

View File

@ -1,26 +0,0 @@
.. _doc_entities_entity:
Entity
======
talk about api, how they work
Entity
Your main class, base for players, mobs etc
2d, 3d
This should be used fors chests aswell
bit of a tradeoff
but the waz godot works this is the simplest
also this way, this is the most extensible system / way it can be done, most general way
most general purpose
animatable chests, spells that make chests float, applying auras to chests,
casting spells at them etc.
as apis

View File

@ -1,6 +0,0 @@
.. _doc_entities_introduction:
Introduction
============

View File

@ -1,11 +0,0 @@
.. _doc_entities_levels:
Levels
======
how to handle level ups
what needs to be prted
XPData
Level Stat Data

View File

@ -1,10 +0,0 @@
.. _doc_entities_networking:
Networking
==========
warnings
architecture + conventions
vrpc + visibility

View File

@ -1,8 +0,0 @@
.. _doc_entities_other:
Other
=====
diff arrays

View File

@ -1,18 +0,0 @@
.. _doc_entities_pets:
Pets
====
warn not yet implemented
how it will work
add_pet -> setup
pet talents
need to make ui
mind control

View File

@ -1,7 +0,0 @@
.. _doc_entities_resources:
Resources
=========
Resources

View File

@ -1,10 +0,0 @@
.. _doc_entities_skeleton:
Skeleton
========
how they work
design choices
will be ported
Equipment how to do

View File

@ -1,5 +0,0 @@
.. _doc_entities_skills:
Skills
======

View File

@ -1,6 +0,0 @@
.. _doc_entities_spells:
Spells
======
spells

View File

@ -1,9 +0,0 @@
.. _doc_entities_stats:
Stats
=====
Stats
Stat
StatModifiers

View File

@ -1,7 +0,0 @@
.. _doc_entities_talents:
Talents
=======
talents

View File

@ -1,176 +0,0 @@
# -*- coding: utf-8 -*-
"""
pygments.lexers.gdscript
~~~~~~~~~~~~~~~~~~~~~~
Lexer for GDScript.
:copyright: Copyright 2xxx by The Godot Engine Community
:license: MIT.
modified by Daniel J. Ramirez <djrmuv@gmail.com> based on the original python.py pygment
"""
import re
from pygments.lexer import Lexer, RegexLexer, include, bygroups, using, \
default, words, combined, do_insertions
from pygments.util import get_bool_opt, shebang_matches
from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
Number, Punctuation, Generic, Other, Error
from pygments import unistring as uni
__all__ = ['GDScriptLexer']
line_re = re.compile('.*?\n')
class GDScriptLexer(RegexLexer):
"""
For `Godot source code <https://www.godotengine.org>`_ source code.
"""
name = 'GDScript'
aliases = ['gdscript', 'gd']
filenames = ['*.gd']
mimetypes = ['text/x-gdscript', 'application/x-gdscript']
def innerstring_rules(ttype):
return [
# the old style '%s' % (...) string formatting
(r'%(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?'
'[hlL]?[E-GXc-giorsux%]', String.Interpol),
# backslashes, quotes and formatting signs must be parsed one at a time
(r'[^\\\'"%\n]+', ttype),
(r'[\'"\\]', ttype),
# unhandled string formatting sign
(r'%', ttype),
# newlines are an error (use "nl" state)
]
tokens = {
'root': [
(r'\n', Text),
(r'^(\s*)([rRuUbB]{,2})("""(?:.|\n)*?""")',
bygroups(Text, String.Affix, String.Doc)),
(r"^(\s*)([rRuUbB]{,2})('''(?:.|\n)*?''')",
bygroups(Text, String.Affix, String.Doc)),
(r'[^\S\n]+', Text),
(r'#.*$', Comment.Single),
(r'[]{}:(),;[]', Punctuation),
(r'\\\n', Text),
(r'\\', Text),
(r'(in|and|or|not)\b', Operator.Word),
(r'!=|==|<<|>>|&&|\+=|-=|\*=|/=|%=|&=|\|=|\|\||[-~+/*%=<>&^.!|$]', Operator),
include('keywords'),
(r'(func)((?:\s|\\\s)+)', bygroups(Keyword, Text), 'funcname'),
(r'(class)((?:\s|\\\s)+)', bygroups(Keyword, Text), 'classname'),
include('builtins'),
('([rR]|[uUbB][rR]|[rR][uUbB])(""")',
bygroups(String.Affix, String.Double), 'tdqs'),
("([rR]|[uUbB][rR]|[rR][uUbB])(''')",
bygroups(String.Affix, String.Single), 'tsqs'),
('([rR]|[uUbB][rR]|[rR][uUbB])(")',
bygroups(String.Affix, String.Double), 'dqs'),
("([rR]|[uUbB][rR]|[rR][uUbB])(')",
bygroups(String.Affix, String.Single), 'sqs'),
('([uUbB]?)(""")', bygroups(String.Affix, String.Double),
combined('stringescape', 'tdqs')),
("([uUbB]?)(''')", bygroups(String.Affix, String.Single),
combined('stringescape', 'tsqs')),
('([uUbB]?)(")', bygroups(String.Affix, String.Double),
combined('stringescape', 'dqs')),
("([uUbB]?)(')", bygroups(String.Affix, String.Single),
combined('stringescape', 'sqs')),
include('name'),
include('numbers'),
],
'keywords': [
(words((
'and', 'in', 'not', 'or', 'as', 'breakpoint', 'class', 'class_name',
'extends', 'is', 'func', 'setget', 'signal', 'tool', 'const',
'enum', 'export', 'onready', 'static', 'var', 'break', 'continue',
'if', 'elif', 'else', 'for', 'pass', 'return', 'match', 'while',
'remote', 'master', 'puppet', 'remotesync', 'mastersync',
'puppetsync'), suffix=r'\b'),
Keyword),
],
'builtins': [
(words((
'Color8', 'ColorN', 'abs', 'acos', 'asin', 'assert', 'atan', 'atan2',
'bytes2var', 'ceil', 'char', 'clamp', 'convert', 'cos', 'cosh',
'db2linear', 'decimals', 'dectime', 'deg2rad', 'dict2inst',
'ease', 'exp', 'floor', 'fmod', 'fposmod', 'funcref', 'hash',
'inst2dict', 'instance_from_id', 'is_inf', 'is_nan', 'lerp',
'linear2db', 'load', 'log', 'max', 'min', 'nearest_po2', 'pow',
'preload', 'print', 'print_stack', 'printerr', 'printraw',
'prints', 'printt', 'rad2deg', 'rand_range', 'rand_seed',
'randf', 'randi', 'randomize', 'range', 'round', 'seed', 'sign',
'sin', 'sinh', 'sqrt', 'stepify', 'str', 'str2var', 'tan',
'tan', 'tanh', 'type_exist', 'typeof', 'var2bytes', 'var2str',
'weakref', 'yield'),
prefix=r'(?<!\.)', suffix=r'\b'),
Name.Builtin),
(r'((?<!\.)(self|false|true)|(PI|TAU|NAN|INF)'
r')\b', Name.Builtin.Pseudo),
(words((
'bool', 'int', 'float', 'String', 'NodePath'
'Vector2', 'Rect2', 'Transform2D',
'Vector3', 'Rect3', 'Plane', 'Quat', 'Basis', 'Transform',
'Color', "RID", 'Object', 'NodePath', 'Dictionary',
'Array', 'PoolByteArray', 'PoolIntArray', 'PoolRealArray',
'PoolStringArray', 'PoolVector2Array', 'PoolVector3Array', 'PoolColorArray',
'null',
), prefix=r'(?<!\.)', suffix=r'\b'), Name.Builtin.Type),
],
'numbers': [
(r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?', Number.Float),
(r'\d+[eE][+-]?[0-9]+j?', Number.Float),
(r'0[xX][a-fA-F0-9]+', Number.Hex),
(r'\d+j?', Number.Integer)
],
'name': [
('[a-zA-Z_]\w*', Name),
],
'funcname': [
('[a-zA-Z_]\w*', Name.Function, '#pop'),
default('#pop'),
],
'classname': [
('[a-zA-Z_]\w*', Name.Class, '#pop')
],
'stringescape': [
(r'\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|'
r'U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})', String.Escape)
],
'strings-single': innerstring_rules(String.Single),
'strings-double': innerstring_rules(String.Double),
'dqs': [
(r'"', String.Double, '#pop'),
(r'\\\\|\\"|\\\n', String.Escape), # included here for raw strings
include('strings-double')
],
'sqs': [
(r"'", String.Single, '#pop'),
(r"\\\\|\\'|\\\n", String.Escape), # included here for raw strings
include('strings-single')
],
'tdqs': [
(r'"""', String.Double, '#pop'),
include('strings-double'),
(r'\n', String.Double)
],
'tsqs': [
(r"'''", String.Single, '#pop'),
include('strings-single'),
(r'\n', String.Single)
],
}
def setup(sphinx):
sphinx.add_lexer('gdscript', GDScriptLexer())
return {
'parallel_read_safe': True,
'parallel_write_safe': True,
}

View File

@ -1,12 +0,0 @@
.. _doc_faq_procedural_generation:
Procedural generation
=====================
How to do procgen
procgen EntityData
prockeg classdata
procgen spells

View File

@ -1,152 +0,0 @@
.. _doc_general_entity_enums:
:ref:`Entity Enums <class_EntityEnums>`
=======================================
Contains common Entity-related enums.
It has an unnamed enum containing the following values:
MAX_LEVEL = 50,
BASE_XP = 50,
GENDER_COUNT = 2
Unfortunately, to chenge these, you will need to recompile the engine.
This will be fixed later.
:ref:`EntityType <enum_EntityEnums_EntityType>`
-----------------------------------------------
Entity type, like beast, creature, object, humanoind, etc.
See :ref:`Entity.sentity_flags <class_Entity_property_sentity_type>`, and :ref:`Entity.centity_flags <class_Entity_property_centity_type>`.
:ref:`EntityController <enum_EntityEnums_EntityController>`
-----------------------------------------------------------
Is the entity controlled by a player, or an ai. Will be used for pets, can be used for
narrative things aswell, also mind control like effects.
See :ref:`Entity.sentity_flags <class_Entity_property_sentity_flags>`, and :ref:`Entity.centity_flags <class_Entity_property_centity_flags>`.
:ref:`EntityFlags <enum_EntityEnums_EntityFlags>`
-------------------------------------------------
Contains generic flags, like untargetable, hidden, interactable, etc.
See :ref:`Entity.sentity_flags <class_Entity_property_sentity_flags>`, and
:ref:`Entity.centity_flags <class_Entity_property_centity_flags>`.
:ref:`EntityStateTypeFlags <enum_EntityEnums_EntityStateTypeFlags>`
-------------------------------------------------------------------
Contains flags for effects. For example Stun, Root, Fear etc. Use these to check if
an entity has a particular effect.
.. note:: Don't set flags directly with the :ref:`Entity.sentity_flags <class_Entity_property_sentity_flags>`
property, because the flags are calculated (refcount). Seen the (EntityStateTypeIndexes)
section below.
This is how you can check serverside if an entity is stunned:
.. code-block:: gdscript
if entity.gets_state() & EntityEnums.ENTITY_STATE_TYPE_FLAG_STUN != 0:
print('stunned')
See :ref:`Entity.sentity_flags <class_Entity_property_sentity_flags>`,
and :ref:`Entity.centity_flags <class_Entity_property_centity_flags>`.
:ref:`EntityStateTypeIndexes <enum_EntityEnums_EntityStateTypeIndexes>`
-----------------------------------------------------------------------
For ease of use, Entity refcounts states, this is the enum, used to do it. When you want to add a state to an
entity, you need to use See :ref:`Entity.adds_state_ref() <class_Entity_method_adds_state_ref>`,
when you want to remove states use :ref:`Entity.removes_state_ref() <class_Entity_method_removes_state_ref>`.
.. note:: This in only available serverside.
For exmaple let's add a stun to an Entity:
.. code-block:: gdscript
entity.adds_state_ref(EntityEnums.ENTITY_STATE_TYPE_INDEX_STUN)
Let's remove it:
.. code-block:: gdscript
entity.removes_state_ref(EntityEnums.ENTITY_STATE_TYPE_INDEX_STUN)
Since these states are refcounted, everything will work, even if you have multiple sources stunning an entity.
.. note:: add, and remove_ref will recalculate, and set the :ref:`Entity.sentity_flags <class_Entity_property_sentity_flags>`
whenever needed. Also note, that :ref:`Entity.sentity_flags <class_Entity_property_sentity_flags>` will
syncronize itself over the network, into :ref:`Entity.centity_flags <class_Entity_property_centity_flags>`.
:ref:`EntityImmunityFlags <enum_EntityEnums_EntityImmunityFlags>`
-----------------------------------------------------------------
You can set entity immunities with this.
See :ref:`Entity.simmunity_flags <class_Entity_property_simmunity_flags>`. (Serverside only).
Let's make an entity immune to stun, and root:
.. code-block:: gdscript
entity.simmunity_flags = EntityEnums.ENTITY_IMMUNITY_FLAG_STUN | ENTITY_IMMUNITY_FLAG_ROOT
:ref:`CharacterSkeletonPoints <enum_EntityEnums_CharacterSkeletonPoints>`
-------------------------------------------------------------------------
Contains all the points/bones of the standard skeleton. With the current implementation, these are the bones,
that you can apply equipments to, add effects to, etc.
Of course it's up to each skeleton setup, to determine what to implement, and how to handle these in the end,
so even though this has it's limitations, there is still a lot of flexility. For example if you create a beast
skeleton, that class can just ignore any equipment's visuals.
.. note:: I do have some issues with this solution, because you will need to change, and recompile to add your own bones,
I'm thinking about a better solution. The main reason it's not that easy, is because this gives huge amounts
of convenience when creating equipment for example. You can check :ref:`ItemVisual <class_ItemVisual>` to see why.
:ref:`AIStates <enum_EntityEnums_AIStates>`
-------------------------------------------
The run of the mill AI FSM states.
:ref:`PetStates <enum_EntityEnums_PetStates>`
---------------------------------------------
Will be merged into AIStates, because it will make pet support a lot simpler.
:ref:`EntityInteractionType <enum_EntityEnums_EntityInteractionType>`
---------------------------------------------------------------------
How an entity should interact when an another one wants to :ref:`interact <class_Entity_method_sinteract>` with it.
Speak, Loot, Use, etc.
:ref:`EntityClassPlaystyleType <enum_EntityEnums_EntityClassPlaystyleType>`
---------------------------------------------------------------------------
For ai scripts. So they can tell whether a class is ranged or not.
:ref:`EntityGender <enum_EntityEnums_EntityGender>`
---------------------------------------------------
Well. gender. It's an enum, because it saves work on bindings. Look at the c++ code of
:ref:`ItemVisualEntry <class_ItemVisualEntry>` if you want to see why.
:ref:`EntityWindows <enum_EntityEnums_EntityWindows>`
-----------------------------------------------------
Allows the server to open different windows on the client. For example loot window, interaction windows, etc.
.. note:: The bindings in entity for this are using ints, so you can implement you own windows really easily.
The ide is similar to NOTIFICATION-s in Node, and derived types.

View File

@ -1,20 +0,0 @@
.. _doc_general_enums:
Enums
=====
These are helper classes containing huge amounts of enums.
They exists, because if these were in their own respective classes, for example
Entity for EntityEnums, then Entity would need to be included by pretty much almost every class,
but Entity also includes a lot of things, which means a lot of boilerplate forward declarations, and also
this would slow down incremental compile times considerably. So for convenience, these classes were born.
.. toctree::
:maxdepth: 1
:caption: Enums
:name: sec-enums
entity_enums
spell_enums
item_enums

View File

@ -1,59 +0,0 @@
.. _doc_general_item_enums:
:ref:`Item Enums <class_ItemEnums>`
===================================
Contains item-related enums.
:ref:`ItemRarity <enum_ItemEnums_ItemRarity>`
---------------------------------------------
Yout can set the visual rarity representation with this.
:ref:`ItemRarityFlag <enum_ItemEnums_ItemRarityFlag>`
-----------------------------------------------------
For generated items. You can set with it which rarities can happen.
:ref:`ItemType <enum_ItemEnums_ItemType>`
-----------------------------------------
Main item type / category.
Contains things like equipment, weapont, potion, herb, etc.
:ref:`ItemSubtype <enum_ItemEnums_ItemSubtype>`
-----------------------------------------------
Subtype. Like axe, mace, quest item etc.
:ref:`ItemSubSubtype <enum_ItemEnums_ItemSubSubtype>`
-----------------------------------------------------
SubSubtype. Like One hand, Two Hand etc.
.. note:: I don't like this setup, I'll try to make this better.
:ref:`EquipSlots <enum_ItemEnums_EquipSlots>`
---------------------------------------------
The equipslots you want for your character.
Head, Neck, Shoulders etc.
.. note:: I don't like this setup, I'll try to make this better (Somehow make it easily changeable).
Maybe make it customiyable with a macro from a central file somehow. TODO (Same will be
applied, to any enum which should be customizable)
:ref:`ArmorType <enum_ItemEnums_ArmorType>`
-------------------------------------------
Armor types. Cloth, Leather, etc.
:ref:`EntityTextureLayers <enum_ItemEnums_EntityTextureLayers>`
---------------------------------------------------------------
Texture Layers for merging equipment textures, so you can color skins, eyes etc, and then merge
(and also possibly color) equipment textures.
Think of equipment coloring in Diablo 3.

View File

@ -1,56 +0,0 @@
.. _doc_general_spell_enums:
:ref:`Spell Enums <class_SpellEnums>`
=====================================
Contains Spell-related enums.
:ref:`DamageType <enum_SpellEnums_DamageType>`
----------------------------------------------
The type of damage. It's a flag, so you can combine them.
Like Melee, Holy, Shadow etc.
:ref:`SpellCategory <enum_SpellEnums_SpellCategory>`
----------------------------------------------------
Helps to filter spells when needed. Like Normal, Alchemy, Cooking etc.
:ref:`SpellType <enum_SpellEnums_SpellType>`
--------------------------------------------
At the moment contains the same entries as :ref:`DamageType <enum_SpellEnums_DamageType>`,
also a flag, can be used for interrupt lockouts.
:ref:`DiminishingReturnCategory <enum_SpellEnums_DiminishingReturnCategory>`
----------------------------------------------------------------------------
Categories for diminishing returns. Root, Stun, etc.
:ref:`TriggerEvents <enum_SpellEnums_TriggerEvents>`
----------------------------------------------------
Triggen event categories. These are not yet implemented. The ide behind these is to be able to
create some reative effects, using Aura's inspector.
Think of an aura that gives a 10% chance to stun an enemy (a.k.a apply an aura), when they (ON_HIT) hit the owner.
:ref:`AuraType <enum_SpellEnums_AuraType>`
------------------------------------------
Type of an aura. Like None, Magic, Poison etc.
You can make these show up in the ui, also some spell can operate on different types.
They can also be used as flags.
:ref:`ColliderType <enum_SpellEnums_ColliderType>`
--------------------------------------------------
Collider type for aoes, to intersect with.
:ref:`TargetType <enum_SpellEnums_TargetType>`
----------------------------------------------
This is used by WorldSpell, to know where to "aim".

View File

@ -1,38 +0,0 @@
.. _doc_general_entity_data_manager:
:ref:`Entity Data Manager<class_EntityDataManager>`
===================================================
Loads / stores all the data the module needs, like classes, spells, auras, etc, also
it will have convenience methods to spawn Entities, it will also
handle :ref:`Entity<class_Entity>` spawning over the network.
:ref:`Entity<class_Entity>` spawning is only implemented in gdscript at the moment,
will be ported soon.
All loaded data classes have an id property, also these need to be unique
between them.
Right now you will need to populate every folder property, like
:ref:`auras_folder<class_EntityDataManager_property_auras_folder>`.
The Manager loads everything from the given folders. If you don't use some of the
resources that has a folder property for it, switch off
:ref:`automatic_load<class_EntityDataManager_property_automatic_load>`, and only load
the things you need. You can use methods like
:ref:`load_auras<class_EntityDataManager_method_load_auras>`.
ESS uses this data to spawn things over the network.
Right now you always need to have this class in the scene before spawning an
:ref:`Entity<class_Entity>`. Later this restriction will only apply if you
want to use networking.
You can script the loading behaviours by turning off the
:ref:`automatic_load<class_EntityDataManager_property_automatic_load>` property
in the instector.
The manager's scripting api allows you to fully customize loading.
You can add even dd every class one by one if you want to.
This also allows for procedurally generating data if you want to.
However if you do this, and also use networking, you need to make sure to to
generate the same spells aswell on clients aswell.

View File

@ -1,23 +0,0 @@
.. _doc_general_globals:
Globals
=======
These are the global classes of the module.
Right now both need to exist in the scene before you spawn entities.
I recommend adding them as autoloads.
Later both will be optional, in the case of profile manager, this is really simple,
however in the case of data manager, this is going to be more difficult. Also for
data manager it will only be possible if networking is disabled.
.. toctree::
:maxdepth: 1
:caption: Globals
:name: sec-globals-cat
entity_data_manager
profile_manager

View File

@ -1,17 +0,0 @@
.. _doc_general_profile_manager:
:ref:`Profile Manager<class_ProfileManager>`
============================================
Saves/loads player profiles.
A Player profile pretty much is an array of :ref:`ClassProfiles<class_ClassProfile>`.
Every :ref:`ClassProfile<class_ClassProfile>` contains actionbar information, class level information,
and it will (right now there is one placeholder class for this) contain keybind information.
Right now having this class inside the SceneTree is required before spawning entities.
This will change in the future.
In the future the data it saves will be more customizable by scripts.

View File

@ -1,109 +0,0 @@
Welcome to Entity-Spell System's documentation!
===============================================
.. toctree::
:maxdepth: 2
:caption: Contents:
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
.. toctree::
:maxdepth: 1
:caption: About
:name: sec-about
introduction/introduction
introduction/compiling
introduction/design
introduction/optional_dependencies
introduction/companion_addon
introduction/todos
.. toctree::
:maxdepth: 1
:caption: General
:name: sec-general
general/globals/globals
general/enums/index
.. toctree::
:maxdepth: 1
:caption: Entities
:name: sec-entities
entities/introduction
entities/entity
entities/data
entities/stats
entities/spells
entities/auras
entities/resources
entities/skills
entities/talents
entities/levels
entities/bags
entities/crafting
entities/skeleton
entities/ai
entities/pets
entities/networking
entities/other
.. toctree::
:maxdepth: 1
:caption: Spell and Auras
:name: sec-spells-and-auras
spells_and_auras/spell
spells_and_auras/aura
spells_and_auras/cooldowns
spells_and_auras/pipelines
spells_and_auras/world_spells
spells_and_auras/spell_visual_effects
.. toctree::
:maxdepth: 1
:caption: Items
:name: sec-items
items/item
items/craft_recipes
items/equipment
items/item_visuals
items/loot
.. toctree::
:maxdepth: 1
:caption: UI
:name: sec-ui
ui/drag_and_drop
.. toctree::
:maxdepth: 1
:caption: FAQ
:name: sec-faq
faq/procedural_generation
.. toctree::
:maxdepth: 1
:caption: Class reference
:name: sec-class-ref
classes/index
.. Indices and tables
.. ------------------
..
.. * :ref:`genindex`
.. * :ref:`modindex`
.. * :ref:`search`

View File

@ -1,14 +0,0 @@
.. _doc_introduction_companion_addon:
Companion Addon
===============
Entity and spell system has a companion addon, to help keep all the data organized.
You can get it from here:
https://github.com/Relintai/ess_data.git
It needs a .json file in the root of you project.
See https://github.com/Relintai/broken_seals/blob/master/game/ess_data.json

View File

@ -1,23 +0,0 @@
.. _doc_introduction_compiling:
Compiling
=========
This is an engine module, which means you'll need to compile it into godot yourself.
This might seem really daunting at first, especially if you already ran into complex build systems.
Don't worry though, compiling godot is really easy, simple, and also painless.
First make sure, that you can compile godot.
The tutorials for this are here: https://docs.godotengine.org/en/3.1/development/compiling/
Now you should have godot's source code on your computer.
Now, clone ess like:
git clone https://github.com/Relintai/entity_spell_system entity_spell_system
When this finishes copy your newly created entity_spell_system folder, into godot's source's modules folder.
Like: godot/modules/entity_spell_system
Once this is done, just gompile godot as usual.

View File

@ -1,20 +0,0 @@
.. _doc_introduction_design:
Design
======
Overall design diffp
scriptabiliy, and expasiveness is key
performance is important aswell
unfortunately the system is really intettwined, you might need to read the manual more thank once, there is no way
to really separate auras, entities, and spell that much
Optional dependencies diffp
Which are the main classes, what does what etc
tell about the main classes, and just continue into them

View File

@ -1,16 +0,0 @@
.. _doc_introduction_introduction:
Introduction
============
Welcome to the documentation of my entity and spell system godot engine module.
The main purpose of this module is to make a complex (mmorpg) like multiplayer spell
and entity setup accessible to everyone.
The module is created to be really flexible, you don't need to make realtime mmorpgs
with it, for example you can use this in an fps game, or even in a turn based single player roguelike.
The module is set up to give as much control over everything as possible.
The source code for the module is here: https://github.com/Relintai/entity_spell_system

View File

@ -1,4 +0,0 @@
.. _doc_introduction_optional_dependencies:
Optional Dependencies
=====================

View File

@ -1,18 +0,0 @@
.. _doc_introduction_todos:
Todos
=====
tell that not yet finished, but really close to it.
warns will thell about unfisisned things
todos
link todos
Deprecated / Lingering classes
Untiframe
aiformation

View File

@ -1,4 +0,0 @@
.. _doc_items_craft_recipes:
Craft Recipes
=============

View File

@ -1,4 +0,0 @@
.. _doc_items_equipment:
Equipment
=========

View File

@ -1,4 +0,0 @@
.. _doc_items_item:
Item
====

View File

@ -1,4 +0,0 @@
.. _doc_items_item_visuals:
Item Visuals
============

View File

@ -1,8 +0,0 @@
.. _doc_items_loot:
Loot
====
Loot
lootdb
will have to change

View File

@ -1,35 +0,0 @@
@ECHO OFF
pushd %~dp0
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=.
set BUILDDIR=_build
if "%1" == "" goto help
%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
goto end
:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
:end
popd

View File

@ -1,6 +0,0 @@
.. _doc_spells_and_auras_aura:
Aura
====
Aura

View File

@ -1,18 +0,0 @@
.. _doc_spells_and_auras_cooldowns:
Cooldowns
=========
ESS implements two types of cooldowns. These are:
:ref:`Cooldown<class_Cooldown>`
-------------------------------
This class is used for a single spell cooldown.
Later, spells on items will use this aswell.
:ref:`CategoryCooldown<class_CategoryCooldown>`
-----------------------------------------------
This class is used for giving categories of spells a cooldown. E.g. interrupts.

View File

@ -1,7 +0,0 @@
.. _doc_spells_and_auras_pipelines:
Pipelines
=========
DamageInfo
HealInfo

View File

@ -1,8 +0,0 @@
.. _doc_spells_and_auras_spell:
Spell
=====
Spell
Ray casting!

View File

@ -1,6 +0,0 @@
.. _doc_spells_and_auras_spell_visua;_effects:
Spell Visual Effects
====================
Spell Effects (Visuals)

View File

@ -1,9 +0,0 @@
.. _doc_spells_and_auras_world_spells:
World Spells
============
=== WorldSpells ====
todo
what it will do

View File

@ -1,15 +0,0 @@
.. _doc_ui_srag_and_drop:
Drag and Drop
=============
Implement drag & drops using :ref:`ESDragAndDrop<class_ESDragAndDrop>`.
ESS uses this as it's drag & drop helper class. You can easily set up item, and spell
drag & drops with this.
The meaning of the :ref:`item_id<class_ESDragAndDrop_property_item_id>` property changes, based
on the value of the :ref:`type<class_ESDragAndDrop_property_type>` property. It can mean, spell, itemid,
item slot, and equip slot.
Don't forget to set the :ref:`origin<class_ESDragAndDrop_property_origin>` property.