public void InsertDetailIntoModule() { isAllowedToRotate = false; RaycastHit2D rayHit2d = Physics2D.Raycast(currentPoint, currentPoint * 2); float distanceTemp = Head.localPosition.magnitude; if (rayHit2d.transform != null) { RepairModule module = rayHit2d.transform.GetComponent <RepairModule>(); if (module.Repairtype == currentDetail.Robot.breakageType) { isDetailRepaierd = true; HeadAnimator.SetTrigger("Repair"); PerformAction = ReturnFromInserting; } else { isRobotFuckedUp = true; } } else if (distanceTemp > 0.4f && distanceTemp != 0) { isDetailRepaierd = false; HeadAnimator.SetTrigger("ReturnFromInserting"); PerformAction = ReturnFromInserting; } }
private void OnTriggerEnter2D(Collider2D other) { if (other.transform.GetComponent <RepairModule>()) { lastTouchedModule = other.transform.GetComponent <RepairModule>(); } }
public static Module sample(ModuleType type) { switch (type) { case ModuleType.Core: return(CoreModule.sample()); case ModuleType.Energy: return(EnergyModule.sample()); case ModuleType.Armor: return(ArmorModule.sample()); case ModuleType.Computation: return(ComputationModule.sample()); case ModuleType.Power: return(PowerModule.sample()); case ModuleType.Weapon: return(WeaponModule.sample()); case ModuleType.Repair: return(RepairModule.sample()); case ModuleType.Battery: return(BatteryModule.sample()); default: return(new Module(ModuleType.None, 0, 0, 0)); } }
public bool DockIfDesired() { // Is there available Docking space accomodating this ship? DockModuleQuery dockModuleQuery = new DockModuleQuery { IsOccupied = false, MinimumTier = Tier, SizeClass = SizeClass }; List <DockModule> dockingSpaces = dockModuleQuery.FindAllMatches(Station); List <Action> onSuccess = new List <Action>(); List <IModule> modulesUsed = new List <IModule>(); if (dockingSpaces.Count == 0) { Station.LogEvent("The ship passes by after finding your station does not meet it's docking needs."); return(false); } else { modulesUsed.Add(dockingSpaces[0]); onSuccess.Add(() => dockingSpaces[0].OccupyingShip = this); } // TODO: Fuel? // Is there available repair services for this ship? if (RequiredRepairLevel > 0) { RepairModuleQuery repairModuleQuery = new RepairModuleQuery { MinimumTier = Tier }; RepairModule repairModule = repairModuleQuery.FindFirstMatch(Station); if (repairModule == null) { Station.LogEvent("The ship passes by after finding your station does not meet it's repair needs."); return(false); } else { modulesUsed.Add(repairModule); onSuccess.Add(() => repairModule.OccupyWithShip(this)); } if (RequiredRepairLevel > 1) { // Repair level requires boarding HabitationModuleQuery habitationModuleQuery = new HabitationModuleQuery { MinimumSpace = Crew.Count, MinimumTier = Tier }; HabitationModule habitationModule = habitationModuleQuery.FindFirstMatch(Station); if (habitationModule == null) { Station.LogEvent("The ship passes by after finding your station does not meet it's crew habitation needs."); return(false); } else { modulesUsed.Add(habitationModule); onSuccess.Add(() => habitationModule.AddCrew(Crew)); } } } // update all the modules with the docking ship (this could be done waaaay better) foreach (Action action in onSuccess) { action.Invoke(); } List <string> moduleNames = modulesUsed.Select((IModule module) => { activeShipModules.Add(module); return(module.GetType().Name); }).ToList(); Station.LogEvent($"The ship arrived and is making use of the following services: [{string.Join(", ", moduleNames)}]"); return(true); }