small update

boss prototype, auto planter, visual reworks, bug fixes
This commit is contained in:
2026-08-29 10:45:34 +02:00
parent 6840b715de
commit feb4500c6c
31 changed files with 1293 additions and 213 deletions
+96
View File
@@ -219,6 +219,8 @@ class AutoFarmerTest(unittest.TestCase):
data["fertilizer"] = 10
data["coins"] = 100
data["auto_farmer"] = False
data["auto_planter"] = False
data["auto_planter_active"] = False
collection.save(data)
def _stalled_plot(self):
@@ -308,6 +310,100 @@ class AutoFarmerTest(unittest.TestCase):
self.assertEqual(len(state["seeds"]), 1) # seed not planted
self.assertEqual(state["plots"][0]["stage"], 1) # stalled plot advanced
def test_buy_auto_planter(self):
data = collection.load()
data["coins"] = 300
collection.save(data)
self.assertEqual(collection.buy_auto_planter(), "")
self.assertTrue(collection.auto_planter_owned())
self.assertTrue(collection.auto_planter_active())
self.assertEqual(collection.available_coins(), 100)
self.assertNotEqual(collection.buy_auto_planter(), "") # already owned
def test_buy_auto_planter_requires_coins(self):
data = collection.load()
data["coins"] = 50
collection.save(data)
self.assertNotEqual(collection.buy_auto_planter(), "")
self.assertFalse(collection.auto_planter_owned())
def test_toggle_auto_planter(self):
data = collection.load()
data["coins"] = 300
collection.save(data)
collection.buy_auto_planter()
self.assertFalse(collection.toggle_auto_planter()) # turned off
self.assertFalse(collection.auto_planter_active())
self.assertTrue(collection.toggle_auto_planter()) # back on
def test_auto_plant_plants_seed_into_empty_plot(self):
data = collection.load()
data["coins"] = 300
data["soil"]["seeds"] = [{"plant": "Rose"}, {"plant": "Lavender"}]
collection.save(data)
self.assertEqual(collection.buy_auto_planter(), "")
self.assertEqual(collection.auto_plant(), "")
state = collection.soil_state()
self.assertEqual(len(state["plots"]), 1)
self.assertEqual(state["plots"][0]["plant"], "Rose") # first seed planted
self.assertEqual(len(state["seeds"]), 1)
def test_auto_plant_respects_toggle_and_requirements(self):
data = collection.load()
data["coins"] = 300
data["soil"]["seeds"] = [{"plant": "Rose"}]
collection.save(data)
self.assertEqual(collection.auto_plant(), "No auto planter") # not owned
collection.buy_auto_planter()
collection.toggle_auto_planter() # turn off
self.assertEqual(collection.auto_plant(), "Auto planter off")
collection.toggle_auto_planter()
data = collection.load()
data["soil"]["seeds"] = []
collection.save(data)
self.assertEqual(collection.auto_plant(), "") # nothing to plant -> idle
self.assertEqual(len(collection.soil_state()["plots"]), 0)
def test_auto_plant_wont_overfill_plots(self):
data = collection.load()
data["coins"] = 300
data["soil"]["seeds"] = [{"plant": "Rose"}, {"plant": "Lavender"}]
data["soil"]["plots"] = [{"plant": "Rose", "stage_started_at": 0, "stage": 0, "water": 0}]
collection.save(data)
self.assertEqual(collection.buy_auto_planter(), "")
self.assertEqual(collection.auto_plant(), "") # no free plot -> idle
self.assertEqual(len(collection.soil_state()["plots"]), 1)
class PackShopTest(unittest.TestCase):
def setUp(self):
data = collection.load()
data["coins"] = 500
data["packs"] = {t: 0 for t in collection.PACK_TYPES}
collection.save(data)
def test_buy_lesser_and_general(self):
self.assertEqual(collection.buy_pack("lesser"), "")
self.assertEqual(collection.buy_pack("general"), "")
self.assertEqual(collection.buy_pack("garden"), "")
self.assertEqual(collection.available_coins(), 500 - 50 - 100 - 100)
packs = collection.pack_counts()
self.assertEqual(packs["lesser"], 1)
self.assertEqual(packs["general"], 1)
self.assertEqual(packs["garden"], 1)
def test_tower_pack_cannot_be_bought(self):
self.assertEqual(collection.buy_pack("tower"), "That pack can't be bought")
self.assertEqual(collection.pack_counts().get("tower", 0), 0)
self.assertEqual(collection.available_coins(), 500)
def test_buy_pack_requires_coins(self):
data = collection.load()
data["coins"] = 30
collection.save(data)
self.assertEqual(collection.buy_pack("lesser"), "Not enough coins")
self.assertEqual(collection.pack_counts().get("lesser", 0), 0)
if __name__ == "__main__":
unittest.main()