public void UnlockTechsSilently(long playerId, HashSet <TechGroup> techGroups) { foreach (var techGroup in techGroups) { var technologies = techsForGroup[techGroup]; if (technologies == null) { ModLog.Error("No technologies for group: " + techGroup); return; } foreach (var technology in technologies) { if (bNewResearch) { // unknown: does this work for ALL players? MyVisualScriptLogicProvider.ResearchListRemoveItem(technology); // SE 1.189 } else { MyVisualScriptLogicProvider.PlayerResearchUnlock(playerId, technology); } } } }
internal void UnlockTechGroupForAllPlayers(TechGroup techGroup) { if (UnlockedTechs.Contains(techGroup)) { return; // Already unlocked } HashSet <MyDefinitionId> technologies; if (!techsForGroup.TryGetValue(techGroup, out technologies)) { ModLog.Error("No technologies for group: " + techGroup); return; } var players = new List <IMyPlayer>(); MyAPIGateway.Players.GetPlayers(players); foreach (var player in players) { foreach (var technology in technologies) { if (bNewResearch) { MyVisualScriptLogicProvider.ResearchListRemoveItem(technology); // SE 1.189 } else { MyVisualScriptLogicProvider.PlayerResearchUnlock(player.IdentityId, technology); } } } UnlockedTechs.Add(techGroup); audioSystem.PlayAudio(GetAudioClipForTechGroup(techGroup)); }
public void UnlockTechForJoiningPlayer(long playerId) { foreach (var techGroup in UnlockedTechs) { var technologies = techsForGroup[techGroup]; if (technologies == null) { ModLog.Error("No technologies for group: " + techGroup); return; } foreach (var technology in technologies) { if (bNewResearch) { MyVisualScriptLogicProvider.ResearchListRemoveItem(technology); // SE 1.189 } else { MyVisualScriptLogicProvider.PlayerResearchUnlock(playerId, technology); } } } }
public void KeepTechsLocked() { // ModLog.Info("KeepTechsLocked()"); foreach (var techGroup in techsForGroup) { var group = techGroup.Key; // ModLog.Info("KTL: Group=" + group.ToString()); if (UnlockedTechs.Contains(group)) { // ModLog.Info(" UNLOCKED"); // OK to unlock var technologies = techsForGroup[group]; foreach (var technology in technologies) { MyVisualScriptLogicProvider.ResearchListRemoveItem(technology); } } else { // ModLog.Info(" LOCKED"); // block should be locked var technologies = techsForGroup[group]; if (technologies == null) { ModLog.Error("No technologies for group: " + techGroup); continue; } // ModLog.Info(" # blocks=" + technologies.Count.ToString()); foreach (var technology in technologies) { MyVisualScriptLogicProvider.ResearchListAddItem(technology); } } } }