v1.7a (12.01.2010): NEW: Decreased size of game executable.
FIX: Fixed bug with checkbox definition (crash on game shutdown).
WindowEdit.exe updates:
NEW: Support for checkbox.
NEW: An option "Draw selection for selected control only" in Tools->Options.
If disabled, selection will drawn for all visible objects in window, even if they are not selected.
v1.7 (10.01.2010): + Added new visual control:
CHECKBOX. Similar to button control.
Example of declaration in
.window file:
CHECKBOX
{
NAME="MyCheckbox"
X=-420
Y=240
WIDTH=100
HEIGHT=100
DISABLED=FALSE
VISIBLE=TRUE
PARENT_NOTIFY=TRUE
PIXEL_PERFECT=FALSE
FOCUSABLE=FALSE
CENTER_IMAGE=FALSE
PRESSED=TRUE ; initial state: checked or not. true - checked.
IMAGE="checkbox_checked.png" ; image of initial state. should be similar to "PRESSED" state.
SCRIPT="scripts\system\mycheckbox.script"
EDITOR_PROPERTY
{
NAME="Selected"
VALUE="False"
}
}
Example of
mycheckbox.script:
#include "scripts\base.inc"
on "init" // called immediately after script file has been read.
{
self.SetPressedOnImage("checkbox_checked.png"); // checked image
self.SetPressedOffImage("checkbox_unchecked.png"); // unchecked image.
}
on "checked" // current image of checkbox will be automatically switched to image, that you set in "SetPressedOnImage" call.
{
Game.Msg("checked!");
}
on "unchecked" // same. Automatically will be switched to image you set in "SetPressedOffImage".
{
Game.Msg("unchecked!");
}
+ Added "Type" identifier to in-game debug statistic. Now when mouse is over some object, its will show not "Name: active_object", but "Name: active_object (Type: type_of_object)". Plus little cosmetician changes in text output.
+ Added new param to exe's command line: "-nosettingsdlg" (
Aleksandr Recoba request). Game executable started with this option will not show settings dialog in first time and in following startups of game also.
But you don't have to call your game exe with "-nosettingsdlg" all time! Its need just in first time launch when your game has been just installed, settings are set automatically by your installer, and you just won't allow user to see settings dialog.
If you gonna use this you have to write to registry(or ini), where you stored your game options, default settings via your game installer.
Plus, this command line param is useful if all needed in your opinion options are already set in "Options" menu in your game.
- Fixed Game.IsFullScreenSwitchSupported property. Now it works as suggested.
Some notes that will be useful mostly to advanced developers who plan to merge his version of engine sources with mine:
a) Compiled with DirectX 9 SDK November 2008 & Windows SDK v7.0. So you need to deploy d3dx9_40.dll with your game.
WME_D3D9.exe still working fine on DX8-based hardware (I test every new version of
KE on GeForce 2, in addition to mine primary gfx video card GeForce 9800GTX+), so you can don't use
wme.exe(DX8-based renderer).
b) d3dx8tex.h replaced with d3dx9tex.h
c) Moved "b)" from 3DShadowGen.cpp to dcgf.h (prevent compile errors because "a)" changes)
d) Added DIRECTSOUND_HEADER_VERSION & DIRECTINPUT_HEADER_VERSION to dcgf.h (prevent some compile errors because "a)" changes)
e) PlatformWin.h: typedef GUID *REFKNOWNFOLDERID; -> typedef GUID *REFKNOWNFOLDERIDA; (prevent mass compile errors because "a)" changes)
f) Internal
Game->LOG function has been changed from (HRESULT res, LPSTR fmt, ...) to (int EchoInGame, LPSTR fmt, ...):
Game->LOG(0, "bla") - echo to log file only.
Game->LOG(1, "bla") - echo to log file plus echo to in-game window in manner of "Script Runtime Error" message. This will be widely used by me specially for situations like "Syntax error in BLABLA definition", which will be outputted via Game->LOG(1, error_message). In this moment its used only in checkbox definition. Try to make typo in token, and you'll see how it will be outputted in game.
g) _WIN32_WINNT has been changed from 0x0500 to 0x0501.
P.S. Yes, I know, checkboxes could be easily implemented via buttons and checkbox control not needed at all, but because I plan to add scrollbar & combobox controls, I had to start from something to understand how to add new visual controls in wme, and chosen checkbox control as "launch pad".
v1.6 (06.01.2010): + Added property Game.IsFullScreenSwitchSupported. Returns true/false. Check that game is running in supported resolution mode. If its not, SetWindowedMode() will not function. So you need to check it before show in options "Windowed"(for example) checkbox.
* Changed behavior of how SetWindowedMode(bool
value) works. Now it returns int as a result of its call. 0 - nothing to change (current state(
windowed or fullscreen) of window is a
value you want to set), 1 - mode has been changed successfully, 2 - Game is running in unsupported resolution mode (also, you will get script runtime error).
* Deleted some (mine) debug messages.
- Fixed possible crash in registry functions (regwritenumber, regreadnumber, regwritestring, regreadstring).
Thanks to
Mnemonic for suggestions.
v1.5 (03.01.2010): + libtheora has been updated from 1.0 to 1.1.1
+ Adds and fixes from latest WME v1.9.1 release.
* wme.rc has been updated.
v1.4 (18.12.2009): + Method
this.GetLayer() (namespace Entity) - returns reference to entity's layer (#4 in
http://forum.dead-code.org/index.php?topic=4013.0).
Example:
http://kinjal.apeironstudios.com/testlayer.rar (click on squares)
+ Now the buttons & static-labels have an AlphaColor (transparency) property.
Example: btn.AlphaColor = RGB(255, 255, 255, 50);
+ Two new methods to namespace Entity: bool SetBeforeEntity([int index]) / SetAfterEntity([int index]) - changes position of entity in the layer. Applies only in case if the entity in the same layer.
Useful for animation, for example, of opening door. Don't need to recreate entity anymore.
+ int GetIndex (namespace - Entity) - returns index(position) of current entity in the layer. (since entity could exist without layer, in this case function will return -1).
- Fixed lack of cursor when its over window border, when application in windowed mode.
v1.3 (15.12.2009): + Gamma-correction feature.
Game.SetGamma(int) - set gamma to integer value. values - from 0(darky-darky) to 254(brightly-brightly).
int Game.GetGamma();
Game.SetGammaDefault(int) - there you should set
default gamma value for your game. (if its not defined, default value will be used, which is arbitrary, but close to my monitor - 140). This function, in difference to othera gamma-related functions,
must be set. Once. In game.script for example.
Game.RestoreGamma(). - set up gamma to value you specified by calling SetGammaDefault.
Example:
const GAMMA_STEP = 5;
Game.SetGammaDefault(249); // let eyes cry...
....
// Imagine that user play with gamma-control slider in your options menu...
var current_gamma = Game.GetGamma();
Game.SetGamma(current_gamma + GAMMA_STEP);
....
// User is done with slider, and he wants to set gamma as it was before he changed it. So assuming he clicking on button like... "Default gamma".
Game.RestoreGamma(); // 249.
+ libpng updated from 1.2.22 to 1.2.41
* Method
Game.ShowText() renamed back to
Game.ShowVersion(
text, x = 863, y = 740, width = 160, text_alignment = 0). In replacement this change, method
Game.Msg(text) has been expanded to
Game.Msg(
text, duration = 3000, x = 0, y = 20, text_alignment = 0).
* Last argument in Game.ShowVersion() - text_aligment - now takes not 10/20/30 as before, but 0/1/2 (default value - 0, i.e TAL_LEFT). So now you can use TAL_* constants for text aligment in consts.inc file.
* Changes made to settings dialog in WME Kinjal Edition has been reverted to original WME 1.9.0beta state.
v1.2 (12.12.2009): + New theora methods in entity namespace: (
http://forum.dead-code.org/index.php?topic=3725.0)
int GetTheoraPositionInFrames(); -- returns the frame, the video player is currently on
float GetTheoraPositionInSeconds();
float SetTheoraPositionInSeconds(int seconds); -- sets the video playback to the specified seconds.
note: if any function fails, it returns -1.
+ Slightly decreased lag in GetSoundPosition, GetMusicPosition, GetMusicChannelPosition functions (tested on "ogg" files only). However, bugginess of these methods can't be fixed easily. (
http://forum.dead-code.org/index.php?topic=3283.0)
+ Game.MusicFadeOut(fade_out_millisec, channel = 0) script functions added. (Mnemonic's todo).
Example:
Game.PlayMusicChannel(0, ...)
Game.MusicFadeOut(3000, 0);
+ Slightly optimized cursor responsivity, again (did you noticed reduced cursor lags? give me feedback about it).
* Enhanced Game.ShowVersion(text). Its renamed to Game.ShowText now. Now its takes following arguments: Game.ShowText(text, x = 863, y = 740, width = 160, text_alignment = 10).
note: alignment - takes 10 or 20 or 30. 10 - left, 20 - center, 30 - right.
note2: but it still support hh/mm/yyyy hh:mins in "text".
- Fixed engine crash with Game.TotalNumItems/NumItems. (
http://forum.dead-code.org/index.php?topic=3026.0)
- Other small updates(MusicCrossfade optimization, SetWindowedMode glitch fixes, fixed overflow bug in ShowText when this method has been called multiple times, no minimize/maximize/close buttons after switch to windowed mode via SetWindowedMode(true), etc...).
v1.1 (11.12.2009): + New script function for turn on/off vsync in fullscreen (without engine restart): Game.SetVSyncMode(bool true/false).
Note: SetVSyncMode() function
do not override user's driver settings.
+ A slighty optimized cursor responsivity in full screen mode with vsync enabled. (subjectively. test it yourself and give me feedback)
v1.0 (09.12.2009): 1. Disabled settings dialog (by default, but still can be enabled via specified option in registry)
2. Switching to windowed mode and back to fullscreen without engine restart by using method Game.SetWindowedMode(bool true/false). Mnemonic, why you still didn't done this feature? It was pretty much easy to implement it.
3. Game registry functions has been rewritten a little. Disabled "PrivateSettings"-only restriction. Added third argument to functions - "Where".
Example: Game.RegReadString("Subtitles", 1, "Video"). If "Where"(in this example its a "Video") not defined, "PriviteSettings" will be used as default where settings should be stored/readed from.
4. Log file will now be erased all time on new exe launch.
5. "Used memory" on game screen message in debug mode.
6. libvorbis has been updated to 1.2.3 from 1.2.0.
7. New method Game.ShowVersion(text) - will show in right corner version information about your game. Example: Game.ShowVersion("v0.1 dd/mm/yyyy hh:mins");.
dd/mm/yyyy hh:mins - will be replaced to "Last modified Date" of data.dcp file, which placed in your game folder.
8. Now you can store settings not only in registry, but in ini too. You just need to call Game.SetSettingsFile(text path) and specified ini file will be created in your game directory.
Example: Game.SetSettingsFile(".\\mygameyohoho.ini");
Methods: Game.IniReadValue(Key, InitValue, Where), Game.IniWriteValue(Key, Value, Where) - like Reg**** methods. Example: Game.IniWriteValue("ShowFPS", 1, "DebuGoGo");
9. Something else... i don't remember
http://kinjal.apeironstudios.com/WME-KE_V17a_bin_12jan2010.rarhttp://kinjal.apeironstudios.com/WME-KE_V17b_src_22jan2010.rarThanks to AG|Spellbreaker of ApeironStudios for provide filehosting to me.