X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=src%2Fserver%2Frun.c;h=952cebb566d317d46bc62df7a1a8a3233d02fd73;hb=d92f16d5959fc846d3eaf669517eecb3969cda08;hp=f5d0e170fd4fcbf237ca900bfa3b17f45af4d841;hpb=d12efb0addf420adc045cfb96647dff6241310ee;p=plomrogue diff --git a/src/server/run.c b/src/server/run.c index f5d0e17..952cebb 100644 --- a/src/server/run.c +++ b/src/server/run.c @@ -16,8 +16,8 @@ #include "cleanup.h" /* unset_cleanup_flag() */ #include "init.h" /* remake_world() */ #include "io.h" /* io_round() */ -#include "map_object_actions.h" /* get_moa_id_by_name() */ -#include "map_objects.h" /* struct MapObj, get_player() */ +#include "thing_actions.h" /* get_thing_action_id_by_name() */ +#include "things.h" /* Thing, get_player() */ #include "world.h" /* global world */ @@ -27,18 +27,7 @@ */ static void turn_over(); -/* Helper to turn_over() to determine whether a map object's action effort has - * reached its end. The simplicity of just comparing map_object->progress to - * moa->effort is suspended for actor movement, for in this case the effort - * depends on the diagonal movement penalty expressed in the ratio of - * world.map.dist_diagonal / world.map.dist_orthogonal. (Movement being diagonal - * or orthogonal is determined by the ->arg char encoding an even or un-even - * number digit). - */ -static uint8_t is_effort_finished(struct MapObjAct * moa, - struct MapObj * map_object); - -/* If "msg"'s first part matches "command_name", set player's MapObj's .command +/* If "msg"'s first part matches "command_name", set player's Thing's .command * to the command's id and its .arg to a numerical value following in the latter * part of "msg" (if no digits are found, use 0); then finish player's turn and * turn game over to the NPCs via turn_over(); then return 1. Else, return 0. @@ -56,73 +45,42 @@ static void server_test(); static void turn_over() { - struct MapObj * player = get_player(); - struct MapObj * map_object = player; + struct Thing * player = get_player(); + struct Thing * thing = player; uint16_t start_turn = world.turn; while ( 0 < player->lifepoints || (0 == player->lifepoints && start_turn == world.turn)) { - if (NULL == map_object) + if (NULL == thing) { world.turn++; - map_object = world.map_objs; + thing = world.things; } - if (0 < map_object->lifepoints) + if (0 < thing->lifepoints) { - if (0 == map_object->command) + if (0 == thing->command) { - if (map_object == player) + if (thing == player) { break; } - ai(map_object); + ai(thing); } - map_object->progress++; - struct MapObjAct * moa = world.map_obj_acts; - while (moa->id != map_object->command) + thing->progress++; + struct ThingAction * ta = world.thing_actions; + while (ta->id != thing->command) { - moa = moa->next; + ta = ta->next; } - if (is_effort_finished(moa, map_object)) + if (thing->progress == ta->effort) { - moa->func(map_object); - map_object->command = 0; - map_object->progress = 0; + ta->func(thing); + thing->command = 0; + thing->progress = 0; } } - map_object = map_object->next; - } -} - - - -static uint8_t is_effort_finished(struct MapObjAct * moa, - struct MapObj * map_object) -{ - if (moa->func != actor_move) - { - if (map_object->progress == moa->effort) - { - return 1; - } + thing = thing->next; } - else if (strchr("8624", map_object->arg)) - { - if (map_object->progress == moa->effort) - { - return 1; - } - } - else if (strchr("1379", map_object->arg)) - { - uint16_t diagonal_effort = (moa->effort * world.map.dist_diagonal) - / world.map.dist_orthogonal; - if (map_object->progress == diagonal_effort) - { - return 1; - } - } - return 0; } @@ -131,9 +89,9 @@ static uint8_t apply_player_command(char * msg, char * command_name) { if (!strncmp(msg, command_name, strlen(command_name))) { - struct MapObj * player = get_player(); + struct Thing * player = get_player(); player->arg = atoi(&(msg[strlen(command_name)])); - player->command = get_moa_id_by_name(command_name); + player->command = get_thing_action_id_by_name(command_name); turn_over(); return 1; } @@ -168,10 +126,10 @@ extern void obey_msg(char * msg, uint8_t do_record) char * f_name = "obey_msg()"; if ( apply_player_command(msg, "wait") /* TODO: Check for non-error */ || apply_player_command(msg, "move") /* return value of a modified */ - || apply_player_command(msg, "pick_up")/* get_moa_id_by_name(); if id */ - || apply_player_command(msg, "drop") /* found, execute on it what's */ - || apply_player_command(msg, "use")); /* in apply_player_command(). */ - else + || apply_player_command(msg, "pick_up")/*get_thing_action_id_by_name()*/ + || apply_player_command(msg, "drop") /* and if id found, execute on */ + || apply_player_command(msg, "use")); /* it what's in */ + else /* apply_player_command(). */ { char * seed_command = "seed"; if (!strncmp(msg, seed_command, strlen(seed_command)))