camelot-unchained
Version:
Camelot Unchained Client Library
77 lines (64 loc) • 2.1 kB
text/typescript
/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
import abilityTags from '../constants/abilityConstants/abilityTags';
import componentType from '../constants/abilityConstants/componentType';
import componentPath from '../constants/abilityConstants/componentPath';
import componentSubType from '../constants/abilityConstants/componentSubType';
import componentBranchState from '../constants/abilityConstants/componentBranchState';
import stats from './Stats';
export class ComponentBranch {
parts: any[];
state: componentBranchState;
}
export interface ComponentSlot {
type: componentType;
subType: componentSubType;
x: number;
y: number;
parents: ComponentSlot[];
children: ComponentSlot[];
branch: ComponentBranch;
component: AbilityComponent;
isDisabled: boolean;
tooltip: string;
originalSubType: componentSubType;
queuedAnimation: string;
}
export class AbilityComponent {
cooldown: number;
duration: number;
tooltip: string;
id: string;
baseComponentID: number;
name: string;
description: string;
icon: string;
type: componentType;
subType: componentSubType;
path: componentPath;
abillityStats: stats; //TODO use Stats from Character ?�
abilityTags: abilityTags[];
//tagConstraints: Array<TagConstraint>;
slot: ComponentSlot;
rank: number;
isTrained: boolean;
isHalted: boolean;
constructor(abilityComponent = <AbilityComponent>{}) {
this.id = abilityComponent.id || "";
this.icon = abilityComponent.icon || "";
this.cooldown = abilityComponent.cooldown || 0;
this.duration = abilityComponent.duration || 0;
this.name = abilityComponent.name || "";
this.tooltip = abilityComponent.tooltip || "";
this.abilityTags = abilityComponent.abilityTags || <abilityTags[]>[];
//....
}
static create() {
let a = new AbilityComponent();
return a;
}
}
export default AbilityComponent;