示例#1
0
 void QuerySelectedMatter()
 {
     m_SelectedMatter = null;
     foreach (KeyValuePair <int, VCMatterInfo> kvp in VCConfig.s_Matters)
     {
         if (m_MatterUI.selection.ToLower() == kvp.Value.Name.ToLower())
         {
             m_SelectedMatter = kvp.Value;
             break;
         }
     }
 }
示例#2
0
    private static void LoadMatters()
    {
        s_Matters = new Dictionary <int, VCMatterInfo> ();
#if PLANET_EXPLORERS
        SqliteDataReader reader = LocalDatabase.Instance.ExecuteQuery("SELECT * FROM vc_material ORDER BY cast(sort as int) ASC");
        while (reader.Read())
        {
            VCMatterInfo matter = new VCMatterInfo();
            matter.ItemIndex = Convert.ToInt32(reader.GetString(reader.GetOrdinal("id")));
            matter.Order     = Convert.ToInt32(reader.GetString(reader.GetOrdinal("sort")));
            matter.ItemId    = Convert.ToInt32(reader.GetString(reader.GetOrdinal("itemid")));
//			matter.Name = reader.GetString(reader.GetOrdinal("englishname"));
            matter.Attack                  = Convert.ToSingle(reader.GetString(reader.GetOrdinal("attack")));
            matter.Defence                 = Convert.ToSingle(reader.GetString(reader.GetOrdinal("defence")));
            matter.Durability              = Convert.ToSingle(reader.GetString(reader.GetOrdinal("durability")));
            matter.Hp                      = Convert.ToSingle(reader.GetString(reader.GetOrdinal("hp")));
            matter.SellPrice               = Convert.ToSingle(reader.GetString(reader.GetOrdinal("value")));
            matter.Density                 = Convert.ToSingle(reader.GetString(reader.GetOrdinal("density")));
            matter.Elasticity              = Convert.ToSingle(reader.GetString(reader.GetOrdinal("elasticity")));
            matter.DefaultBumpStrength     = Convert.ToSingle(reader.GetString(reader.GetOrdinal("bumpstrength")));
            matter.DefaultSpecularStrength = Convert.ToSingle(reader.GetString(reader.GetOrdinal("specularstrength")));
            matter.DefaultSpecularPower    = Convert.ToSingle(reader.GetString(reader.GetOrdinal("specularpower")));
            matter.DefaultTile             = Convert.ToSingle(reader.GetString(reader.GetOrdinal("tile")));
            matter.DefaultDiffuseRes       = reader.GetString(reader.GetOrdinal("diffusemap"));
            matter.DefaultBumpRes          = reader.GetString(reader.GetOrdinal("bumpmap"));
            List <string> parts = null;
            parts = VCUtils.ExplodeString(reader.GetString(reader.GetOrdinal("specularcolor")), ';');
            matter.DefaultSpecularColor.r = (byte)(Convert.ToInt32(parts[0]));
            matter.DefaultSpecularColor.g = (byte)(Convert.ToInt32(parts[1]));
            matter.DefaultSpecularColor.b = (byte)(Convert.ToInt32(parts[2]));
            matter.DefaultSpecularColor.a = (byte)(255);
            parts.Clear();
            parts = VCUtils.ExplodeString(reader.GetString(reader.GetOrdinal("emissivecolor")), ';');
            matter.DefaultEmissiveColor.r = (byte)(Convert.ToInt32(parts[0]));
            matter.DefaultEmissiveColor.g = (byte)(Convert.ToInt32(parts[1]));
            matter.DefaultEmissiveColor.b = (byte)(Convert.ToInt32(parts[2]));
            matter.DefaultEmissiveColor.a = (byte)(255);
            parts.Clear();
            s_Matters.Add(matter.ItemIndex, matter);
        }
#endif
    }
示例#3
0
 // Send some default materials if user's material count is 0
 private static void SendDefaultMaterials()
 {
     foreach (KeyValuePair <int, VCMatterInfo> kvp in VCConfig.s_Matters)
     {
         VCMatterInfo matter = kvp.Value;
         VCMaterial   vcmat  = new VCMaterial();
         vcmat.m_Name       = "Default".ToLocalizationString() + " " + matter.Name;
         vcmat.m_MatterId   = matter.ItemIndex;
         vcmat.m_UseDefault = true;
         try
         {
             byte[]     buffer = vcmat.Export();
             ulong      guid   = CRC64.Compute(buffer);
             string     sguid  = guid.ToString("X").PadLeft(16, '0');
             FileStream fs     = new FileStream(VCConfig.s_MaterialPath + sguid + VCConfig.s_MaterialFileExt, FileMode.Create, FileAccess.ReadWrite);
             fs.Write(buffer, 0, buffer.Length);
             fs.Close();
             vcmat.Import(buffer);
         }
         catch (Exception e)
         {
             vcmat.Destroy();
             Debug.LogError("Save material [" + vcmat.m_Name + "] failed ! \r\n" + e.ToString());
             continue;
         }
         if (s_Materials.ContainsKey(vcmat.m_Guid))
         {
             s_Materials[vcmat.m_Guid].Destroy();
             s_Materials[vcmat.m_Guid] = vcmat;
         }
         else
         {
             s_Materials.Add(vcmat.m_Guid, vcmat);
         }
     }
 }
