Exemplo n.º 1
0
 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;
            }
        }
Exemplo n.º 3
0
    // 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;
        }
    }
Exemplo n.º 4
0
 // 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();
 }
Exemplo n.º 5
0
    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);
    }
Exemplo n.º 6
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));
                }
        }
Exemplo n.º 7
0
        /// <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);
        }
Exemplo n.º 8
0
        /// <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);
        }
Exemplo n.º 9
0
        /// <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);
        }
Exemplo n.º 10
0
 public CharaxDirHelper(String root, CharacterResourceManager res)
     : this(root, res.Width, res.Height)
 {
 }
Exemplo n.º 11
0
 public void Set(Guess guess)
 {
     character.texture = CharacterResourceManager.CardImageTexture(guess.Character);
     weapon.texture    = CharacterResourceManager.CardImageTexture(guess.Weapon);
     room.texture      = CharacterResourceManager.CardImageTexture(guess.Room);
 }
Exemplo n.º 12
0
    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;
        }
    }
Exemplo n.º 13
0
 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());
         }
     }
 }