-
Notifications
You must be signed in to change notification settings - Fork 489
Improve plants/plant plugin #4632
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
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 |
myk002
left a comment
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
myk002
left a comment
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.
myk002
left a comment
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
plantsplugin toplantto match the command, making it easier to find docs.Add command
plant removeto remove plants. (Doesn't work on mature trees yet. Will need to reverse-engineer proper tile removal at a later date.) Addplant listto list shrub and sapling raw IDs, avoiding use of lengthydevel/querycommand and excluding grasses.Adds a bunch of options to existing
plant createandplant grow. See:docs/plugins/plant.rst. Use proper logic for determining plantwateryflag, adding to wet/dry vector.Minor improvement to
regrassto accept numerical raw ID for grass type.regrass --listreplacesregrass --plant "". Don't remove mud on regrass (since DF doesn't.)plantsdoc tag now encompasses tools that affect grass, to includeregrassplugin.DataIdentityfor container types #4591) to pass vector ref to Luaplantuses its owncuboidstruct. This can be replaced by a more global one: Cuboid struct/class for df::coord bounds #4595