GithubHelp home page GithubHelp logo

battletech.net's Introduction

BattleTech.NET

A Generic .NET Library for Processing BattleTech Data

This 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).

battletech.net's People

Contributors

bronzite avatar

Watchers

 avatar  avatar

battletech.net's Issues

Update to .NET 6.0

.NET 3.1 has been deprecated and is no longer receiving updates. Update library to the available LTS branch, .NET 6.0.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.