Okay so this project is a very big project as I see it, and definitely overkill when it comes to target audience, as it won’t probably be used by more than few hundred people globally.
Still, because I’ll be one of them I really want to create it and most importantly try myself at creating something with advanced UI like drag’n’drops and adaptive interface. A big part of this endeavor is my inspiration by Roslyn and functional programming. Just this part should make following my progress interesting:
- Immutability of data structures
- Functional approach to API
- Diagnostics, analyzers
- Source processing pipeline
It might seem that what I want GodMode to be, is a kind of IDE for BattleScribe data developers – and it would be quite on point. So what am I gonna actually write?
- GodMode – WarHub.Armoury.GodMode is the IDE itself, and at first it’ll target UWP, then later maybe I’ll translate GUI into Xamarin.Forms or just Xamarin for Mac.
- wham – WarHub.Armoury.Model is the underlying library which is divided into many packages with different responsibilities like
- Source (~SyntaxTree in roslyn),
- Source.BattleScribe (implementation for BS format, ~CSharpSyntaxTree @ roslyn),
- Source.BattleScribe.Parsing (XML serialization model),
- and the core wham package itself – this’ll be a home for basic abstractions like Project, Workspace, Document, Analyzer and other important parts of pipeline.
Now you might have noticed there already are implementations for both GodMode and wham – rest assured I need to rewrite all of this 🙂 Main reason being, BattleScribe data format was hugely updated in version 2.0 and after some analysis I came to realize that it’s best to rewrite both the lib and GodMode. Also the concept of GodMode changed, as it currently is a Xamarin.Forms app. After writing it I came to conclusion that first I’ll want to create more full-featured app for UWP as it’ll be the most likely platform used – and I want to make something cool on UWP too.
Next up is a more detailed app project divided into more manageable chunks. I’m writing it right now and I probably wouldn’t if not for this blog. Happy!