mirror of
https://github.com/Relintai/entity_spell_system.git
synced 2025-04-19 21:33:15 +02:00
Removed sphinx based docs, as a better readme.md should be enough.
This commit is contained in:
parent
f29b01af8b
commit
cc4c5edc91
26
docs/.gitignore
vendored
26
docs/.gitignore
vendored
@ -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
|
@ -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)
|
273
docs/_static/css/custom.css
vendored
273
docs/_static/css/custom.css
vendored
@ -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;
|
||||
}
|
7
docs/_templates/breadcrumbs.html
vendored
7
docs/_templates/breadcrumbs.html
vendored
@ -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 %}
|
4
docs/_templates/layout.html
vendored
4
docs/_templates/layout.html
vendored
@ -1,4 +0,0 @@
|
||||
{% extends "!layout.html" %}
|
||||
{% block linktags %}
|
||||
{{ super() }}
|
||||
{% endblock %}
|
@ -1,9 +0,0 @@
|
||||
Entity Spell System API
|
||||
=======================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:name: toc-class-ref
|
||||
:glob:
|
||||
|
||||
class_*
|
117
docs/conf.py
117
docs/conf.py
@ -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
|
@ -1,2 +0,0 @@
|
||||
|
||||
python ../../../doc/tools/makerst.py ../doc_classes/ -o classes/
|
@ -1,8 +0,0 @@
|
||||
.. _doc_entities_ai:
|
||||
|
||||
|
||||
AI
|
||||
==
|
||||
|
||||
|
||||
EntityAI
|
@ -1,7 +0,0 @@
|
||||
.. _doc_entities_auras:
|
||||
|
||||
Auras
|
||||
=====
|
||||
|
||||
|
||||
AuraData
|
@ -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
|
@ -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.
|
@ -1,12 +0,0 @@
|
||||
.. _doc_entities_data:
|
||||
|
||||
Data
|
||||
====
|
||||
|
||||
|
||||
Data
|
||||
|
||||
|
||||
EntityData
|
||||
EntityClassData
|
||||
|
@ -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
|
@ -1,6 +0,0 @@
|
||||
.. _doc_entities_introduction:
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
|
@ -1,11 +0,0 @@
|
||||
.. _doc_entities_levels:
|
||||
|
||||
Levels
|
||||
======
|
||||
|
||||
how to handle level ups
|
||||
what needs to be prted
|
||||
|
||||
XPData
|
||||
|
||||
Level Stat Data
|
@ -1,10 +0,0 @@
|
||||
.. _doc_entities_networking:
|
||||
|
||||
Networking
|
||||
==========
|
||||
|
||||
warnings
|
||||
|
||||
architecture + conventions
|
||||
|
||||
vrpc + visibility
|
@ -1,8 +0,0 @@
|
||||
.. _doc_entities_other:
|
||||
|
||||
Other
|
||||
=====
|
||||
|
||||
|
||||
|
||||
diff arrays
|
@ -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
|
||||
|
||||
|
@ -1,7 +0,0 @@
|
||||
.. _doc_entities_resources:
|
||||
|
||||
Resources
|
||||
=========
|
||||
|
||||
|
||||
Resources
|
@ -1,10 +0,0 @@
|
||||
.. _doc_entities_skeleton:
|
||||
|
||||
Skeleton
|
||||
========
|
||||
|
||||
how they work
|
||||
design choices
|
||||
will be ported
|
||||
|
||||
Equipment how to do
|
@ -1,5 +0,0 @@
|
||||
.. _doc_entities_skills:
|
||||
|
||||
|
||||
Skills
|
||||
======
|
@ -1,6 +0,0 @@
|
||||
.. _doc_entities_spells:
|
||||
|
||||
Spells
|
||||
======
|
||||
|
||||
spells
|
@ -1,9 +0,0 @@
|
||||
.. _doc_entities_stats:
|
||||
|
||||
Stats
|
||||
=====
|
||||
|
||||
Stats
|
||||
|
||||
Stat
|
||||
StatModifiers
|
@ -1,7 +0,0 @@
|
||||
.. _doc_entities_talents:
|
||||
|
||||
Talents
|
||||
=======
|
||||
|
||||
|
||||
talents
|
@ -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,
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
.. _doc_faq_procedural_generation:
|
||||
|
||||
Procedural generation
|
||||
=====================
|
||||
|
||||
|
||||
How to do procgen
|
||||
|
||||
procgen EntityData
|
||||
prockeg classdata
|
||||
|
||||
procgen spells
|
@ -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.
|
||||
|
@ -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
|
@ -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.
|
@ -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".
|
@ -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.
|
@ -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
|
@ -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.
|
109
docs/index.rst
109
docs/index.rst
@ -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`
|
@ -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
|
@ -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.
|
@ -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
|
@ -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
|
@ -1,4 +0,0 @@
|
||||
.. _doc_introduction_optional_dependencies:
|
||||
|
||||
Optional Dependencies
|
||||
=====================
|
@ -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
|
||||
|
@ -1,4 +0,0 @@
|
||||
.. _doc_items_craft_recipes:
|
||||
|
||||
Craft Recipes
|
||||
=============
|
@ -1,4 +0,0 @@
|
||||
.. _doc_items_equipment:
|
||||
|
||||
Equipment
|
||||
=========
|
@ -1,4 +0,0 @@
|
||||
.. _doc_items_item:
|
||||
|
||||
Item
|
||||
====
|
@ -1,4 +0,0 @@
|
||||
.. _doc_items_item_visuals:
|
||||
|
||||
Item Visuals
|
||||
============
|
@ -1,8 +0,0 @@
|
||||
.. _doc_items_loot:
|
||||
|
||||
Loot
|
||||
====
|
||||
|
||||
Loot
|
||||
lootdb
|
||||
will have to change
|
@ -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
|
@ -1,6 +0,0 @@
|
||||
.. _doc_spells_and_auras_aura:
|
||||
|
||||
Aura
|
||||
====
|
||||
|
||||
Aura
|
@ -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.
|
@ -1,7 +0,0 @@
|
||||
.. _doc_spells_and_auras_pipelines:
|
||||
|
||||
Pipelines
|
||||
=========
|
||||
|
||||
DamageInfo
|
||||
HealInfo
|
@ -1,8 +0,0 @@
|
||||
.. _doc_spells_and_auras_spell:
|
||||
|
||||
Spell
|
||||
=====
|
||||
|
||||
Spell
|
||||
|
||||
Ray casting!
|
@ -1,6 +0,0 @@
|
||||
.. _doc_spells_and_auras_spell_visua;_effects:
|
||||
|
||||
Spell Visual Effects
|
||||
====================
|
||||
|
||||
Spell Effects (Visuals)
|
@ -1,9 +0,0 @@
|
||||
.. _doc_spells_and_auras_world_spells:
|
||||
|
||||
World Spells
|
||||
============
|
||||
|
||||
=== WorldSpells ====
|
||||
|
||||
todo
|
||||
what it will do
|
@ -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.
|
Loading…
Reference in New Issue
Block a user