Skip to content

Commit

Permalink
doc: adding Quick Reference and updating README as necssary.
Browse files Browse the repository at this point in the history
yard does not want to read proto classes such as Api::Unit, unless we define them in a parseable way via _meta_documentation.rb
many protobuf classes defined and two dead artifact classes are removed.
using "Class.extend" instead of "self.included" axiom, for documentation purposes
various errors in method documentation corrected.
Github uses README in the root, but it's not yard doc parsed, so the repo file simply points to the real pages now.

feature: enable_feature_layer configuration added

refactor: Bot#warp_points moved to #geo.warp_points. documenation clarifies it's purpose.
  • Loading branch information
dysonreturns committed Jan 24, 2024
1 parent 41e23d5 commit 410758b
Show file tree
Hide file tree
Showing 36 changed files with 1,427 additions and 235 deletions.
19 changes: 16 additions & 3 deletions .yardopts
@@ -1,13 +1,26 @@
--protected
--no-private
--embed-mixin ClassMethods
--embed-mixin=ClassMethods
--embed-mixin=Api::*Extension
--embed-mixin=Api::*Extension::ClassMethods
--embed-mixin=Sc2::Location
--exclude /server/templates/
--exclude /yard/rubygems/
--exclude lib/sc2ai/protocol/
--exclude lib/sc2ai/protocol/common_pb.rb
--exclude lib/sc2ai/protocol/data_pb.rb
--exclude lib/sc2ai/protocol/debug_pb.rb
--exclude lib/sc2ai/protocol/error_pb.rb
--exclude lib/sc2ai/protocol/query_pb.rb
--exclude lib/sc2ai/protocol/raw_pb.rb
--exclude lib/sc2ai/protocol/sc2api_pb.rb
--exclude lib/sc2ai/protocol/score_pb.rb
--exclude lib/sc2ai/protocol/spatial_pb.rb
--exclude lib/sc2ai/protocol/ui_pb.rb
--hide-tag todo
--embed-mixin=Sc2::Client::ConfigurableOptions
--embed-mixin Sc2::Client::ConfigurableOptions
--readme ./docs/README.md
--asset ./docs/images:images
lib/**/*.rb
-
./docs/*.md
LICENSE.txt
Expand Down
1 change: 1 addition & 0 deletions README.md
@@ -0,0 +1 @@
https://dysonreturns.github.io/sc2ai/
2 changes: 1 addition & 1 deletion bin/generate_meta_data
Expand Up @@ -56,7 +56,7 @@ module GenerateMetaData
raise "Error: const value not found (#{klass}, #{value})"
end

# Helper for generating AbilitId from stableid json
# Helper for generating AbilityId from stableid json
def ability_constants(data)
result = {}
data.each do |row|
Expand Down
978 changes: 978 additions & 0 deletions docs/QUICK_REFERENCE.md

Large diffs are not rendered by default.

18 changes: 10 additions & 8 deletions docs/README.md
Expand Up @@ -9,8 +9,10 @@ This Ruby language is also now available, free to play, at https://www.ruby-lang

Mac (Apple® silicon / Intel®), Microsoft© Windows, WSL and Linux® are all supported.

## First rule - only tell the _cool_ nerds
The things we write are called "bots". They beat crap out of eachother on https://aiarena.net.
You should read this file and then {file:docs/QUICK_REFERENCE.md proceed to the tutorials}.

## I am Jack's digital fury
The things we write are called "bots". They beat crap out of each other on https://aiarena.net.
There are [regular tournaments](https://www.youtube.com/@ProbotsAI) and a permanent live stream here https://www.twitch.tv/aiarenastream.

That's right, you just stumbled upon the final boss of competitive coding. Welcome to Fight Club for Nerds, nerd.
Expand Down Expand Up @@ -56,8 +58,8 @@ From Command Prompt:
### Get the gem

#### Regarding Ruby versions
Ruby 3.2.2 runs amazingly and all the profilers and debuggers work.
If you don't need to profile or debug, 3.3.0 performs even better.
If you have any issues with profiling or debugging, Ruby 3.2 runs amazingly.
Ruby 3.3 performs even better.
Enabling YJIT is essential as we repeat methods frequently. Pass the runtime arg `--yjit` or `export RUBY_YJIT_ENABLE=1`.

#### On to the gem
Expand Down Expand Up @@ -196,11 +198,11 @@ Sc2::Match.new(
Congrats, you're botting!
The replay is auto-saved as `data/replays/autosave-#{botname}.SC2Replay` for casual review.

If the code scares you, especially that nasty deep `game_info.start_raw.start_locations.first` part (yuck), fear not - it's an anomaly.
The syntax is quite friendly while also forcibly teaching you the API (by design).
If the code scares you, especially that `game_info.start_raw.start_locations.first` part, fear not.
The syntax is generally quite friendly while also forcibly teaching you the API.
We have some extremely useful tutorials ahead once you're done skimming the next two sections.

## Competiting on the ladder
## Competing on the ladder

The dear ladder Admin have had their holiday consumed by moving the aiarena infrastructure to AWS.
Ruby support for the aiarena.net ladder will follow in 2024.
Expand Down Expand Up @@ -248,7 +250,7 @@ Or even how is ANY OF THIS possible?
Let's go through all of the above in byte sized chunks with the tutorials which follows.
The README is over, but check out [Acknowledgements](#label-Acknowledgements) below which answers one of these questions.

Onwards, {file:docs/TUTORIAL1_INFODUMP.md to the tutorials!}
Onwards, {file:docs/QUICK_REFERENCE.md to the tutorials!}

## Development

Expand Down
4 changes: 4 additions & 0 deletions docs/TUTORIAL_01.md
@@ -0,0 +1,4 @@
# TUTORIAL 1

Work in progress. Due soon.
-Dyson, Jan 23
150 changes: 150 additions & 0 deletions docs/images/bot_lifecycle.drawio
@@ -0,0 +1,150 @@
<mxfile host="app.diagrams.net" modified="2024-01-18T20:36:09.205Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:122.0) Gecko/20100101 Firefox/122.0" etag="nInsDeRP7gR_SbwqCH4Q" version="22.1.21" type="device">
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
<mxGraphModel dx="1010" dy="562" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="G0DDs08btf2AqnJ4b28P-0" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="30" y="70" width="530" height="690" as="geometry" />
</mxCell>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-2" value="" style="rounded=0;html=1;jettySize=auto;orthogonalLoop=1;fontSize=11;endArrow=block;endFill=0;endSize=8;strokeWidth=1;shadow=0;labelBackgroundColor=none;edgeStyle=orthogonalEdgeStyle;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="WIyWlLk6GJQsqaUBKTNV-3" target="G0DDs08btf2AqnJ4b28P-2" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="160" y="120" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-3" value="Bot#on_start" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="80" y="20" width="150" height="40" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-3" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#9673a6;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=12;fillColor=#e1d5e7;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="370" y="80" width="160" height="520" as="geometry" />
</mxCell>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;jettySize=auto;orthogonalLoop=1;fontSize=11;endArrow=block;endFill=0;endSize=8;strokeWidth=1;shadow=0;labelBackgroundColor=none;exitX=1;exitY=0.25;exitDx=0;exitDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="G0DDs08btf2AqnJ4b28P-2" target="WIyWlLk6GJQsqaUBKTNV-7" edge="1">
<mxGeometry y="10" relative="1" as="geometry">
<mxPoint as="offset" />
<mxPoint x="210" y="160" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-10" value="(Optional) Game Info" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;fontFamily=Helvetica;fontColor=default;" vertex="1" connectable="0" parent="WIyWlLk6GJQsqaUBKTNV-5">
<mxGeometry x="0.1363" y="-3" relative="1" as="geometry">
<mxPoint x="-22" y="-13" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-7" value="RequestGameInfo" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="390" y="110" width="120" height="50" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-1" value="Game Loop" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;fontFamily=Helvetica;spacing=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="215" y="80" width="160" height="20" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-14" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="G0DDs08btf2AqnJ4b28P-2" target="G0DDs08btf2AqnJ4b28P-6">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-2" value="Bot#on_step" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=12;fontColor=default;fillColor=default;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="80" y="120" width="150" height="80" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-16" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="G0DDs08btf2AqnJ4b28P-6" target="G0DDs08btf2AqnJ4b28P-15">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-17" value="Array of Actions" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;fontFamily=Helvetica;fontColor=default;" vertex="1" connectable="0" parent="G0DDs08btf2AqnJ4b28P-16">
<mxGeometry x="-0.1018" y="-1" relative="1" as="geometry">
<mxPoint x="5" y="-1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-20" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="G0DDs08btf2AqnJ4b28P-6" target="G0DDs08btf2AqnJ4b28P-19">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-6" value="perform_actions&lt;br&gt;clear_action_queue" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=12;fontColor=default;fillColor=default;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="80" y="240" width="150" height="60" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-7" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;jettySize=auto;orthogonalLoop=1;fontSize=11;endArrow=block;endFill=0;endSize=8;strokeWidth=1;shadow=0;labelBackgroundColor=none;exitX=1;exitY=0.75;exitDx=0;exitDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" target="G0DDs08btf2AqnJ4b28P-8" source="G0DDs08btf2AqnJ4b28P-2">
<mxGeometry y="10" relative="1" as="geometry">
<mxPoint as="offset" />
<mxPoint x="220" y="216" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-9" value="(Optional) Pathing/Placement" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;fontFamily=Helvetica;fontColor=default;" vertex="1" connectable="0" parent="G0DDs08btf2AqnJ4b28P-7">
<mxGeometry x="-0.1157" y="1" relative="1" as="geometry">
<mxPoint x="1" y="-9" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-8" value="RequestQuery" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="388.5" y="170" width="120" height="50" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-11" value="SC2 Client" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;fontFamily=Helvetica;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="387" y="80" width="123" height="30" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-15" value="RequestAction" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=12;fontColor=default;fillColor=default;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="390" y="240" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-27" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="G0DDs08btf2AqnJ4b28P-19" target="G0DDs08btf2AqnJ4b28P-26">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-44" value="Array Debug Cmds" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;fontFamily=Helvetica;fontColor=default;" vertex="1" connectable="0" parent="G0DDs08btf2AqnJ4b28P-27">
<mxGeometry x="-0.2" y="-4" relative="1" as="geometry">
<mxPoint x="10" y="-19" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-29" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="G0DDs08btf2AqnJ4b28P-19" target="G0DDs08btf2AqnJ4b28P-28">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-19" value="perform_debug_commands clear debug queue" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=12;fontColor=default;fillColor=default;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="75" y="328.75" width="160" height="57.5" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-26" value="RequestDebug" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=12;fontColor=default;fillColor=default;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="388.5" y="328.75" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-31" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="G0DDs08btf2AqnJ4b28P-28" target="G0DDs08btf2AqnJ4b28P-30">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-45" value="Step size" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;fontFamily=Helvetica;fontColor=default;" vertex="1" connectable="0" parent="G0DDs08btf2AqnJ4b28P-31">
<mxGeometry x="0.1176" y="-1" relative="1" as="geometry">
<mxPoint x="-20" y="-11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-33" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="G0DDs08btf2AqnJ4b28P-28" target="G0DDs08btf2AqnJ4b28P-32">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-28" value="step_foward" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=12;fontColor=default;fillColor=default;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="72.5" y="420" width="165" height="60" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-30" value="RequestStep" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=12;fontColor=default;fillColor=default;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="388.5" y="420" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-35" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="G0DDs08btf2AqnJ4b28P-32" target="G0DDs08btf2AqnJ4b28P-34">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-32" value="observation" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=12;fontColor=default;fillColor=default;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="75" y="520" width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-34" value="RequestObservation" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=12;fontColor=default;fillColor=default;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="388.5" y="520" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-43" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Helvetica;fontSize=12;fontColor=default;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="G0DDs08btf2AqnJ4b28P-36" target="G0DDs08btf2AqnJ4b28P-2">
<mxGeometry relative="1" as="geometry">
<mxPoint x="20" y="715" as="targetPoint" />
<Array as="points">
<mxPoint x="50" y="675" />
<mxPoint x="50" y="160" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-54" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Helvetica;fontSize=12;fontColor=default;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="G0DDs08btf2AqnJ4b28P-36" target="G0DDs08btf2AqnJ4b28P-40">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="155" y="770" />
<mxPoint x="155" y="770" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-36" value="&lt;div align=&quot;left&quot;&gt;virtual callbacks:&lt;br&gt;&lt;code&gt;Bot#on_actions_performed&lt;/code&gt;&lt;br&gt;&lt;code&gt;Bot#on_action_errors&lt;/code&gt;&lt;br&gt;&lt;code&gt;Bot#on_alerts&lt;/code&gt;&lt;br&gt;&lt;code&gt;Bot#on_random_race_detected&lt;/code&gt;&lt;br&gt;&lt;code&gt;Bot#on_upgrades_completed&lt;/code&gt;&lt;br&gt;&lt;code&gt;Bot#on_parse_observation_unit&lt;/code&gt;&lt;br&gt;&lt;code&gt;&lt;/code&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=default;align=left;verticalAlign=middle;fontFamily=Helvetica;fontSize=12;fontColor=default;fillColor=default;spacingLeft=4;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="75" y="610" width="240" height="130" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-40" value="Bot#on_finish" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="80" y="780" width="150" height="40" as="geometry" />
</mxCell>
<mxCell id="G0DDs08btf2AqnJ4b28P-53" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.333;entryY=0.008;entryDx=0;entryDy=0;entryPerimeter=0;fontFamily=Helvetica;fontSize=12;fontColor=default;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="G0DDs08btf2AqnJ4b28P-32" target="G0DDs08btf2AqnJ4b28P-36">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Binary file added docs/images/bot_lifecycle.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 0 additions & 1 deletion lib/sc2ai.rb
Expand Up @@ -47,7 +47,6 @@
exit
end


# noinspection RubyMismatchedArgumentType
Dir.glob(File.join(__dir__, "sc2ai", "overrides", "**", "*.rb")).each do |file|
require(file)
Expand Down

0 comments on commit 410758b

Please sign in to comment.