public void Close() { log("", "Close"); try { m_Fleet.remove(m_Class, m_Enforcer); StateTracker.getInstance().removeFleetIfEmpty(m_FleetID, m_OwnerType); } catch (NullReferenceException e) { log("Error: " + e, "Close", Logger.severity.ERROR); } m_Fleet = null; m_Enforcer = null; m_Logger = null; }
public GridOwner(GridEnforcer ge) { m_Enforcer = ge; m_Logger = new Logger(m_Enforcer.Grid.EntityId.ToString(), "GridOwner"); log("Loaded into new grid", "ctr"); // the grid will update ownership later b/c this is initialized with the grid, // and the grid doesn't have any blocks yet m_OwnerType = OWNER_TYPE.UNOWNED; m_FleetID = getFleetID(); m_Class = ge.Class; m_Fleet = getFleet(); m_Fleet.add(m_Class, ge); }
/// <summary> /// Gets the fleet this grid belongs to /// </summary> /// <returns></returns> public FactionFleet getFleet() { if (GridEnforcer.StateTracker != null) { log("retreiving fleet from state tracker", "getFleet"); FactionFleet loadedFleet = GridEnforcer.StateTracker.getFleet(m_FleetID, OwnerType); if (loadedFleet != null) { m_StateLoaded = true; return(loadedFleet); } else { log("state tracker returned null fleet", "getFleet", Logger.severity.ERROR); } } else { log("null state, probably initing", "getFleet"); } log("failed to load fleet from state tracker", "getFleet"); m_StateLoaded = false; if (m_Fleet == null) { log("creating temporary untracked fleet", "getFleet"); return(new FactionFleet(m_FleetID, OwnerType)); } else { log("returning existing stored fleet", "getFleet"); return(m_Fleet); } }
/// <summary> /// Figures out who owns the grid now /// </summary> /// <returns>Returns true if the owner has changed</returns> public bool reevaluateOwnership(List <long> bigOwners) { log("Reevaluating owner", "reevaluateOwnership"); bool changed = false; // = Get new ownership details OWNER_TYPE newType = OWNER_TYPE.UNOWNED; long newPlayerID = 0; long newFactionID = 0; if (bigOwners.Count == 0) { newType = OWNER_TYPE.UNOWNED; } else { if (bigOwners.Count > 1) { log("bigOwner tie! Using first owner.", "reevaluateOwnership", Logger.severity.WARNING); } newPlayerID = bigOwners[0]; IMyFaction fac = MyAPIGateway.Session.Factions.TryGetPlayerFaction(newPlayerID); // Is the player solo? if (fac == null) { newType = OWNER_TYPE.PLAYER; } else { newType = OWNER_TYPE.FACTION; newFactionID = fac.FactionId; } } long newFleetID = calcFleetID(newType, newPlayerID, newFactionID); // = Effect changes if (m_OwnerType != newType) { log(String.Format("type changed from {0} => {1}", m_OwnerType, newType), "reevaluateOwnership"); m_OwnerType = newType; changed = true; } if (m_PlayerID != newPlayerID) { log(String.Format("player changed from {0} => {1}", m_PlayerID, newPlayerID), "reevaluateOwnership"); m_PlayerID = newPlayerID; changed = true; } if (m_FactionID != newFactionID) { log(String.Format("faction changed from {0} => {1}", m_FactionID, newFactionID), "reevaluateOwnership"); m_FactionID = newFactionID; changed = true; } // If the fleet tracking ID has changed, or if we've got a temp fleet, update the fleet if ((m_FleetID != newFleetID) || (!m_StateLoaded && GridEnforcer.StateTracker != null)) { log(String.Format("Doing fleet change {0} => {1}, was temp? {2}", m_FleetID, newFleetID, !m_StateLoaded), "reevaluateOwnership"); // Remove the grid from the previous fleet if (m_Fleet == null) { log("Fleet is null", "reevaluateOwnership", Logger.severity.ERROR); } else { m_Fleet.remove(m_Class, m_Enforcer); } m_FleetID = newFleetID; m_Fleet = getFleet(); // Add the grid to the new fleet if (m_Fleet == null) { log("Failed to get new fleet for " + m_FleetID, "reevaluateOwnership", Logger.severity.ERROR); } else { m_Fleet.add(m_Class, m_Enforcer); } changed = true; } if (changed) { return(true); } else { log(String.Format("no change, owner: {0} {1}", m_OwnerType, m_FleetID), "reevaluateOwnership"); return(false); } }
/// <summary> /// Figures out who owns the grid now /// </summary> /// <returns>Returns true if the owner has changed</returns> public bool reevaluateOwnership(List<long> bigOwners) { log("Reevaluating owner", "reevaluateOwnership"); bool changed = false; // = Get new ownership details OWNER_TYPE newType = OWNER_TYPE.UNOWNED; long newPlayerID = 0; long newFactionID = 0; if (bigOwners.Count == 0) { newType = OWNER_TYPE.UNOWNED; } else { if (bigOwners.Count > 1) { log("bigOwner tie! Using first owner.", "reevaluateOwnership", Logger.severity.WARNING); } newPlayerID = bigOwners[0]; IMyFaction fac = MyAPIGateway.Session.Factions.TryGetPlayerFaction(newPlayerID); // Is the player solo? if (fac == null) { newType = OWNER_TYPE.PLAYER; } else { newType = OWNER_TYPE.FACTION; newFactionID = fac.FactionId; } } long newFleetID = calcFleetID(newType, newPlayerID, newFactionID); // = Effect changes if (m_OwnerType != newType) { log(String.Format("type changed from {0} => {1}", m_OwnerType, newType), "reevaluateOwnership"); m_OwnerType = newType; changed = true; } if (m_PlayerID != newPlayerID) { log(String.Format("player changed from {0} => {1}", m_PlayerID, newPlayerID), "reevaluateOwnership"); m_PlayerID = newPlayerID; changed = true; } if (m_FactionID != newFactionID) { log(String.Format("faction changed from {0} => {1}", m_FactionID, newFactionID), "reevaluateOwnership"); m_FactionID = newFactionID; changed = true; } // If the fleet tracking ID has changed, or if we've got a temp fleet, update the fleet if ((m_FleetID != newFleetID) || (!m_StateLoaded && GridEnforcer.StateTracker != null)) { log(String.Format("Doing fleet change {0} => {1}, was temp? {2}", m_FleetID, newFleetID, !m_StateLoaded), "reevaluateOwnership"); // Remove the grid from the previous fleet if (m_Fleet == null) { log("Fleet is null", "reevaluateOwnership", Logger.severity.ERROR); } else { m_Fleet.remove(m_Class, m_Enforcer); } m_FleetID = newFleetID; m_Fleet = getFleet(); // Add the grid to the new fleet if (m_Fleet == null) { log("Failed to get new fleet for " + m_FleetID, "reevaluateOwnership", Logger.severity.ERROR); } else { m_Fleet.add(m_Class, m_Enforcer); } changed = true; } if (changed) { return true; } else { log(String.Format("no change, owner: {0} {1}", m_OwnerType, m_FleetID), "reevaluateOwnership"); return false; } }