// This file is distributed under a BSD license. See LICENSE.txt for details.

#include "kdoc.hpp"
#include "genbitmap.hpp"
#include "genmaterial.hpp"
#include "genmesh.hpp"
#include "genminmesh.hpp"
#include "genoverlay.hpp"
#include "genscene.hpp"
#include "geneffect.hpp"
#include "geneffectex.hpp"
#include "geneffectdebris.hpp"
#include "geneffectipp.hpp"
#include "genblobspline.hpp"
#include "gengeloet.hpp"

//#include "kkriegergame.hpp"

 
KHandler KHandlers[] =
{
  // misc
  //0x01, Init_Misc_Load,         Exec_Misc_Load,             // load
  //0x02, Init_Misc_Nop,          Exec_Misc_Nop,              // store
  //0x03, Init_Misc_Nop,          Exec_Misc_Nop,              // nop
  //0x05, Init_Misc_Nop,          Exec_Misc_Time,             // time
  0x06, Init_Misc_Event,        Exec_Misc_Event,            // event
//  0x07, Init_Misc_Trigger,      Exec_Misc_Trigger,          // trigger
//  0x08, Init_Misc_Nop,          Exec_Misc_Delay,            // delay
//  0x09, Init_Misc_Nop,          Exec_Misc_If,               // if
//  0x0a, Init_Misc_Nop,          Exec_Misc_SetIf,            // setif
//  0x0b, Init_Misc_Nop,          Exec_Misc_State,            // state
//  0x0c, Init_Misc_Nop,          Exec_Misc_PlaySample,       // play sample
  0x0d, Init_Misc_Demo,         Exec_Misc_Demo,             // demo 
//  0x0e, Init_Misc_Nop,          Exec_Misc_Menu,             // menu
//  0x0f, Init_Misc_MasterCam,    Exec_Misc_MasterCam,        // set master camera

  // kkrieger
//  0x10, Init_KKrieger_Para,     Exec_KKrieger_Para,         // KKriegerPara
//  0x11, Init_KKrieger_Monster,  Exec_KKrieger_Monster,      // KKriegerMonster
//  0x12, Init_KKrieger_Events,   Exec_KKrieger_Events,       // KKriegerEvents
//  0x13, Init_KKrieger_Respawn,  Exec_KKrieger_Respawn,
//  0x14, Init_KKrieger_SplashDamage,  Exec_KKrieger_SplashDamage,
//  0x15, Init_KKrieger_MonsterFlags,  Exec_KKrieger_MonsterFlags,

  0x18, Init_Misc_Spline,       Exec_Misc_Nop,              // spline
//  0x19, Init_Misc_Shaker,       Exec_Misc_Nop,              // shaker
//  0x1a, Init_Misc_PipeSpline,   Exec_Misc_Nop,              // the kasparov operator

  // bitmap
  0x21, Bitmap_Flat,            Exec_Misc_Nop,              // flat
  0x22, Bitmap_Perlin,          Exec_Misc_Nop,              // perlin
  0x23, Bitmap_Color,           Exec_Misc_Nop,              // color
  0x24, Bitmap_Merge,           Exec_Misc_Nop,              // merge
  0x25, Bitmap_Format,          Exec_Misc_Nop,              // format
  0x26, Bitmap_RenderTarget,    Exec_Misc_Nop,              // render target
//  0x27, Bitmap_GlowRect,        Exec_Misc_Nop,              // glowrect (old)
  0x28, Bitmap_Dots,            Exec_Misc_Nop,              // dots
  0x29, Bitmap_Blur,            Exec_Misc_Nop,              // blur
//  0x2a, Bitmap_Mask,            Exec_Misc_Nop,              // mask
  0x2b, Bitmap_HSCB,            Exec_Misc_Nop,              // hscb
  0x2c, Bitmap_Rotate,          Exec_Misc_Nop,              // rotate
  0x2d, Bitmap_Distort,         Exec_Misc_Nop,              // distort
  0x2e, Bitmap_Normals,         Exec_Misc_Nop,              // normals
//  0x2f, Bitmap_Light,           Exec_Misc_Nop,              // light
//  0x30, Bitmap_Bump,            Exec_Misc_Nop,              // bump
  0x31, Bitmap_Text,            Exec_Misc_Nop,              // text
//  0x32, Bitmap_Cell,            Exec_Misc_Nop,              // cell
//  0x33, Bitmap_Wavelet,         Exec_Misc_Nop,              // wavelet
//  0x34, Bitmap_Gradient,        Exec_Misc_Nop,              // gradient
//  0x35, Bitmap_Range,           Exec_Misc_Nop,              // range
  0x36, Bitmap_RotateMul,       Exec_Misc_Nop,              // rotatemul
//  0x37, Bitmap_Twirl,           Exec_Misc_Nop,              // twirl
//  0x38, Bitmap_Sharpen,         Exec_Misc_Nop,              // sharpen
  0x39, Bitmap_GlowRect,        Exec_Misc_Nop,              // glowrect
//  0x3a, Bitmap_Import,          Exec_Misc_Nop,              // import
//  0x3b, Bitmap_ColorBalance,    Exec_Misc_Nop,              // color balance
//  0x3c, Bitmap_Unwrap,          Exec_Misc_Nop,              // unwrap
//  0x3d, Bitmap_Bricks,          Exec_Misc_Nop,              // bricks
//  0x3e, Bitmap_Bulge,           Exec_Misc_Nop,              // bulge
//  0x3f, Bitmap_Render,          Exec_Bitmap_Render,         // render
//  0x40, Bitmap_RenderAuto,      Exec_Bitmap_RenderAuto,     // render auto

  // effecte
//  0x60, Init_Effect_Dummy,      Exec_Effect_Dummy,          // dummy-effect
//  0x61, Init_Effect_Print,      Exec_Effect_Print,          // print text/menu
  0x63, Init_Effect_PartEmitter,Exec_Effect_PartEmitter,    // particles
  0x64, Init_Effect_PartSystem, Exec_Effect_PartSystem,     // particles
//  0x65, Init_Effect_Chaos1,     Exec_Effect_Chaos1,         // Chaos1 (misc experimental stuff)
//  0x66, Init_Effect_Tourque,    Exec_Effect_Tourque,        // Tourque (experimental effect)
//  0x67, Init_Effect_Stream,     Exec_Effect_Stream,         // Stream (experimental effect)
//  0x68, Init_Effect_ImageLayer, Exec_Effect_ImageLayer,     // Image Layer (for bp06 invi)
//  0x69, Init_Effect_Billboards, Exec_Effect_Billboards,     // Billboard Imposters
//  0x6a, Init_Effect_WalkTheSpline,Exec_Effect_WalkTheSpline,// WalkTheSpline (for debris)
//  0x6b, Init_Effect_ChainLine,  Exec_Effect_ChainLine,      // ChainLine
//  0x6c, Init_Effect_JPEG,       Exec_Effect_JPEG,           // aRTifakktory
//  0x6d, Init_Effect_LineShuffle,Exec_Effect_LineShuffle,    // LineShuffle

//  0x71,  Init_Effect_Geloet2D,    Exec_Effect_Geloet2D,       // Geloet2d
//  0x72,  Init_Effect_GeloetMesh,  Exec_Effect_GeloetMesh,     // GeloetMesh

  // mesh
//  0x81, Mesh_Cube,              Exec_Misc_Nop,              // cube
//  0x82, Mesh_Cylinder,          Exec_Misc_Nop,              // cylinder
//  0x83, Mesh_Torus,             Exec_Misc_Nop,              // torus
//  0x84, Mesh_Sphere,            Exec_Misc_Nop,              // sphere
//  0x85, Mesh_SelectAll,         Exec_Misc_Nop,              // select all
//  0x86, Mesh_SelectCube,        Exec_Misc_Nop,              // select cube
//  0x87, Mesh_Subdivide,         Exec_Misc_Nop,              // subdivide
//  0x88, Mesh_Transform,         Exec_Misc_Nop,              // transform
//  0x89, Mesh_TransformEx,       Exec_Misc_Nop,              // transformex
//  0x8a, Mesh_Crease,            Exec_Misc_Nop,              // crease
//  0x8b, Mesh_UnCrease,          Exec_Misc_Nop,              // uncrease
//  0x8c, Mesh_Triangulate,       Exec_Misc_Nop,              // triangulate
//  0x8d, Mesh_Cut,               Exec_Misc_Nop,              // cut
//  0x8e, Mesh_ExtrudeNormal,     Exec_Misc_Nop,              // extrudenormal
//  0x8f, Mesh_Displace,          Exec_Misc_Nop,              // displace
//  0x90, Mesh_Bevel,             Exec_Misc_Nop,              // bevel
//  0x91, Mesh_Perlin,            Exec_Misc_Nop,              // perlin
//  0x92, Mesh_Add,               Exec_Misc_Nop,              // add
//  0x93, Mesh_DeleteFaces,       Exec_Misc_Nop,              // delete faces
//  0x94, Mesh_SelectRandom,      Exec_Misc_Nop,              // select random
//  0x95, Mesh_Multiply,          Exec_Misc_Nop,              // multiply
//  0x96, Mesh_MatLink,           Exec_Misc_Nop,              // matlink
////  0x99, Mesh_BeginRecord,       Exec_Misc_Nop,              // beginrec
//  0x9a, Mesh_Extrude,           Exec_Misc_Nop,              // extrude
////  0x9c, Mesh_CollisionCube,     Exec_Misc_Nop,              // collcube
//  0x9d, Mesh_Grid,              Exec_Misc_Nop,              // grid
//  0xa0, Mesh_Bend,              Exec_Misc_Nop,              // bend
//  0xa1, Mesh_SelectLogic,       Exec_Misc_Nop,              // select logic
//  0xa2, Mesh_SelectGrow,        Exec_Misc_Nop,              // select grow
//  0xa3, Mesh_Invert,            Exec_Misc_Nop,              // invert
//  0xa4, Mesh_SetPivot,          Exec_Misc_Nop,              // set pivot
//  0xa5, Mesh_UVProjection,      Exec_Misc_Nop,              // uvproject
//  0xa6, Mesh_Center,            Exec_Misc_Nop,              // center
////  0xa7, Mesh_AutoCollision,     Exec_Misc_Nop,              // autocoll
//  0xa8, Mesh_SelectSphere,      Exec_Misc_Nop,              // selectsphere
//  0xa9, Mesh_SelectFace,        Exec_Misc_Nop,              // selectface
//  0xaa, Mesh_SelectAngle,       Exec_Misc_Nop,              // selectangle
//  0xab, Mesh_Bend2,             Exec_Misc_Nop,              // bend 2
//  0xac, Mesh_SmoothAngle,       Exec_Misc_Nop,              // smangle
//  0xad, Mesh_Color,             Exec_Misc_Nop,              // color
////  0xae, Mesh_BendS,             Exec_Misc_Nop,              // bend spline
//  0xaf, Mesh_LightSlot,         Exec_Misc_Nop,              // light slot
//  0xb0, Mesh_ShadowEnable,      Exec_Misc_Nop,              // shadowenable
//  0xb3, Mesh_SingleVert,        Exec_Misc_Nop,              // single vertex
//  0xb4, Mesh_Multiply2,         Exec_Misc_Nop,              // multiply 2
//  0xb5, Mesh_ToMin,             Exec_Misc_Nop,              // genmesh to genminmesh
 
  // scene
  0xc0, Init_Scene_Scene,       Exec_Scene_Scene,           // scene
  0xc1, Init_Scene_Add,         Exec_Scene_Add,             // add
  0xc2, Init_Scene_Multiply,    Exec_Scene_Multiply,        // multiply
  0xc3, Init_Scene_Transform,   Exec_Scene_Transform,       // transform
  0xc4, Init_Scene_Light,       Exec_Scene_Light,           // light
  0xc5, Init_Scene_Particles,   Exec_Scene_Particles,       // scene multply particles
//  0xc6, Init_Scene_Camera,      Exec_Scene_Camera,          // camera

//  0xc7, Init_Scene_Limb,        Exec_Scene_Limb,            // limb
//  0xc8, Init_Scene_Walk,        Exec_Scene_Walk,            // walk
//  0xc9, Init_Scene_Rotate,      Exec_Scene_Rotate,          // rotate
//  0xca, Init_Scene_Forward,     Exec_Scene_Forward,         // forward
//  0xcb, Init_Scene_Sector,      Exec_Scene_Sector,          // sector
//  0xcd, Init_Scene_Portal,      Exec_Scene_Portal,          // portal
//  0xce, Init_Scene_Physic,      Exec_Scene_Physic,          // physic

  // material
  0xd0, Init_Material_Material, Exec_Material_Material,     // material
  0xd1, Material_Add,           Exec_Misc_Nop,              // add material
  0xd2, Init_Scene_MatHack,     Exec_Scene_MatHack,         // link material for animation
  0xd3, Init_Material_Material20, Exec_Material_Material20, // material 2.0

  // ipp
//  0xe2, Init_IPP_Copy,          Exec_IPP_Copy,              // copy
  0xe3, Init_IPP_Blur,          Exec_IPP_Blur,              // blur
//  0xe4, Init_IPP_Crashzoom,     Exec_IPP_Crashzoom,         // crashzoom
//  0xe5, Init_IPP_Sharpen,       Exec_IPP_Sharpen,           // sharpen
//  0xe6, Init_IPP_Color,         Exec_IPP_Color,             // color
//  0xe7, Init_IPP_Merge,         Exec_IPP_Merge,             // merge
//  0xe8, Init_IPP_Mask,          Exec_IPP_Mask,              // mask
  0xe9, Init_IPP_Layer2D,       Exec_IPP_Layer2D,           // layer2d
  0xea, Init_IPP_Select,        Exec_IPP_Select,            // select
  0xeb, Init_IPP_RenderTarget,  Exec_IPP_RenderTarget,      // render target
//  0xed, Init_IPP_JPEG,          Exec_IPP_JPEG,              // JPEG
  0xf0, Init_IPP_Viewport,      Exec_IPP_Viewport,          // viewport

  // minmesh
//  0x100, MinMesh_SingleVert,    Exec_Misc_Nop,              // single vert
  0x101, MinMesh_Grid,          Exec_Misc_Nop,              // grid
  0x102, MinMesh_Cube,          Exec_Misc_Nop,              // cube
  0x103, MinMesh_Torus,         Exec_Misc_Nop,              // torus
  0x104, MinMesh_Sphere,        Exec_Misc_Nop,              // sphere
  0x105, MinMesh_Cylinder,      Exec_Misc_Nop,              // cylinder
//  0x106, MinMesh_XSI,           Exec_Misc_Nop,              // xsi

  0x110, MinMesh_MatLink,       Exec_Misc_Nop,              // matlink
  0x111, MinMesh_Add,           Exec_Misc_Nop,              // add
  0x112, MinMesh_SelectAll,     Exec_Misc_Nop,              // select all
  0x113, MinMesh_SelectCube,    Exec_Misc_Nop,              // select cube
  0x114, MinMesh_DeleteFaces,   Exec_Misc_Nop,              // delete faces
  0x115, MinMesh_Invert,        Exec_Misc_Nop,              // invert
//  0x116, MinMesh_MatLinkId,     Exec_Misc_Nop,              // matlink
//  0x117, MinMesh_MatLink,       Exec_Misc_Nop,              // matinput

  0x120, MinMesh_TransformEx,   Exec_Misc_Nop,              // transform
  0x121, MinMesh_TransformEx,   Exec_Misc_Nop,              // transform ex
//  0x122, MinMesh_ExtrudeNormal, Exec_Misc_Nop,              // extrude normal
  0x123, MinMesh_Displace,      Exec_Misc_Nop,              // displace
  0x124, MinMesh_Perlin,        Exec_Misc_Nop,              // perlin
//  0x125, MinMesh_Bend2,         Exec_Misc_Nop,              // bend 2
  0x126, MinMesh_Extrude,       Exec_Misc_Nop,              // extrude
  //0x127, MinMesh_BakeAnimation, Exec_Misc_Nop,              // bake animation
  0x128, MinMesh_BoneChain,     Exec_Misc_Nop,              // bone chain
  0x129, MinMesh_BoneTrain,     Exec_Misc_Nop,              // bone train
  //0x12a, MinMesh_Triangulate,   Exec_Misc_Nop,              // triangulate
  //0x12c, MinMesh_Pipe,          Exec_Misc_Nop,              // pipe
  //0x12d, MinMesh_ScaleAnim,     Exec_Misc_Nop,              // scale anim
  //0x12e, MinMesh_RenderAutoMap,   Exec_Misc_Nop,              // renderautomap
  0x12f, MinMesh_Multiply,        Exec_Misc_Nop,              // multiply
  //0x130, MinMesh_Multiply2,       Exec_Misc_Nop,              // multiply 2
  //0x131, MinMesh_Center,          Exec_Misc_Nop,              // center
  //0x132, MinMesh_SelectLogic,     Exec_Misc_Nop,              // select logic
  //0x133, MinMesh_Font3D,          Exec_Misc_Nop,              // font3d

  //0x180, Init_Scene_AdjustPass, Exec_Scene_AdjustPass,      // adjust pass
  //0x181, Init_Scene_ApplySpline,Exec_Scene_ApplySpline,     // apply spline
  //0x182, Init_Scene_Marker     ,Exec_Scene_Marker,          // set marker
  //0x183, Init_Scene_Ambient,    Exec_Scene_Ambient,         // ambient

  //0x190, Bitmap_Geloet,           Exec_Misc_Nop,              // GeloetTex

  // end!
  0,0,0,
};