示例#4
0
    // I/O
    // From byte buffer
    public void Import(byte[] buffer)
    {
        // Generate a ulong GUID
        m_Guid = CRC64.Compute(buffer);
        // Read the buffer
        using (MemoryStream ms = new MemoryStream(buffer))
        {
            BinaryReader r = new BinaryReader(ms);
            // Read version
            int version = r.ReadInt32();
            // Version control
            switch (version)
            {
            case 0x1000:
            {
                // Read name & game mat item index
                m_Name     = r.ReadString();
                m_MatterId = r.ReadInt32();

                // Find mat item config
                VCMatterInfo mc = null;
                if (VCConfig.s_Matters != null && VCConfig.s_Matters.ContainsKey(m_MatterId))
                {
                    mc = VCConfig.s_Matters[m_MatterId];
                }
                else
                {
                    Debug.LogError("VCConfig.s_Matters was corrupt.");
                    break;
                }

                // Fetch item id
                m_ItemId = mc.ItemId;

                m_UseDefault = r.ReadBoolean();
                // Use default set
                if (m_UseDefault)
                {
                    // Load properties
                    m_BumpStrength     = mc.DefaultBumpStrength;
                    m_SpecularColor    = mc.DefaultSpecularColor;
                    m_SpecularStrength = mc.DefaultSpecularStrength;
                    m_SpecularPower    = mc.DefaultSpecularPower;
                    m_EmissiveColor    = mc.DefaultEmissiveColor;
                    m_Tile             = mc.DefaultTile;

                    // Load texure from resource
                    UnityEngine.Object temp = null;

                    temp = Resources.Load(mc.DefaultDiffuseRes);
                    if (temp != null)
                    {
                        m_DiffuseTex = Texture2D.Instantiate(temp) as Texture2D;
                    }
                    if (m_DiffuseTex == null)
                    {
                        m_DiffuseTex = new Texture2D(4, 4, TextureFormat.ARGB32, false);
                    }
                    m_DiffuseData = m_DiffuseTex.EncodeToPNG();

                    temp = Resources.Load(mc.DefaultBumpRes);
                    if (temp != null)
                    {
                        m_BumpTex = Texture2D.Instantiate(temp) as Texture2D;
                    }
                    if (m_BumpTex == null)
                    {
                        m_BumpTex = new Texture2D(4, 4, TextureFormat.ARGB32, false);
                    }
                    m_BumpData = m_BumpTex.EncodeToPNG();
                }
                // User customize
                else
                {
                    // Load properties
                    m_BumpStrength     = r.ReadSingle();
                    m_SpecularColor.r  = r.ReadByte();
                    m_SpecularColor.g  = r.ReadByte();
                    m_SpecularColor.b  = r.ReadByte();
                    m_SpecularColor.a  = r.ReadByte();
                    m_SpecularStrength = r.ReadSingle();
                    m_SpecularPower    = r.ReadSingle();
                    m_EmissiveColor.r  = r.ReadByte();
                    m_EmissiveColor.g  = r.ReadByte();
                    m_EmissiveColor.b  = r.ReadByte();
                    m_EmissiveColor.a  = r.ReadByte();


                    // Load texture data and create texture from the data,
                    // then resize to TEX_RESOLUTION and update the byte data
                    m_Tile = r.ReadSingle();

                    int l = 0;
                    l             = r.ReadInt32();
                    m_DiffuseData = r.ReadBytes(l);
                    m_DiffuseTex  = new Texture2D(2, 2, TextureFormat.ARGB32, false);
                    m_DiffuseTex.LoadImage(m_DiffuseData);
                    m_DiffuseData = m_DiffuseTex.EncodeToPNG();

                    l          = r.ReadInt32();
                    m_BumpData = r.ReadBytes(l);
                    m_BumpTex  = new Texture2D(2, 2, TextureFormat.ARGB32, false);
                    m_BumpTex.LoadImage(m_BumpData);
                    m_BumpData = m_BumpTex.EncodeToPNG();
                }
                break;
            }

            default:
                break;
            }
            r.Close();
            ms.Close();
        }
    }