public void Set(Guess guess, int player, bool isAccusation = false) { text.text = "Player " + player + (isAccusation ? "'s Accusation" : "'s Guess"); character.texture = CharacterResourceManager.CardImageTexture(guess.Character); weapon.texture = CharacterResourceManager.CardImageTexture(guess.Weapon); room.texture = CharacterResourceManager.CardImageTexture(guess.Room); }
internal PackerOptionsDialog(CharacterResourceManager res) { InitializeComponent(); if (res.FileSystemProxy is AFSFileSystemProxy) { rbSaveAllWithState.Enabled = false; } }
// Start is called before the first frame update void Start() { List <CharacterResourceManager.Cards> playerCards = ClueData.Instance.GetPlayerCards(0); for (int i = 0; i < rawImages.Length; i++) { Texture2D texture = CharacterResourceManager.CardImageTexture(playerCards[i]); rawImages[i].GetComponent <RawImage>().texture = texture; } }
// Start is called before the first frame update void Start() { character.target = CharacterResourceManager.CardImageTexture(ClueData.Instance.Solution.Character); weapon.target = CharacterResourceManager.CardImageTexture(ClueData.Instance.Solution.Weapon); room.target = CharacterResourceManager.CardImageTexture(ClueData.Instance.Solution.Room); currentActive = 0; character.Activate(); source.clip = drum; source.loop = true; source.Play(); }
private void MoveWeaponLocation(CharacterResourceManager.Cards weapon, CharacterResourceManager.Cards room) { Vector3 location = CharacterResourceManager.RoomLocation(room) + RandomXZVector(0.5f, 1f); if (weaponObjects == null || !weaponObjects.ContainsKey(weapon)) { if (weaponObjects == null) { weaponObjects = new Dictionary <CharacterResourceManager.Cards, GameObject>(); } GameObject gameObject = Instantiate(GetWeaponPrefab(weapon), location, Quaternion.identity); weaponObjects[weapon] = gameObject; } else { weaponObjects[weapon].transform.position = location; } weaponObjects[weapon].transform.Rotate(0, UnityEngine.Random.Range(0, 360f), 0); }
static void LoadCharacterFromStream(CharacterResourceManager resmgr, Stream s) { // Load XMLDocument XmlDocument doc = new XmlDocument(); s.Position = 0; doc.Load(s); // Get Character Name and Verify it String name = doc.SelectSingleNode("MoltenMercuryState").Attributes["name"].InnerText; if (name != resmgr.Name) { WriteMessage(MessageType.Routine, "Character names in resources and in the state don't seem to match!\n" + " Do you want to force-load state? [Y/N]"); while (true) { if (Console.ReadLine().ToUpper().StartsWith("Y")) break; else if (Console.ReadLine().ToUpper().StartsWith("N")) return; } } // Clear current selection and layer adjustment data resmgr.ClearSelection(); foreach (CharaSetGroup csg in resmgr) foreach (CharaSet cset in csg) cset.LayerAdjustment = 0; // Load Selection foreach (XmlNode selNode in doc.SelectNodes("MoltenMercuryState/Selection")) { String groupName = selNode.Attributes["group"].InnerText; String setName = selNode.Attributes["set"].InnerText; CharaSetGroup cgroup = resmgr.GetGroupByName(groupName); if (cgroup == null) throw new Exception(String.Format("CharaSetGroup {0} Not Found!", groupName)); CharaSet cset = cgroup.GetSetByName(setName); if (cset == null) throw new Exception(String.Format("CharaSet {0} Not Found!", setName)); if (cgroup.Multiselect) { Int32 ladj = Int32.Parse(selNode.Attributes["adjustment"].InnerText); cset.LayerAdjustment = ladj; } cset.Selected = true; } // Regenerate layer adjustment values foreach (CharaSetGroup csg in resmgr) { if (csg.Multiselect) GenerateLayerAdjustments(csg); } resmgr.Processors.Clear(); // Load Color Presets foreach (XmlNode colNode in doc.SelectNodes("MoltenMercuryState/ImageProcessor")) { String group = colNode.Attributes["colorgroup"].InnerText; String preset = colNode.InnerText; if (resmgr.Processors.ContainsKey(group)) resmgr.Processors[group].DecodeSettings(preset); else resmgr.Processors.Add(group, (new ImageProcessor()).DecodeSettings(preset)); } }
/// <summary> /// Loads character resources from another application whose /// data formats are supported by this one. /// </summary> /// <param name="path"></param> public void LoadCharacterResourcesInterop(String path) { Boolean hasState = true; using (CharaBlocker cb = new CharaBlocker(this)) { // Load Resources and reflect them on UI Interop.CharaxDirHelper interopHelper = new Interop.CharaxDirHelper(path); using (MemoryStream tmp = new MemoryStream()) { interopHelper.GenerateDescriptor(tmp); tmp.Position = 0; resourceManager = CharacterResourceManager.FromXML(tmp); } // Set up bitmap loader with root at path dir resourceManager.FileSystemProxy = new DefaultFileSystemProxy(Path.GetDirectoryName(path)); ReloadResourceManager(); ResetSelection(); UpdateColorProcessorList(); cmbColorProcessors.SelectedIndex = 0; // If there is a saved state, restore it as well // Here we usa a FileSystemProxy because we have no idea whether // the state is stored on a file or a package Stream state = resourceManager.FileSystemProxy.GetSavedStateStream(); if (state != null) { LoadCharacterFromStream(state, false); state.Dispose(); } else { ResetSelection(); resourceManager.Processors.Clear(); UpdateColorProcessorList(); hasState = false; } // Reflect color processors on the UI UpdateColorProcessorList(); // Reload Chara Set List ReloadPropertyListView((CharaSetGroup)cmbCharaProp.SelectedItem); // Generate Layer Adjustment values foreach (CharaSetGroup csg in resourceManager) { if (!csg.Multiselect) continue; GenerateLayerAdjustments(csg); } // Maintain CharaBlocker instance cb.DummyMethod(); } miTools.Enabled = false; if (!hasState) UpdateCharacterPreviewAsync(); DebugHelper.DebugPrint("Successfully loaded Legacy: {0}", resourceManager.Name); }
/// <summary> /// Loads a character packed into AFS file /// File extension doesn't have to be AFS /// </summary> /// <param name="path"></param> public void LoadCharacterResourcesAFS(String path) { using (CharaBlocker cb = new CharaBlocker(this)) { AFSFileSystemProxy proxy = new AFSFileSystemProxy(path); using (ExStream descriptor = new ExStream()) { PackageEntry entry = proxy.Archive.TryGetEntry("character.mcres"); proxy.Archive.Extract(entry, descriptor); descriptor.Position = 0; resourceManager = CharacterResourceManager.FromXML(descriptor); } resourceManager.FileSystemProxy = proxy; resourceManager.AllowChange = proxy.Archive.TryGetEntry(".lock") == null; ReloadResourceManager(); ResetSelection(); UpdateColorProcessorList(); cmbColorProcessors.SelectedIndex = 0; // If there is a saved state, restore it as well // Here we usa a FileSystemProxy because we have no idea whether // the state is stored on a file or a package Stream state = resourceManager.FileSystemProxy.GetSavedStateStream(); if (state != null) { LoadCharacterFromStream(state, false); state.Dispose(); } else { ResetSelection(); resourceManager.Processors.Clear(); UpdateColorProcessorList(); } // Reflect color processors on the UI UpdateColorProcessorList(); // Reload Chara Set List ReloadPropertyListView((CharaSetGroup)cmbCharaProp.SelectedItem); // Generate Layer Adjustment values foreach (CharaSetGroup csg in resourceManager) { if (!csg.Multiselect) continue; GenerateLayerAdjustments(csg); } // Maintain CharaBlocker instance cb.DummyMethod(); } miTools.Enabled = false; UpdateCharacterPreviewAsync(); DebugHelper.DebugPrint("Successfully loaded AFS: {0}", resourceManager.Name); }
/// <summary> /// Loads character resources from an XML file /// </summary> /// <param name="path">Path to the extension</param> public void LoadCharacterResourcesRaw(String path) { using (CharaBlocker cb = new CharaBlocker(this)) { // Load Resources and reflect them on UI resourceManager = CharacterResourceManager.FromXML(path); // Set up bitmap loader with root at path dir resourceManager.FileSystemProxy = new DefaultFileSystemProxy(Path.GetDirectoryName(path)); // Update UI ReloadResourceManager(); // Reinitialize selection buffer ResetSelection(); // Reflect color processors on the UI UpdateColorProcessorList(); cmbColorProcessors.SelectedIndex = 0; // If there is a saved state, restore it as well // Here we usa a FileSystemProxy because we have no idea whether // the state is stored on a file or a package Stream state = resourceManager.FileSystemProxy.GetSavedStateStream(); if (state != null) { LoadCharacterFromStream(state, false); state.Dispose(); } // Generate Layer Adjustment values foreach (CharaSetGroup csg in resourceManager) { if (!csg.Multiselect) continue; GenerateLayerAdjustments(csg); } // Enable tool menu miTools.Enabled = File.Exists(Path.Combine(Application.StartupPath, "mcu.exe")); // Maintain CharaBlocker instance cb.DummyMethod(); } DebugHelper.DebugPrint("Successfully loaded MCRES: {0}", resourceManager.Name); }
public CharaxDirHelper(String root, CharacterResourceManager res) : this(root, res.Width, res.Height) { }
public void Set(Guess guess) { character.texture = CharacterResourceManager.CardImageTexture(guess.Character); weapon.texture = CharacterResourceManager.CardImageTexture(guess.Weapon); room.texture = CharacterResourceManager.CardImageTexture(guess.Room); }
public void FindingCards() { CharacterResourceManager.Cards cardToShow = CharacterResourceManager.Cards.Antifreeze; TurnState targetState = TurnState.PreTurn; int showedCardSource = -1; // sure turnManager.PushStack(); int cT = turnManager.CurrentTurn; bool control = true; // yes, this is how lazy i am, no need to bother writing a real algorithm while (control) { turnManager.NextTurn(); if (turnManager.CurrentTurn == cT) { targetState = TurnState.AccusationOption; control = false; } else { // Yes, this is going to be how it works, deal with it (in real clue there is a choice of what card to show) if (ClueData.Instance.HasPlayerCard(guess.Character, turnManager.CurrentTurn - 1)) { control = false; targetState = TurnState.ShowingCards; cardToShow = guess.Character; showedCardSource = turnManager.CurrentTurn; } else if (ClueData.Instance.HasPlayerCard(guess.Weapon, turnManager.CurrentTurn - 1)) { control = false; targetState = TurnState.ShowingCards; cardToShow = guess.Weapon; showedCardSource = turnManager.CurrentTurn; } else if (ClueData.Instance.HasPlayerCard(guess.Room, turnManager.CurrentTurn - 1)) { control = false; targetState = TurnState.ShowingCards; cardToShow = guess.Room; showedCardSource = turnManager.CurrentTurn; } } } turnManager.PopStack(); if (targetState.Equals(TurnState.ShowingCards)) { ClueData.Instance.ShowPlayerCard(cardToShow, turnManager.CurrentTurn - 1); if (IsCurrentTurnHuman() || showedCardSource == 1) { cardShow.Set(CharacterResourceManager.CardImageTexture(cardToShow), showedCardSource); } else { cardShow.Set(cardBack, showedCardSource); } guessDisplay.gameObject.SetActive(false); humanCardsDisplay.ShowAll(); cardShow.gameObject.SetActive(true); turnState = TurnState.ShowingCards; } else if (targetState.Equals(TurnState.AccusationOption)) { guessDisplay.gameObject.SetActive(false); humanCardsDisplay.ShowAll(); isSelected = false; aiTimer = 0; makeAccusation = false; accusationOption.Set(guess); accusationOption.gameObject.SetActive(true); turnState = TurnState.AccusationOption; } }
private void Moving() { if (isSelected) { if (isMoving) { GameObject player = ClueData.Instance.GetPlayerGameObject(turnManager.CurrentTurn - 1); player.transform.position += (targetPosition - player.transform.position) / 25f; if ((targetPosition - player.transform.position).magnitude < (boardManager.TileWidth / 30f)) { player.transform.position = targetPosition; isMoving = false; } } else { if (IsEntrance(ClueData.Instance.GetPlayerRowCol(turnManager.CurrentTurn - 1))) { humanCardsDisplay.HideAll(); characterGuessParent.SetActive(true); isSelected = false; isMoving = false; CharacterResourceManager.Cards room = GetEntranceRoom(ClueData.Instance.GetPlayerRowCol(turnManager.CurrentTurn - 1)); guessRoom = room; ClueData.Instance.GetPlayerGameObject(turnManager.CurrentTurn - 1).transform.position = CharacterResourceManager.RoomLocation(room); turnState = TurnState.ChoosingGuessCharacter; } else { turnState = TurnState.PostTurn; } } } else if (!IsCurrentTurnHuman()) { aiTimer += Time.deltaTime; if (aiTimer >= 1) { aiTimer = 0; SelectTile(AIChooseSpot()); } } }