Ever seen the top of the animation stop function of the Manialink lib? I feel sorry for the guy who had to hack it this way:
Code: Select all
Void LibManialink_AnimStop(CMlControl _Control, Integer _AnimId) {
declare Integer[Integer] LibManialink_AnimQueue for _Control;
declare Integer[Integer] LibManialink_AnimStarTime for _Control;
declare Integer[Integer] LibManialink_AnimDuration for _Control;
declare Integer[Integer] LibManialink_AnimEndTime for _Control;
declare Text[Integer] LibManialink_AnimEasing for _Control;
declare Text[Integer] LibManialink_Visibility for _Control;
declare Boolean[Integer] LibManialink_AnimRunning for _Control;
declare Integer[Integer] LibManialink_AnimStyle for _Control;
declare Boolean[][Integer] LibManialink_AnimActive for _Control;
declare Integer[Integer] LibManialink_AnimReapeatTime for _Control;
declare Integer[Integer] LibManialink_AnimReapeatNb for _Control;
declare Vec3[Integer] LibManialink_AnimStart_Position for _Control;
declare Vec2[Integer] LibManialink_AnimStart_Size for _Control;
declare Real[Integer] LibManialink_AnimStart_Scale for _Control;
declare Real[Integer] LibManialink_AnimStart_Rotation for _Control;
declare Real[Integer] LibManialink_AnimStart_Opacity for _Control;
declare Vec3[Integer] LibManialink_AnimStart_Colorize for _Control;
declare Vec3[Integer] LibManialink_AnimStart_BgColor for _Control;
declare Vec3[Integer] LibManialink_AnimStart_TextColor for _Control;
declare Real[Integer] LibManialink_AnimStart_Ratio for _Control;
declare Vec3[Integer] LibManialink_AnimStart_GaugeColor for _Control;
declare Vec3[Integer] LibManialink_AnimEnd_Position for _Control;
declare Vec2[Integer] LibManialink_AnimEnd_Size for _Control;
declare Real[Integer] LibManialink_AnimEnd_Scale for _Control;
declare Real[Integer] LibManialink_AnimEnd_Rotation for _Control;
declare Real[Integer] LibManialink_AnimEnd_Opacity for _Control;
declare Vec3[Integer] LibManialink_AnimEnd_Colorize for _Control;
declare Vec3[Integer] LibManialink_AnimEnd_BgColor for _Control;
declare Vec3[Integer] LibManialink_AnimEnd_TextColor for _Control;
declare Real[Integer] LibManialink_AnimEnd_Ratio for _Control;
declare Vec3[Integer] LibManialink_AnimEnd_GaugeColor for _Control;
declare Vec3[Integer] LibManialink_AnimDiff_Position for _Control;
declare Vec2[Integer] LibManialink_AnimDiff_Size for _Control;
declare Real[Integer] LibManialink_AnimDiff_Scale for _Control;
declare Real[Integer] LibManialink_AnimDiff_Rotation for _Control;
declare Real[Integer] LibManialink_AnimDiff_Opacity for _Control;
declare Vec3[Integer] LibManialink_AnimDiff_Colorize for _Control;
declare Vec3[Integer] LibManialink_AnimDiff_BgColor for _Control;
declare Vec3[Integer] LibManialink_AnimDiff_TextColor for _Control;
declare Real[Integer] LibManialink_AnimDiff_Ratio for _Control;
declare Vec3[Integer] LibManialink_AnimDiff_GaugeColor for _Control;
...
In the end it's seriously a pain to work without any way to declare custom structures. One way to support this are hashtables and variants, but a lot of things will do. A better way is of course defining an API for an existing language, but since Nadeo prefers to reinvent the wheel, this won't happen

Large things like this and a lacking API make ManiaScript much less powerful than it can be.