def try_transform_miner(world, entity, transform): new_entity = transform(world, entity) if entity != new_entity: remove_entity(world, entity) worldmodel.add_entity(world, new_entity) schedule_animation(world, new_entity) return new_entity
def try_transform_miner(world, entity, transform): new_entity = transform(world, entity) if entity != new_entity: clear_pending_actions(world, entity) worldmodel.remove_entity_at(world, entity.get_position()) worldmodel.add_entity(world, new_entity) schedule_animation(world, new_entity) return new_entity
def action(current_ticks): entity.remove_pending_action(action) blob = create_blob(world, entity.get_name() + " -- blob", entity.get_position(), entity.get_rate() // BLOB_RATE_SCALE, current_ticks, i_store) remove_entity(world, entity) worldmodel.add_entity(world, blob) return [blob.get_position()]
def action(current_ticks): entity.remove_pending_action(action) entity_pt = entity.get_position() vein = worldmodel.find_nearest(world, entity_pt, entities.Vein) (tiles, found) = blob_to_vein(world, entity, vein) next_time = current_ticks + entity.get_rate() if found: quake = create_quake(world, tiles[0], current_ticks, i_store) worldmodel.add_entity(world, quake) next_time = current_ticks + entity.get_rate() * 2 schedule_action(world, entity, create_ore_blob_action(world, entity, i_store), next_time) return tiles
def action(current_ticks): entity.remove_pending_action(action) open_pt = find_open_around(world, entity.get_position(), entity.get_resource_distance()) if open_pt: ore = create_ore(world, "ore - " + entity.get_name() + " - " + str(current_ticks), open_pt, current_ticks, i_store) worldmodel.add_entity(world, ore) tiles = [open_pt] else: tiles = [] schedule_action(world, entity, create_vein_action(world, entity, i_store), current_ticks + entity.get_rate()) return tiles
def action(current_ticks): entities.remove_pending_action(entity, action) open_pt = find_open_around(world, entities.get_position(entity), entities.get_resource_distance(entity)) if open_pt: ore = create_ore( world, "ore - " + entities.get_name(entity) + " - " + str(current_ticks), open_pt, current_ticks, i_store) worldmodel.add_entity(world, ore) tiles = [open_pt] else: tiles = [] schedule_action(world, entity, create_vein_action(world, entity, i_store), current_ticks + entities.get_rate(entity)) return tiles
def handle_mouse_button(view, world, event, entity_select, i_store): mouse_pt = mouse_to_tile(event.pos, view.tile_width, view.tile_height) tile_view_pt = worldview.viewport_to_world(view.viewport, mouse_pt) if event.button == mouse_buttons.LEFT and entity_select: if is_background_tile(entity_select): worldmodel.set_background(world, tile_view_pt, entities.Background(entity_select, image_store.get_images(i_store, entity_select))) return [tile_view_pt] else: new_entity = create_new_entity(tile_view_pt, entity_select, i_store) if new_entity: worldmodel.remove_entity_at(world, tile_view_pt) worldmodel.add_entity(world, new_entity) return [tile_view_pt] elif event.button == mouse_buttons.RIGHT: worldmodel.remove_entity_at(world, tile_view_pt) return [tile_view_pt] return []
def add_entity(world, properties, i_store, run): new_entity = create_from_properties(properties, i_store) if new_entity: worldmodel.add_entity(world, new_entity) if run: schedule_entity(world, new_entity, i_store)