class CharacterOrigin { public id : string; public name : string; public description : string | Say; public bonusStats : string; public confirmPicked : (() => void) = () => {}; public constructor (id : string) { this.id = id; CharacterOrigin.storeOrigin(this); } public static origins : {[id : string] : CharacterOrigin} = {}; public static storeOrigin (origin : CharacterOrigin) { CharacterOrigin.origins[origin.id] = origin; } public static getOrigin (id : string) { return CharacterOrigin.origins[id]; } public static getOrigins () : Array { let origins = []; for (let id in CharacterOrigin.origins) { origins.push(CharacterOrigin.origins[id]); } origins.sort((a : CharacterOrigin, b : CharacterOrigin) => { let na = a.name.toUpperCase(); let nb = b.name.toUpperCase(); if (na < nb) return -1; if (na > nb) return 1; return 0; }); return origins; } }