Skip to content
Snippets Groups Projects
Commit 411874e2 authored by David Bergström's avatar David Bergström
Browse files

Add docs

parent c54c8721
No related branches found
No related tags found
No related merge requests found
_autosummary/
_build/
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
SPHINXPROJ = PyCommandCenter
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)
\ No newline at end of file
# -*- coding: utf-8 -*-
#
# Configuration file for the Sphinx documentation builder.
#
# This file does only contain a selection of the most common options. For a
# full list see the documentation:
# http://www.sphinx-doc.org/en/master/config
# -- 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 sys,os
# TODO: This only works for building in Windows and building in release mode
sys.path.append(os.path.join(os.getcwd(), "..", "build", "python-api-src", "Release"))
# -- Project information -----------------------------------------------------
project = 'PyCommandCenter'
copyright = '2018, David Bergström'
author = 'David Bergström'
# The short X.Y version
version = ''
# The full version, including alpha/beta/rc tags
release = ''
# -- General configuration ---------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.githubpages',
'sphinx.ext.autosummary'
]
autodoc_docstring_signature=True
autosummary_generate=True
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
# source_suffix = ['.rst', '.md']
source_suffix = '.rst'
# The master toctree document.
master_doc = 'index'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
# 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']
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# -- Options for HTML output -------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = 'alabaster'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#
# html_theme_options = {}
# 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']
# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
#
# The default sidebars (for documents that don't match any pattern) are
# defined by theme itself. Builtin themes are using these templates by
# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
# 'searchbox.html']``.
#
# html_sidebars = {}
# -- Options for HTMLHelp output ---------------------------------------------
# Output file base name for HTML help builder.
htmlhelp_basename = 'PyCommandCenterdoc'
# -- Options for LaTeX output ------------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'PyCommandCenter.tex', 'PyCommandCenter Documentation',
'David Bergström', 'manual'),
]
# -- Options for manual page output ------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'pycommandcenter', 'PyCommandCenter Documentation',
[author], 1)
]
# -- Options for Texinfo output ----------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'PyCommandCenter', 'PyCommandCenter Documentation',
author, 'PyCommandCenter', 'One line description of project.',
'Miscellaneous'),
]
# -- Extension configuration -------------------------------------------------
Welcome to PyCommandCenter's documentation!
===========================================
This is a Python module for implementing bots for Starcraft II.
.. toctree::
:maxdepth: 2
:caption: Contents:
unit
managers
Short overview
==============
.. autosummary::
:toctree: _autosummary
library
library.PLAYER_SELF
library.PLAYER_ENEMY
library.PLAYER_NEUTRAL
library.PLAYER_ALLY
library.ABILITY_ID
library.BUFF_ID
library.BaseLocation
library.BuildingPlacer
library.Color
library.Coordinator
library.Difficulty
library.IDABot
library.MapTools
library.PlayerSetup
library.Point2D
library.Point2DI
library.Race
library.TechTree
library.TypeData
library.UNIT_TYPEID
library.UPGRADE_ID
library.Unit
library.UnitType
library.UnitTypeID
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
@ECHO OFF
pushd %~dp0
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=.
set BUILDDIR=_build
set SPHINXPROJ=PyCommandCenter
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%
goto end
:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
:end
popd
Managers
========
The original CommandCenter bot uses managers to do everything, having managers
manage workers, building, controlling military etc. In this API we have removed
all the control related managers and only kept the managers related to helping
process input information, leaving the decision-making to the user of the API.
Here is a full list of all managers:
* :class:`library.BaseLocationManager`
* :class:`library.TechTree`
The rest of this page contains the descriptions of each manager.
.. TODO: How should we access the managers? Should we let the students create them themselves or should we give it to them via inhertiance
BaseLocationManager
-------------------
.. class:: library.BaseLocationManager
.. attribute:: library.BaseLocationManager.base_locations
A list of all :class:`library.BaseLocation` on the current map
.. attribute:: library.BaseLocationManager.starting_base_locations
A list of all :class:`library.BaseLocation` on the current map which a player
started at, indexed by Player constant
.. automethod:: library.BaseLocationManager.get_occupied_base_locations
.. automethod:: library.BaseLocationManager.get_player_starting_base_location
.. automethod:: library.BaseLocationManager.get_next_expansion
.. class:: library.BaseLocation
Closely related to BaseLocationManager. This is the datastructure used by
the BaseLocationManager to keep track of all base locations and related
information.
.. attribute:: library.BaseLocation.position
The position of the center of the BaseLocation, defined as a :class:`library.Point2D`.
.. attribute:: library.BaseLocation.depot_position
A suitable position for building a town hall, defined as a :class:`library.Point2DI`.
TechTree
--------
.. class:: library.TechTree
This class contains all information about units and what is required to
build a certain unit and what builds it. It only has one method, which is
used to look-up unit types properties:
.. method:: get_data(argument) -> library.TypeData
Argument is either an instance of the class :class:`library.UnitType` or
an instance of the class :class:`library.CCUpgrade`, depending on what
information is wanted.
.. autoclass:: library.TypeData
:members:
.. TODO: Not all members have docstrings attached to them
MapTools
--------
.. autoclass:: library.MapTools
:members:
Unit
====
.. class:: library.Unit
An instance of the class Unit represents one unit in the game. The units are
not limited to moveable units, but every entity which is not part of the
background is a unit. For example, the minerals and geysers are units as
well as all buildings.
For all possible types of units see the enum :class:`library.UNIT_TYPEID`.
Some types of objects are almost the same, for example there are many types
of mineral deposits, but all of them are mineable. This is one of the
motivations behind the :class:`library.UnitType` which aims to to make the
list of types more manageable. The UnitType can be accessed by the
:any:`Unit.unit_type` property.
It is possible to use Unit as keys in a dictionary, which might be helpful
for bookkeeping.
Properties:
.. autoattribute:: build_percentage
.. autoattribute:: energy
.. autoattribute:: hit_points
.. autoattribute:: id
.. autoattribute:: is_alive
.. autoattribute:: is_being_constructed
.. autoattribute:: is_burrowed
.. autoattribute:: is_cloaked
.. autoattribute:: is_completed
.. autoattribute:: is_constructing
.. autoattribute:: is_flying
.. autoattribute:: is_idle
.. autoattribute:: is_powered
.. autoattribute:: is_training
.. autoattribute:: is_valid
.. attribute:: Unit.player
.. TODO: Add page about PLAYER_* constants
.. autoattribute:: position
.. autoattribute:: shields
.. autoattribute:: tile_position
.. autoattribute:: unit_type
.. autoattribute:: weapon_cooldown
Methods:
.. automethod:: stop
.. automethod:: attack_unit
.. automethod:: attack_move
.. method:: Unit.move(self, point)
Move the unit to the given point, the point being an instance of either
:class:`library.Point2D` or :class:`library.Point2DI`.
.. automethod:: right_click
.. automethod:: repair
.. automethod:: build
.. TODO: Maybe should I put the limits of build here, and when to use build_target
.. automethod:: build_target
.. automethod:: train
.. automethod:: morph
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment