-
Notifications
You must be signed in to change notification settings - Fork 481
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve plants/plant plugin #4632
Conversation
* Update regrass.cpp * Update regrass.lua * Update regrass.rst * Rename plants.cpp to plant.cpp * Rename plants.rst to plant.rst * Update plugins/CMakeLists.txt * Update plant.cpp * Create plant.lua * Update plant.rst
don't mind the compilation failures. they'll clear up once #4631 is merged |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
needs a section in Removed.rst so that old links still work
ok, now the build errors are real |
this PR depends on #4591 for the use of |
* Add option to force plant create on no_grow; allow more valid tiles * Update plant.cpp: remove extra includes, use if/else for plant vectors * Update regrass.cpp: don't remove mud * Update changelog.txt * Update Removed.rst * Update regrass.rst * Update plant.rst
Should |
yes, that sounds reasonable |
* Add "plant list" and "regrass --list" to replace clunky commands * Update Tags.rst: Add grass to "plants" tag description
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
waiting on #4591 but otherwise approved
editor's note: final punctuation goes outside of enclosing parentheses unless the entire sentence is inside the parentheses.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
comparing with other tools, the parameter is usually named dry-run
instead of dryrun
. Could you add a dash?
* Update regrass.rst * Update plant.rst * Update plant.lua * Update plant.cpp * Update changelog.txt
U.S. English built different. |
I'm going by https://www.thepunctuationguide.com/parentheses.html (but of course only because that's the way I already write..) |
Not according to my legal writing instructor (at a US-based law school). |
i am working on an PR that adds identity support for |
I'll merge in the following diff to adjust to structure changes: diff --git a/plugins/plants.cpp b/plugins/plants.cpp
index 2325c01e3..8de7ccc6f 100644
--- a/plugins/plants.cpp
+++ b/plugins/plants.cpp
@@ -69,7 +69,8 @@ command_result df_grow (color_ostream &out, vector <string> & parameters)
{
df::plant *p = world->plants.all[i];
df::tiletype ttype = map.tiletypeAt(df::coord(p->pos.x,p->pos.y,p->pos.z));
- if(!p->flags.bits.is_shrub && tileShape(ttype) == tiletype_shape::SAPLING && tileSpecial(ttype) != tiletype_special::DEAD)
+ bool is_shrub = plant->type == df::plant_type::DRY_PLANT || plant->type == df::plant_type::WET_PLANT;
+ if(!is_shrub && tileShape(ttype) == tiletype_shape::SAPLING && tileSpecial(ttype) != tiletype_special::DEAD)
{
p->grow_counter = sapling_to_tree_threshold;
grown++;
@@ -148,12 +149,12 @@ command_result df_createplant (color_ostream &out, vector <string> & parameters)
else
{
plant->hitpoints = 100000;
- plant->flags.bits.is_shrub = 1;
+ plant->type = df::plant_type::DRY_PLANT;
}
- // for now, always set "watery" for WET-permitted plants, even if they're spawned away from water
+ // for now, assume wet for WET-permitted plants, even if they're spawned away from water
// the proper method would be to actually look for nearby water features, but it's not clear exactly how that works
- if (plant_raw->flags.is_set(plant_raw_flags::WET))
- plant->type = df::plant_type::WET_TREE;
+ if (plant_raw->flags.is_set(plant_raw_flags::WET)) {
+ if (plant_raw->flags.is_set(plant_raw_flags::TREE))
+ plant->type = df::plant_type::WET_TREE;
+ else
+ plant->type = df::plant_type::WET_PLANT;
+ }
plant->material = plant_id;
plant->pos.x = x;
plant->pos.y = y;
@@ -169,7 +170,7 @@ command_result df_createplant (color_ostream &out, vector <string> & parameters)
case 3: world->plants.shrub_wet.push_back(plant); break;
}
col->plants.push_back(plant);
- if (plant->flags.bits.is_shrub)
+ if (plant->type == df::plant_type::DRY_PLANT || plant->type == df::plant_type::WET_PLANT)
map->tiletype[tx][ty] = tiletype::Shrub;
else
map->tiletype[tx][ty] = tiletype::Sapling; |
Rename the
plants
plugin toplant
to match the command, making it easier to find docs.Add command
plant remove
to remove plants. (Doesn't work on mature trees yet. Will need to reverse-engineer proper tile removal at a later date.) Addplant list
to list shrub and sapling raw IDs, avoiding use of lengthydevel/query
command and excluding grasses.Adds a bunch of options to existing
plant create
andplant grow
. See:docs/plugins/plant.rst
. Use proper logic for determining plantwatery
flag, adding to wet/dry vector.Minor improvement to
regrass
to accept numerical raw ID for grass type.regrass --list
replacesregrass --plant ""
. Don't remove mud on regrass (since DF doesn't.)plants
doc tag now encompasses tools that affect grass, to includeregrass
plugin.DataIdentity
for container types #4591) to pass vector ref to Luaplant
uses its owncuboid
struct. This can be replaced by a more global one: Cuboid struct/class for df::coord bounds #4595