// Create an new tile
// \param id Tile index (eg: a1)
-// \param minig Owner minigame instance
+// \param minig Owner minigame instance
// \param distance Distance from adjacent tiles
void nmm_spawn_tile(string id, entity minig, int distance)
{
}
// Create a tile square and recursively create inner squares
-// \param minig Owner minigame instance
+// \param minig Owner minigame instance
// \param offset Index offset (eg: 1 to start the square at b2, 0 at a1 etc.)
// \param skip Number of indices to skip between tiles (eg 1: a1, a3)
void nmm_spawn_tile_square( entity minig, int offset, int skip )
}
letter += skip+1;
}
-
+
if ( skip > 0 )
nmm_spawn_tile_square(minig,offset+1,skip-1);
}
// Check whether two tiles are adjacent
bool nmm_tile_adjacent(entity tile1, entity tile2)
{
-
+
int dnumber = fabs ( minigame_tile_number(tile1.netname) - minigame_tile_number(tile2.netname) );
int dletter = fabs ( minigame_tile_letter(tile1.netname) - minigame_tile_letter(tile2.netname) );
-
+
return ( dnumber == 0 && ( dletter == 1 || dletter == tile1.nmm_tile_distance ) ) ||
( dletter == 0 && ( dnumber == 1 || dnumber == tile1.nmm_tile_distance ) );
}
{
entity e = world;
while ( ( e = findentity(e,owner,tile.owner) ) )
- if ( e.classname == "minigame_nmm_tile" && !e.nmm_tile_piece
+ if ( e.classname == "minigame_nmm_tile" && !e.nmm_tile_piece
&& nmm_tile_adjacent(e,tile) )
{
return true;
// Check if a tile is in a mill
bool nmm_in_mill(entity tile)
{
- return tile.nmm_tile_piece && (
+ return tile.nmm_tile_piece && (
nmm_in_mill_string(tile,tile.nmm_tile_hmill) ||
nmm_in_mill_string(tile,tile.nmm_tile_vmill) );
}
{
entity e = start;
while ( ( e = findentity(e,owner,minigame) ) )
- if ( e.classname == "minigame_board_piece" &&
+ if ( e.classname == "minigame_board_piece" &&
(e.minigame_flags & pieceflags) && e.team == teamn )
return e;
return world;
e.team = 2;
e.minigame_flags = NMM_PIECE_HOME;
}
-
+
return 1;
}
else if ( event == "end" )
entity tile = world;
entity piece = world;
bool move_ok = false;
-
- if ( e && argc >= 2 && argv(0) == "move" &&
+
+ if ( e && argc >= 2 && argv(0) == "move" &&
( minigame.minigame_flags & NMM_TURN_TEAM ) == e.team )
{
tile = nmm_find_tile(minigame,argv(1));
move_ok = true;
}
}
-
+
}
else if ( minigame.minigame_flags & NMM_TURN_FLY )
{
move_ok = true;
}
}
-
+
}
else if ( minigame.minigame_flags & NMM_TURN_TAKE )
{
move_ok = true;
}
}
-
+
int nextteam = e.team % 2 + 1;
int npieces = nmm_count_pieces(minigame,nextteam,NMM_PIECE_HOME|NMM_PIECE_BOARD);
-
+
if ( npieces < 3 )
{
minigame.minigame_flags = NMM_TURN_WIN | e.team;
nmm_boardpos = pos;
nmm_boardsize = mySize;
minigame_hud_simpleboard(pos,mySize,minigame_texture("nmm/board"));
-
+
vector tile_size = minigame_hud_denormalize_size('1 1 0'/7,pos,mySize);
vector tile_pos;
entity e;
if ( e.classname == "minigame_nmm_tile" )
{
tile_pos = minigame_hud_denormalize(e.origin,pos,mySize);
-
+
if ( e == nmm_fromtile )
{
minigame_drawpic_centered( tile_pos, minigame_texture("nmm/tile_active"),
minigame_drawpic_centered( tile_pos, minigame_texture("nmm/tile_available"),
tile_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL );
}
-
+
if ( e == nmm_currtile )
{
minigame_drawpic_centered( tile_pos, minigame_texture("nmm/tile_selected"),
tile_size, '1 1 1', panel_fg_alpha, DRAWFLAG_ADDITIVE );
}
-
+
if ( e.nmm_tile_piece )
{
- minigame_drawpic_centered( tile_pos,
+ minigame_drawpic_centered( tile_pos,
minigame_texture(strcat("nmm/piece",ftos(e.nmm_tile_piece.team))),
tile_size*0.8, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL );
}
-
+
//drawstring(tile_pos, e.netname, hud_fontsize, '1 0 0', 1, DRAWFLAG_NORMAL);
}
}
-
+
if ( active_minigame.minigame_flags & NMM_TURN_WIN )
{
vector winfs = hud_fontsize*2;
string playername = "";
FOREACH_MINIGAME_ENTITY(e)
- if ( e.classname == "minigame_player" &&
+ if ( e.classname == "minigame_player" &&
e.team == (active_minigame.minigame_flags & NMM_TURN_TEAM) )
playername = GetPlayerName(e.minigame_playerslot-1);
-
+
vector win_pos = pos+eY*(mySize_y-winfs_y)/2;
vector win_sz;
win_sz = minigame_drawcolorcodedstring_wrapped(mySize_x,win_pos,
- sprintf("%s^7 won the game!",playername),
+ sprintf("%s^7 won the game!",playername),
winfs, 0, DRAWFLAG_NORMAL, 0.5);
-
+
drawfill(win_pos-eY*hud_fontsize_y,win_sz+2*eY*hud_fontsize_y,'1 1 1',0.5,DRAWFLAG_ADDITIVE);
-
+
minigame_drawcolorcodedstring_wrapped(mySize_x,win_pos,
- sprintf("%s^7 won the game!",playername),
+ sprintf("%s^7 won the game!",playername),
winfs, panel_fg_alpha, DRAWFLAG_NORMAL, 0.5);
}
}
{
HUD_Panel_DrawBg(1);
vector ts;
-
+
ts = minigame_drawstring_wrapped(mySize_x,pos,active_minigame.descriptor.message,
hud_fontsize * 2, '0.25 0.47 0.72', panel_fg_alpha, DRAWFLAG_NORMAL,0.5);
pos_y += ts_y;
mySize_y -= ts_y;
-
+
vector player_fontsize = hud_fontsize * 1.75;
ts_y = ( mySize_y - 2*player_fontsize_y ) / 2;
ts_x = mySize_x;
-
+
float player1x = 0;
float player2x = 0;
vector piece_sz = '48 48 0';
vector mypos;
float piece_light = 1;
entity e = world;
-
+
mypos = pos;
if ( (active_minigame.minigame_flags&NMM_TURN_TEAM) == 2 )
mypos_y += player_fontsize_y + ts_y;
drawfill(mypos,eX*mySize_x+eY*player_fontsize_y,'1 1 1',0.5,DRAWFLAG_ADDITIVE);
mypos_y += player_fontsize_y;
drawfill(mypos,eX*mySize_x+eY*piece_sz_y,'1 1 1',0.25,DRAWFLAG_ADDITIVE);
-
+
FOREACH_MINIGAME_ENTITY(e)
{
if ( e.classname == "minigame_player" )
piece_light = 1;
else
piece_light = 0.15;
-
+
drawpic(mypos, minigame_texture(strcat("nmm/piece",ftos(e.team))), piece_sz,
'1 1 1'*piece_light, panel_fg_alpha, DRAWFLAG_NORMAL );
}
return _("You lost the game!");
return _("You win!");
}
-
+
if ( (turnflags&NMM_TURN_TEAM) != minigame_self.team )
return _("Wait for your opponent to make their move");
if ( turnflags & NMM_TURN_PLACE )
return _("You can select one of your pieces to move it anywhere on the board");
if ( turnflags & NMM_TURN_TAKE )
return _("You can take one of the opponent's pieces");
-
+
return "";
}
else
{
string tileid = nmm_currtile.netname;
- nmm_currtile = world;
+ nmm_currtile = world;
while ( !nmm_currtile )
{
tileid = minigame_relative_tile(tileid,1,0,7,7);
else
{
string tileid = nmm_currtile.netname;
- nmm_currtile = world;
+ nmm_currtile = world;
while ( !nmm_currtile )
{
tileid = minigame_relative_tile(tileid,-1,0,7,7);
else
{
string tileid = nmm_currtile.netname;
- nmm_currtile = world;
+ nmm_currtile = world;
while ( !nmm_currtile )
{
tileid = minigame_relative_tile(tileid,0,1,7,7);
else
{
string tileid = nmm_currtile.netname;
- nmm_currtile = world;
+ nmm_currtile = world;
while ( !nmm_currtile )
{
tileid = minigame_relative_tile(tileid,0,-1,7,7);
}
}
}
- else if ( self.classname == "minigame" && ( ...(1,int) & MINIG_SF_UPDATE ) )
+ else if ( self.classname == "minigame" && ( ...(1,int) & MINIG_SF_UPDATE ) )
{
self.message = nmm_turn_to_string(self.minigame_flags);
if ( self.minigame_flags & minigame_self.team )
minigame_prompt();
}
}
-
+
return 0;
}
-#endif
+#endif