Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bronzite/battletech.net
BattleTech Game Data Processing Library for .NET Standard.
https://github.com/bronzite/battletech.net
battletech
Last synced: about 1 month ago
JSON representation
BattleTech Game Data Processing Library for .NET Standard.
- Host: GitHub
- URL: https://github.com/bronzite/battletech.net
- Owner: Bronzite
- Created: 2019-08-21T22:19:23.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-12-13T23:36:02.000Z (about 1 month ago)
- Last Synced: 2024-12-14T00:25:50.988Z (about 1 month ago)
- Topics: battletech
- Language: C#
- Homepage:
- Size: 228 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# BattleTech.NET
## A Generic .NET Library for Processing BattleTech DataThis is a library of .NET Standard classes intended to aid development of
software the stores, processes, and analyzes data relating to the BattleTech
board game and its various related products.## In-Scope Documents
For the moment, we're restricting implementation to the core rulebook set, as
well as Alpha Strike. Specifically:- Total Warfare
- TechManual
- Tactical Operations
- Strategic Operations
- Interstellar Operations
- Campaign Operations
- Alpha Strike
- BattleMech Manual## Test Cases
The BattleTechNETTests Project contains xUnit tests intended to verify that the
processing in the application runs as expected. In addition to the normal
tests one expects of a library, we would also like to encode all written
examples in the core rulebooks to ensure that this library's output matches the
expected results from the definitive documents (errata applied.)## Contribution and Style Guidelines
If you intend to contribute code, I am happy to review it. I will ask a
couple of things for the sake of consistency, although I understand that it
will conflict with some developer's coding style.### 1. Strong Typing
I really insist whenever a variable is declared that it is given a non-variant
datatype. Besides helping syntactically to detect when an improper value is
being passed, it also helps when reading the declarations to know what value
will be going into a variable, and understanding what it is going to do.### 2. Title Case Classes, Properties, and Methods
Classes, Properties, and Methods should always be named with Title Case -- that
is, capitializing the first letter of each word that makes up the class name.
Where applicable, this applies to articles and conjunctions.### 3. Prohibition on LINQ
I know this is going anger a lot of developers, but LINQ really doesn't have a
place in this project. Although it is undeniably splendid for database
transfer code and dynamically writing queries, it represents a pretty
significant barrier for both new and very old programmers to understand the
nuances and subtleties, to say nothing of the stylistics permutations different
developers embrace. We don't need LINQ for this project, so over the side it
goes.### 4. Rules Citation
Whereever practical, please cite a rules reference in comments for the code you
are writing. This can usually just be an acronym of the book followed by a
page number (for instance, SO217 for Strategic Operations, page 217.) This
really helps with validaating where a particular rule came from, especially
when clarifying contradictory or strangely interacting rules.If you are citing Tactical Operations or Interstellar Operations from after
those books were separated, be sure to include their subtitled abbreviation
(TO:AR for Tactical Operations: Advance Rules, TO:AUE for Tactical Operations:
Advanced Units and Equipment, IO:AE for Interstellar Operations:Alternate Eras,
and IO:BF for Interstellar Operations:BattleForce.)### 5. Id Is Mixed-Case
For the sake of consistency, an identification field named Id is mixed-case,
and should never be ID or id. If you need to use a local variable to hold an
Id number, add more characters to the variable name to define what it is (for
example, CurrentUnitId).