public void CreateDrinksAutomaticallyButWithLimit() { D.onDLog += Console.WriteLine; Character lisa = _world.tingRunner.CreateTing <Character>("Lisa", new WorldCoordinate(TEST_ROOM, IntPoint.Zero)); WorldTestHelper.UpdateWorld(_world, 3f); Drink lastDrink = null; for (int i = 0; i < 100; i++) { lastDrink = Behaviour_Sell.CreateTingToSell(lisa, _world.tingRunner, "WellspringSoda", _world.settings) as Drink; } WorldTestHelper.UpdateWorld(_world, 3f); Assert.AreEqual(21, _world.tingRunner.GetTingsOfType <Drink>().Length); lisa.handItem = lastDrink; for (int i = 0; i < 100; i++) { Behaviour_Sell.CreateTingToSell(lisa, _world.tingRunner, "WellspringSoda", _world.settings); } WorldTestHelper.UpdateWorld(_world, 3f); Assert.AreEqual(25, _world.tingRunner.GetTingsOfType <Drink>().Length); // creates one extra drink each time the one Lisa holds is found when trying to create _sale_ drink }
public void API_CreateDrink(string type, float liquidAmount) { string prefabName = ""; string liquidType = ""; string programName = ""; switch (type.ToLower()) { case "coke": prefabName = "Coke"; liquidType = "coke"; programName = "Coke"; break; case "beer": prefabName = "Beer"; liquidType = "beer"; programName = "FolkBeer"; break; case "coffee": prefabName = "CoffeeCup_CoffeeCup"; liquidType = "coffee"; programName = "CafeCoffee"; break; case "margherita": prefabName = "Margherita_Margherita"; liquidType = "drink"; programName = "AlcoholicDrink"; break; case "drymartini": prefabName = "DryMartini_DryMartini"; liquidType = "drink"; programName = "AlcoholicDrink"; break; case "bloodymary": prefabName = "BloodyMary_BloodyMary"; liquidType = "drink"; programName = "AlcoholicDrink"; break; case "longislandicetea": prefabName = "LongIslandIceTea_LongIslandIceTea"; liquidType = "drink"; programName = "AlcoholicDrink"; break; default: throw new Error("Can't create drink of type " + type); } int count = Behaviour_Sell.CountNrOfTingsWithPrefab(_tingRunner, prefabName); string safeName = prefabName + "_Drink_dispensed_" + count; var newItem = _tingRunner.GetTingUnsafe(safeName); if (newItem != null) { if (newItem.room.name == "Sebastian_inventory" || newItem.isBeingHeld) { D.Log("VENDING MACHINE: There's already a " + safeName + " but a character is holding it (or avatar has it)"); for (int i = 0; i < 9999; i++) { string newName = safeName + "_safe_" + i; var item = _tingRunner.GetTingUnsafe(newName) as MimanTing; if (item == null) { // free name! safeName = newName; break; } } } else { D.Log("VENDING MACHINE: There's already a " + safeName + ", will use that one instead!"); var foundDrink = newItem as Drink; foundDrink.position = position; foundDrink.masterProgramName = programName; foundDrink.liquidType = liquidType; foundDrink.amount = liquidAmount; return; } } var newDrink = _tingRunner.CreateTingAfterUpdate <Drink>(safeName, position, GameTypes.Direction.DOWN, prefabName); newDrink.masterProgramName = programName; newDrink.liquidType = liquidType; newDrink.amount = liquidAmount; //newDrink.PrepareForBeingHacked (); // MAKES A NEW PROGRAM GET GENERATED WHICH CRASHES THE PROGRAM RUNNER SINCE THE COLLECTION IS MODIFIED WHILE RUNNING }