123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /// <reference path="../../../_shared/Initializing.ts"/>
- const enum moodletTimeMode{
- Continuous,
- Resetting,
- Lasting
- }
- const enum moodletAccumulationMode{
- ADD,
- HIGHEST,
- LOWEST,
- DIMINISHING,
- DIMINISHING_REVERSE
- }
- class Moodlet extends Initializing{
- id:string;
- title:string='Title Missing';
- groupId:string= 'none';
- description:string= 'Description Missing';
- effect:number=0;
- timeConversion:number=0;
- timeMode:moodletTimeMode= moodletTimeMode.Resetting;
- duration:number=60;
- maxDuration:number=0;
- includes:Array<string>=[];
- static get(moodletId:string):Moodlet{
- let result = setup.moodlets[moodletId] ?? new NullMoodlet();
- result.id = moodletId;
- return result;
- }
-
- constructor(initialData:object={}){
- super(initialData);
- }
-
- }
- class ActiveMoodlet extends Moodlet{
- //expiration:Date;
- private dynamicDataReferecne;
- static create(moodletId:string,dynamicData:object):ActiveMoodlet{
- let staticMoodlet = Moodlet.get(moodletId) as ActiveMoodlet;
- let dynamicMoodlet = new ActiveMoodlet(staticMoodlet);
- dynamicMoodlet.dynamicDataReferecne = dynamicData;
- return dynamicMoodlet;
- }
- get expiration():Date{
- return this.dynamicDataReferecne.expiration ?? State.variables.time.endTime;
- }
- get isActive(){
- const time = State.variables.time;
- return time.isFuture(this.expiration);
- }
- }
- class PainMoodlet extends ActiveMoodlet{
- static createPainMoodlet(pain:number):ActiveMoodlet{
- if(pain <= 0)
- return new NullMoodlet();
- let result = new PainMoodlet(Moodlet.get('pain'));
- result.effect = Math.round(pain * -1);
- return result;
- }
- }
- class NullMoodlet extends ActiveMoodlet{
- }
- class MoodletGroup extends Initializing{
- id:string;
- accumulationMode: moodletAccumulationMode;
- diminishFactor:0;
- static get(moodletGroupId:string):MoodletGroup{
- let result = setup.moodletGroups[moodletGroupId] ?? new NullMoodletGroup();
- result.id = moodletGroupId;
- return result;
- }
- constructor(initialData:object={}){
- super(initialData);
- }
- }
- class NullMoodletGroup extends MoodletGroup{
- }
- setup.moodlets ??= {};
- setup.moodletGroups ??= {};
- setup.moodletGroups.none = new MoodletGroup({
- accumulationMode: moodletAccumulationMode.ADD
- });
- setup.moodletGroups.pain = new MoodletGroup({
- accumulationMode: moodletAccumulationMode.LOWEST
- });
|