def get(self, linedef): index = linedef.action args = linedef.args func = self.function_map.get(index) if func is None: return None action = Action() action.index = index if (linedef.flags & Linedef.FLAG_HEXEN_PLAYERUSE) != 0: action.activation |= Action.ACTIVATE_SWITCH action.flags |= Action.FLAG_PLAYER elif (linedef.flags & Linedef.FLAG_HEXEN_PLAYERBUMP) != 0: action.activation |= Action.ACTIVATE_BUMP action.flags |= Action.FLAG_PLAYER elif (linedef.flags & Linedef.FLAG_HEXEN_PROJECTILECROSS) != 0: action.activation |= Action.ACTIVATE_WALK action.flags |= Action.FLAG_PROJECTILE elif (linedef.flags & Linedef.FLAG_HEXEN_PLAYERSANDMONSTERS) != 0: action.flags |= Action.FLAG_MONSTER | Action.FLAG_PLAYER elif (linedef.flags & Linedef.FLAG_HEXEN_REPEATEDUSE) == 0: action.flags |= Action.FLAG_ONCE return func(self, action, args)
def add(self, index, keywords): action = Action() action.index = index action.flag = Action.FLAG_PLAYER | Action.FLAG_PROJECTILE for keyword in keywords.split(','): if keyword in type_mapping: action.type = type_mapping[keyword] elif keyword in activate_mapping: action.activation = activate_mapping[keyword] elif keyword in movement_mapping: action.direction = movement_mapping[keyword] elif keyword in door_mapping: action.door_type = door_mapping[keyword] elif keyword in key_flags_mapping: action.key_flags |= key_flags_mapping[keyword] elif keyword in target_mapping: action.target = target_mapping[keyword] elif keyword in change_flags_mapping: action.change_flags |= change_flags_mapping[keyword] elif keyword in model_mapping: action.model = model_mapping[keyword] elif keyword in teleport_mapping: action.teleport_type = teleport_mapping[keyword] elif keyword in flags_mapping: action.flags |= flags_mapping[keyword] elif keyword in speed_mapping: action.speed = speed_mapping[keyword] elif keyword in wait_mapping: action.wait_time = wait_mapping[keyword] elif keyword in distance_mapping: action.move_amount = distance_mapping[keyword] elif keyword in light_mapping: action.light_change = light_mapping[keyword] else: print 'Unknown action keyword "{}".'.format(keyword) self.actions[index] = action