1#ifndef OSL_NUM_SIMPLE_EFFECT_TCC
2#define OSL_NUM_SIMPLE_EFFECT_TCC
4#include "osl/bits/numSimpleEffect.h"
5#include "osl/bits/king8Info.h"
6#include "osl/bits/pieceTable.h"
10template<osl::effect::NumBitmapEffect::Op OP,bool UC>
12NumSimpleEffectTable::doEffect(const SimpleState& state,PtypeO ptypeo,Square pos,int num)
15 case NEW_PTYPEO(WHITE,PAWN): doEffectBy<WHITE,PAWN,OP,UC>(state,pos,num); break;
16 case NEW_PTYPEO(WHITE,LANCE): doEffectBy<WHITE,LANCE,OP,UC>(state,pos,num); break;
17 case NEW_PTYPEO(WHITE,KNIGHT): doEffectBy<WHITE,KNIGHT,OP,UC>(state,pos,num); break;
18 case NEW_PTYPEO(WHITE,SILVER): doEffectBy<WHITE,SILVER,OP,UC>(state,pos,num); break;
19 case NEW_PTYPEO(WHITE,PPAWN):
20 case NEW_PTYPEO(WHITE,PLANCE):
21 case NEW_PTYPEO(WHITE,PKNIGHT):
22 case NEW_PTYPEO(WHITE,PSILVER):
23 case NEW_PTYPEO(WHITE,GOLD): doEffectBy<WHITE,GOLD,OP,UC>(state,pos,num); break;
24 case NEW_PTYPEO(WHITE,BISHOP): doEffectBy<WHITE,BISHOP,OP,UC>(state,pos,num); break;
25 case NEW_PTYPEO(WHITE,PBISHOP): doEffectBy<WHITE,PBISHOP,OP,UC>(state,pos,num); break;
26 case NEW_PTYPEO(WHITE,ROOK): doEffectBy<WHITE,ROOK,OP,UC>(state,pos,num); break;
27 case NEW_PTYPEO(WHITE,PROOK): doEffectBy<WHITE,PROOK,OP,UC>(state,pos,num); break;
28 case NEW_PTYPEO(WHITE,KING): doEffectBy<WHITE,KING,OP,UC>(state,pos,num); break;
29 case NEW_PTYPEO(BLACK,PAWN): doEffectBy<BLACK,PAWN,OP,UC>(state,pos,num); break;
30 case NEW_PTYPEO(BLACK,LANCE): doEffectBy<BLACK,LANCE,OP,UC>(state,pos,num); break;
31 case NEW_PTYPEO(BLACK,KNIGHT): doEffectBy<BLACK,KNIGHT,OP,UC>(state,pos,num); break;
32 case NEW_PTYPEO(BLACK,SILVER): doEffectBy<BLACK,SILVER,OP,UC>(state,pos,num); break;
33 case NEW_PTYPEO(BLACK,PPAWN):
34 case NEW_PTYPEO(BLACK,PLANCE):
35 case NEW_PTYPEO(BLACK,PKNIGHT):
36 case NEW_PTYPEO(BLACK,PSILVER):
37 case NEW_PTYPEO(BLACK,GOLD): doEffectBy<BLACK,GOLD,OP,UC>(state,pos,num); break;
38 case NEW_PTYPEO(BLACK,BISHOP): doEffectBy<BLACK,BISHOP,OP,UC>(state,pos,num); break;
39 case NEW_PTYPEO(BLACK,PBISHOP): doEffectBy<BLACK,PBISHOP,OP,UC>(state,pos,num); break;
40 case NEW_PTYPEO(BLACK,ROOK): doEffectBy<BLACK,ROOK,OP,UC>(state,pos,num); break;
41 case NEW_PTYPEO(BLACK,PROOK): doEffectBy<BLACK,PROOK,OP,UC>(state,pos,num); break;
42 case NEW_PTYPEO(BLACK,KING): doEffectBy<BLACK,KING,OP,UC>(state,pos,num); break;
48template<osl::Player P, osl::Ptype T, osl::effect::NumBitmapEffect::Op OP,bool UC>
50NumSimpleEffectTable::doEffectBy(const SimpleState& state,Square pos,int num)
53 if(T==LANCE || T==BISHOP || T==PBISHOP || T==ROOK || T==PROOK)
54 setChangedPieces(NumBitmapEffect::makeLongEffect<P>(num));
56 setChangedPieces(NumBitmapEffect::makeEffect<P>(num));
58 doEffectShort<P,T,UL,OP,UC>(state,pos,num);
59 doEffectShort<P,T,U,OP,UC>(state,pos,num);
60 doEffectShort<P,T,UR,OP,UC>(state,pos,num);
61 doEffectShort<P,T,L,OP,UC>(state,pos,num);
62 doEffectShort<P,T,R,OP,UC>(state,pos,num);
63 doEffectShort<P,T,DL,OP,UC>(state,pos,num);
64 doEffectShort<P,T,D,OP,UC>(state,pos,num);
65 doEffectShort<P,T,DR,OP,UC>(state,pos,num);
66 doEffectShort<P,T,UUL,OP,UC>(state,pos,num);
67 doEffectShort<P,T,UUR,OP,UC>(state,pos,num);
68 doEffectLong<P,T,LONG_UL,OP,UC>(state,pos,num);
69 doEffectLong<P,T,LONG_U,OP,UC>(state,pos,num);
70 doEffectLong<P,T,LONG_UR,OP,UC>(state,pos,num);
71 doEffectLong<P,T,LONG_L,OP,UC>(state,pos,num);
72 doEffectLong<P,T,LONG_R,OP,UC>(state,pos,num);
73 doEffectLong<P,T,LONG_DL,OP,UC>(state,pos,num);
74 doEffectLong<P,T,LONG_D,OP,UC>(state,pos,num);
75 doEffectLong<P,T,LONG_DR,OP,UC>(state,pos,num);
78#endif /* OSL_NUM_SIMPLE_EFFECT_TCC */
79// ;;; Local Variables:
81// ;;; c-basic-offset:2