X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fmodules%2FNeonFun.mod%2Fcmd_neonfun_blackjack.c;fp=src%2Fmodules%2FNeonFun.mod%2Fcmd_neonfun_blackjack.c;h=31fe45c29d0cf46417ac820568350e137dd5dfa3;hb=9f992f346db24a642e3fe5362ae377ebe9002aa7;hp=0000000000000000000000000000000000000000;hpb=4761ec8711725a1f6c0bd8b1a166dd7da1899b13;p=NeonServV5.git diff --git a/src/modules/NeonFun.mod/cmd_neonfun_blackjack.c b/src/modules/NeonFun.mod/cmd_neonfun_blackjack.c new file mode 100644 index 0000000..31fe45c --- /dev/null +++ b/src/modules/NeonFun.mod/cmd_neonfun_blackjack.c @@ -0,0 +1,69 @@ +/* cmd_neonfun_blackjack.c - NeonServ v5.6 + * Copyright (C) 2011-2012 Philipp Kreil (pk910) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "cmd_neonfun.h" +#include "game_blackjack.h" + +CMD_BIND(neonfun_cmd_blackjack) { + struct ChanUser *chanuser = getChanUser(user, chan); + if(!chanuser) return; + struct bj_game *game; + for(game = bj_active_games; game; game = game->next) { + if(chan == game->channel) + break; + } + if(game) { + //check if player has already joined + struct bj_player *player, *last_player = NULL; + for(player = game->player; player; player = player->next) { + if(player->chanuser == chanuser) { + reply(textclient, user, "NF_BJ_ALREADY_JOINED"); + return; + } else + last_player = player; + } + if(!last_player) return; //error (game without players?) + player = malloc(sizeof(*player)); + player->chanuser = chanuser; + player->count = 0; + player->cards = NULL; + player->prev = last_player; + player->next = NULL; + last_player->next = player; + game->players++; + bj_reply(game, user, "NF_BJ_USER_JOINED", user->nick); + } else { + game = malloc(sizeof(*game)); + game->channel = chan; + game->textbot = textclient; + game->state = BJ_STATE_WAITING; + game->deck = NULL; + struct bj_player *player = malloc(sizeof(*player)); + player->chanuser = chanuser; + player->count = 0; + player->cards = NULL; + player->prev = NULL; + player->next = NULL; + game->player = player; + game->active_player = NULL; + game->players = 1; + game->timer = timeq_add(30, module_id, bj_game_wait_timeout, game); + game->next = bj_active_games; + bj_active_games = game; + bj_reply(game, user, "NF_BJ_CREATED", user->nick); + } +}