Commit 45e2bbba authored by Marius Lindvall's avatar Marius Lindvall

Migrate from code.varden.info

parents
Pipeline #1 canceled with stages
Copyright (C) Varden Development 2014.
All rights reserved.
http://varden.info/product.php?sid=17
\ No newline at end of file
// Import Craft.Net
using Craft.Net.Anvil;
using Craft.Net.Common;
using Craft.Net.Server;
using Craft.Net.Server.Events;
using Craft.Net.TerrainGeneration;
// Import system libraries
using System;
using System.Net;
using System.IO;
// Import ChatLog
using Varden.ChatLog;
namespace TestServer
{
class ExampleImpl
{
static Level level;
static MinecraftServer server;
static void Main(string[] args)
{
// Clean up the world direectory
if (Directory.Exists("world"))
Directory.Delete("world", true);
// Generate a new level
level = new Level(new StandardGenerator(), "world");
level.AddWorld("region");
level.AddWorld("test", new FlatlandGenerator());
level.Worlds[1].GenerateChunk(Coordinates2D.Zero);
level.SaveTo("world");
// Initialize ChatLog with a custom configuration:
var chatlog = new ChatLog(new Configuration() { ColorPack = ColorPack.Dark, MaxLogs = 26 });
chatlog.Initialize();
// Make a new server:
server = new MinecraftServer(level);
// Hook ChatLog into the server:
server.ChatMessage += chatlog.ChatMessageHook;
// Configure the server:
server.Settings.OnlineMode = true;
server.Settings.MotD = "Craft.Net Test Server";
// Start the server
server.Start(new IPEndPoint(IPAddress.Any, 25565));
Console.WriteLine("Press 'q' to exit");
ConsoleKeyInfo cki;
do cki = Console.ReadKey(true);
while (cki.KeyChar != 'q');
server.Stop();
}
}
}
' Copyright (C) 2014 Varden Development. All rights reserved.
Imports Craft.Net.Server.Events
Imports System.IO
Imports System.Runtime.InteropServices
Imports System.Text
Public Class ChatLog
Public themes As Themes
Public htmlConverter As HtmlConverter
Public configManager As Configuration
#Region "Constructor"
''' <summary>
''' Initializes ChatLog with the default configuration.
''' </summary>
''' <remarks></remarks>
Public Sub New()
Me.themes = New Themes(Me)
Me.htmlConverter = New HtmlConverter(Me)
Me.configManager = New Configuration()
End Sub
''' <summary>
''' Initializes ChatLog with a custom configuration.
''' </summary>
''' <param name="config"></param>
''' <remarks></remarks>
Public Sub New(ByVal config As Configuration)
Me.themes = New Themes(Me)
Me.htmlConverter = New HtmlConverter(Me)
Me.configManager = config
End Sub
#End Region
#Region "Private variables"
''' <summary>
''' Whether or not ChatLog has been initialized. Please use IsInitialized instead.
''' </summary>
Private Initialized As Boolean = False
''' <summary>
''' Whether or not ChatLog is currently initializing. Please use IsInitializing instead.
''' </summary>
Private InitializationInProgress As Boolean = False
''' <summary>
''' The log file handle ChatLog uses.
''' </summary>
Private LogFile As FileStream = Nothing
''' <summary>
''' The date the log file was started.
''' </summary>
Private LogDate As Date = Date.Today
#End Region
#Region "Public properties"
''' <summary>
''' Returns a boolean indicating whether or not ChatLog has been initialized.
''' </summary>
''' <returns>True if ChatLog has been initialized, False otherwise.</returns>
Public ReadOnly Property IsInitialized
Get
Return Initialized
End Get
End Property
''' <summary>
''' Returns whether or not ChatLog is currently initializing.
''' </summary>
''' <returns>True if ChatLog is currently initializing, False otherwise.</returns>
Public ReadOnly Property IsInitializing
Get
Return InitializationInProgress
End Get
End Property
#End Region
#Region "Craft.Net hooks"
''' <summary>
''' The ChatLog hook for Craft.Net. Add this to MinecraftServer.ChatMessage.
''' </summary>
''' <param name="sender">The method sender. Required for hooking into ChatMessage events.</param>
''' <param name="e">The chat message arguments themselves. Required for ChatLog to function at all.</param>
Public Sub ChatMessageHook(ByVal sender As Object, ByVal e As ChatMessageEventArgs)
If Me.InitializationInProgress Then Return
If Not Me.IsInitialized Then
Initialize()
End If
VerifyFileDate()
Dim logLine As String = "<" & e.Origin.Username & "> " & e.Message.FullText()
logLine = Me.htmlConverter.Convert(logLine)
Dim lineBytes() As Byte = Encoding.UTF8.GetBytes(logLine)
Me.LogFile.Write(lineBytes, 0, lineBytes.Count())
End Sub
#End Region
#Region "Public methods"
''' <summary>
''' Initializes ChatLog.
''' </summary>
''' <returns>True if successfully initialized, False otherwise.</returns>
Public Function Initialize()
If Me.IsInitialized Then
LogWarning("Initialization attempted, however plugin has already been initialized. Aborting initialization.")
Return False
End If
If Me.InitializationInProgress Then
LogWarning("Attempted initialization when plugin was already initializing.")
Return False
End If
Me.InitializationInProgress = True
LogInfo("Initializing...")
If Not My.Computer.FileSystem.DirectoryExists("chatlogs") Then
LogInfo("Creating chatlogs directory...")
My.Computer.FileSystem.CreateDirectory("chatlogs")
End If
Dim fi() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo("chatlogs").GetFiles()
Dim fisorted() As FileInfo = (From file As FileInfo In fi Order By file.FullName Ascending).ToArray()
If fisorted.Count() > Me.configManager.MaxLogs Then
For i As Integer = fisorted.Count() - 1 To Me.configManager.MaxLogs Step -1
Try
fisorted(i).Delete()
Catch ex As Exception
LogSevere("Could not delete excessive logs!")
End Try
Next
End If
Dim logOK As Boolean = InitializeLogFile()
If Not logOK Then Return False
LogInfo("Successfully initialized.")
Me.Initialized = True
Me.InitializationInProgress = False
Return IsInitialized
End Function
#End Region
#Region "Private methods"
Private Function InitializeLogFile()
Dim timestamp As String = DateTime.Today.ToString("yyyy-MM-dd")
Dim filename As String = "chatlogs/" & timestamp & ".htm"
Dim fi As New FileInfo(filename)
Try
Me.LogFile = fi.Open(FileMode.Append, FileAccess.Write)
Catch ex As Exception
Dim errorCode As Integer = Marshal.GetHRForException(ex) And ((1 << 16) - 1)
If errorCode = 32 OrElse errorCode = 33 Then
LogSevere("Could not initialize the log file because it is already in use by another process.")
End If
Return False
End Try
Return True
End Function
Private Sub VerifyFileDate()
If Not Me.LogDate = Date.Today Then
Me.LogDate = Date.Today
Me.InitializationInProgress = True
Me.LogFile.Close()
Dim newLogOK As Boolean = InitializeLogFile()
If Not newLogOK Then
Me.Initialized = False
Me.LogFile = Nothing
End If
Me.InitializationInProgress = False
End If
End Sub
#End Region
#Region "Logging"
Public Sub LogInfo(ByVal message As String)
Console.WriteLine("[ChatLog] [INFO] " & message)
End Sub
Public Sub LogWarning(ByVal message As String)
Console.WriteLine("[ChatLog] [WARNING]" & message)
End Sub
Public Sub LogSevere(ByVal message As String)
Console.WriteLine("[ChatLog] [SEVERE] " & message)
End Sub
#End Region
End Class
' Copyright (C) 2014 Varden Development. All rights reserved.
Public Enum ColorPack
Normal = 0
Dark = 1
End Enum
' Copyright (C) 2014 Varden Development. All rights reserved.
Public Class Configuration
Public Property MaxLogs As Integer = -1
Public Property ColorPack As ColorPack = Varden.ChatLog.ColorPack.Normal
End Class
' Copyright (C) 2014 Varden Development. All rights reserved.
Public Class HtmlConverter
Private cl As ChatLog
Public Sub New(ByRef cl As ChatLog)
Me.cl = cl
End Sub
Public Function Convert(ByVal message As String) As String
Dim curTime As String = DateTime.Now.ToString("HH:mm:ss")
Dim prefix As String = "<code><span>"
Dim suffix As String = "</span></code><br>" & vbCrLf
Dim rPar1 As String = Replace(message, "<", "&lt;")
Dim theme() As String = Me.cl.themes.GetTheme(Me.cl.themes.CurrentTheme)
rPar1 = Replace(rPar1, ">", "&gt;")
rPar1 = Replace(rPar1, "§0", "</span><span style=""color: #" & theme(0) & ";"">")
rPar1 = Replace(rPar1, "§1", "</span><span style=""color: #" & theme(1) & ";"">")
rPar1 = Replace(rPar1, "§2", "</span><span style=""color: #" & theme(2) & ";"">")
rPar1 = Replace(rPar1, "§3", "</span><span style=""color: #" & theme(3) & ";"">")
rPar1 = Replace(rPar1, "§4", "</span><span style=""color: #" & theme(4) & ";"">")
rPar1 = Replace(rPar1, "§5", "</span><span style=""color: #" & theme(5) & ";"">")
rPar1 = Replace(rPar1, "§6", "</span><span style=""color: #" & theme(6) & ";"">")
rPar1 = Replace(rPar1, "§7", "</span><span style=""color: #" & theme(7) & ";"">")
rPar1 = Replace(rPar1, "§8", "</span><span style=""color: #" & theme(8) & ";"">")
rPar1 = Replace(rPar1, "§9", "</span><span style=""color: #" & theme(9) & ";"">")
rPar1 = Replace(rPar1, "§a", "</span><span style=""color: #" & theme(10) & ";"">")
rPar1 = Replace(rPar1, "§b", "</span><span style=""color: #" & theme(11) & ";"">")
rPar1 = Replace(rPar1, "§c", "</span><span style=""color: #" & theme(12) & ";"">")
rPar1 = Replace(rPar1, "§d", "</span><span style=""color: #" & theme(13) & ";"">")
rPar1 = Replace(rPar1, "§e", "</span><span style=""color: #" & theme(14) & ";"">")
rPar1 = Replace(rPar1, "§f", "</span><span style=""color: #" & theme(15) & ";"">") 'is white, but use black to make it visible above background
rPar1 = Replace(rPar1, "§A", "</span><span style=""color: #" & theme(10) & ";"">")
rPar1 = Replace(rPar1, "§B", "</span><span style=""color: #" & theme(11) & ";"">")
rPar1 = Replace(rPar1, "§C", "</span><span style=""color: #" & theme(12) & ";"">")
rPar1 = Replace(rPar1, "§D", "</span><span style=""color: #" & theme(13) & ";"">")
rPar1 = Replace(rPar1, "§E", "</span><span style=""color: #" & theme(14) & ";"">")
rPar1 = Replace(rPar1, "§F", "</span><span style=""color: #" & theme(15) & ";"">") 'is white, but use black to make it visible above background
rPar1 = Replace(rPar1, "§k", "")
rPar1 = Replace(rPar1, "§l", "")
rPar1 = Replace(rPar1, "§m", "")
rPar1 = Replace(rPar1, "§n", "")
rPar1 = Replace(rPar1, "§o", "")
rPar1 = Replace(rPar1, "§r", "</span><span>")
rPar1 = Replace(rPar1, "§K", "")
rPar1 = Replace(rPar1, "§L", "")
rPar1 = Replace(rPar1, "§M", "")
rPar1 = Replace(rPar1, "§N", "")
rPar1 = Replace(rPar1, "§O", "")
rPar1 = Replace(rPar1, "§R", "</span><span>")
Return prefix & rPar1 & suffix
End Function
End Class
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.34014
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>false</MySubMain>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<ApplicationType>1</ApplicationType>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>
Imports System.Resources
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' General Information about an assembly is controlled through the following
' set of attributes. Change these attribute values to modify the information
' associated with an assembly.
' Review the values of the assembly attributes
<Assembly: AssemblyTitle("ChatLog for Craft.Net")>
<Assembly: AssemblyDescription("ChatLog for the Craft.Net software. Logs all chat to a dedicated 'chatlogs' folder.")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("ChatLog")>
<Assembly: AssemblyCopyright("Copyright © Varden Development 2014")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(True)>
'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("9ef1b916-037f-4e78-9411-f20c2abe145d")>
' Version information for an assembly consists of the following four values:
'
' Major Version
' Minor Version
' Build Number
' Revision
'
' You can specify all the values or you can default the Build and Revision Numbers
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("0.0.1.40")>
<Assembly: AssemblyFileVersion("0.0.1.40")>
<Assembly: NeutralResourcesLanguageAttribute("en")>
\ No newline at end of file
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.34014
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Imports System
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Varden.ChatLog.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set
resourceCulture = value
End Set
End Property
End Module
End Namespace
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.34014
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
#Region "My.Settings Auto-Save Functionality"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.Varden.ChatLog.My.MySettings
Get
Return Global.Varden.ChatLog.My.MySettings.Default
End Get
End Property
End Module
End Namespace
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
' Copyright (C) 2014 Varden Development. All rights reserved.
Public Class Themes
Private cl As ChatLog
Private themes()() As String
Public Property CurrentTheme As Integer = 0
Public Sub New(ByRef cl As ChatLog)
Me.cl = cl
End Sub
Public Function GetTheme(ByVal theme As Integer) As String()
Return themes(theme)
End Function
Public Sub InitThemes()
Me.cl.LogInfo("Initializing themes...")
themes = New String()() { _
New String() {"000", "00A", "0A0", "0AA", "A00", "A0A", "FA0", "AAA", "555", "55F", "5F5", "5FF", "F55", "F5F", "FF5", "000"}, _
New String() {"000000", "000071", "007100", "007171", "710000", "710071", "AA7100", "717171", "383838", "3838AA", "38AA38", "38AAAA", "AA3838", "AA38AA", "AAAA38", "000000"} _
}
Me.cl.LogInfo("Themes initialized.")
End Sub
End Class
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B845A69D-48B2-4E37-A87B-005B6AA9CFCA}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>Varden.ChatLog</RootNamespace>
<AssemblyName>Varden.ChatLog</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>Varden.ChatLog.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>Varden.ChatLog.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>