From: Christian Heller Date: Wed, 2 Mar 2016 00:35:30 +0000 (+0100) Subject: Server: Minor performance optimizations in seeing_thing(). X-Git-Tag: tce~105 X-Git-Url: https://plomlompom.com/repos/%7B%7Bdb.prefix%7D%7D/%7B%7B%20web_path%20%7D%7D/decks/%7B%7Bprefix%7D%7D/%27%29;%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20chunks.push%28escapeHTML%28span%5B2%5D%29%29;%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20chunks.push%28%27?a=commitdiff_plain;h=9db0640a4cebff6c709ede4d3c360a9bcd74cc3f;p=plomrogue Server: Minor performance optimizations in seeing_thing(). --- diff --git a/server/ai.py b/server/ai.py index 6c1aab8..8543409 100644 --- a/server/ai.py +++ b/server/ai.py @@ -86,25 +86,33 @@ def get_dir_to_target(t, filter): def seeing_thing(): maplength = world_db["MAP_LENGTH"] if t["fovmap"] and "a" == filter: - targets = [Thing for Thing in animates_in_fov(maplength) - if good_attack_target(Thing)] - if len(targets): - return True + try: + next((Thing for Thing in animates_in_fov(maplength) + if good_attack_target(Thing))) + except StopIteration: + return False + return True elif t["fovmap"] and "f" == filter: - targets = [Thing for Thing in animates_in_fov(maplength) - if good_flee_target(Thing)] - if len(targets): - return True + try: + next((Thing for Thing in animates_in_fov(maplength) + if good_flee_target(Thing))) + except StopIteration: + return False + return True elif t["T_MEMMAP"] and "c" == filter: eat_cost = eat_vs_hunger_threshold(t["T_TYPE"]) ord_blank = ord(" ") - for mt in t["T_MEMTHING"]: - if ord_blank != chr(t["T_MEMMAP"][(mt[1] * \ - world_db["MAP_LENGTH"]) + mt[2]]) \ - and world_db["ThingTypes"][mt[0]]["TT_TOOL"] == "food" \ - and world_db["ThingTypes"][mt[0]]["TT_TOOLPOWER"] \ - > eat_cost: - return True + map_len = world_db["MAP_LENGTH"] + try: + next(mt for mt in t["T_MEMTHING"] + if ord_blank != t["T_MEMMAP"][mt[1] * map_len + mt[2]] + and world_db["ThingTypes"][mt[0]]["TT_TOOL"] == "food" + and world_db["ThingTypes"][mt[0]]["TT_TOOLPOWER"] + > eat_cost) + except StopIteration: + return False + return True + return False def set_cells_passable_on_memmap_to_65534_on_scoremap():