2
3
mirror of https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git synced 2025-07-14 02:27:40 -04:00

Build 912

This commit is contained in:
CyanWorlds
2012-06-14 17:09:15 -07:00
parent 136c27c7f3
commit 68ba122afe
32 changed files with 1175 additions and 125 deletions

View File

@ -71,13 +71,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "../plAvatar/plArmatureMod.h"
#include "../plAvatar/plAvBrainHuman.h"
#include "../plNetClient/plNetClientMgr.h"
//#define aspect_HDTV // maybe someday we'll be on the xbox...
#ifdef aspect_HDTV
#define FOV_RATIO 1.78
#else
#define FOV_RATIO 1.33333333
#endif
hsBool plCameraBrain1_FirstPerson::fDontFade = false;
hsScalar plCameraBrain1::fFallAccel = 20.0f;
@ -257,7 +250,7 @@ void plCameraBrain1::IAnimateFOV(double time)
dH = fFOVGoal;
}
fCamera->SetFOVw( (hsScalar)(dH * FOV_RATIO) );
fCamera->SetFOVw( (hsScalar)(dH * plVirtualCam1::GetAspectRatio()) );
fCamera->SetFOVh( dH );
}

View File

@ -7040,6 +7040,7 @@ PF_CONSOLE_CMD( Python, // Group name
}
#ifndef LIMIT_CONSOLE_COMMANDS
#ifdef HAVE_CYPYTHONIDE
PF_CONSOLE_CMD( Python,
UsePythonDebugger,
"",
@ -7047,6 +7048,7 @@ PF_CONSOLE_CMD( Python,
{
PythonInterface::UsePythonDebugger(true);
}
#endif
#include "../pfMessage/pfBackdoorMsg.h"

View File

@ -61,6 +61,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "plgDispatch.h"
#include "hsResMgr.h"
#include "../pnInputCore/plKeyMap.h"
#include "../plClipboard/plClipboard.h"
#include <locale>
@ -501,6 +502,34 @@ hsBool pfGUIEditBoxMod::HandleKeyEvent( pfGameGUIMgr::EventType event, plKeyDef
DoSomething(); // Query WasEscaped() to see if it was escape vs enter
return true;
}
else if (modifiers & pfGameGUIMgr::kCtrlDown)
{
if (key == KEY_C)
{
plClipboard::GetInstance().SetClipboardText(fBuffer);
}
else if (key == KEY_V)
{
wchar_t* contents = plClipboard::GetInstance().GetClipboardText();
if (contents != nil)
{
size_t len = wcslen(contents);
if (len > 0)
{
wchar_t* insertTarget = fBuffer + fCursorPos;
size_t bufferTailLen = wcslen(insertTarget) + 1; //include terminating \0
if (fCursorPos + len + bufferTailLen < fBufferSize)
{
memmove(insertTarget + len, insertTarget, bufferTailLen * sizeof(wchar_t));
memcpy(insertTarget, contents, len * sizeof(wchar_t));
fCursorPos += len;
HandleExtendedEvent( kValueChanging );
}
}
delete contents;
}
}
}
else
{
fIgnoreNextKey = false;

View File

@ -60,6 +60,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "../plGImage/plDynamicTextMap.h"
#include "plgDispatch.h"
#include "hsResMgr.h"
#include "../plClipboard/plClipboard.h"
//// Tiny Helper Class ///////////////////////////////////////////////////////
@ -1172,9 +1173,6 @@ hsBool pfGUIMultiLineEditCtrl::HandleKeyEvent( pfGameGUIMgr::EventType event, pl
if ((fPrevCtrl || fNextCtrl) && (fLineStarts.GetCount() <= GetFirstVisibleLine()))
return true; // we're ignoring if we can't actually edit our visible frame (and we're linked)
if (modifiers & pfGameGUIMgr::kCtrlDown)
return true; // we're ignoring ctrl key events
if( event == pfGameGUIMgr::kKeyDown || event == pfGameGUIMgr::kKeyRepeat )
{
// Use arrow keys to do our dirty work
@ -1219,6 +1217,22 @@ hsBool pfGUIMultiLineEditCtrl::HandleKeyEvent( pfGameGUIMgr::EventType event, pl
// fEscapedFlag = true;
DoSomething(); // Query WasEscaped() to see if it was escape vs enter
}
else if (modifiers & pfGameGUIMgr::kCtrlDown)
{
if (key == KEY_C)
{
plClipboard::GetInstance().SetClipboardText(fBuffer.AcquireArray());
}
else if (key == KEY_V)
{
wchar_t* contents = plClipboard::GetInstance().GetClipboardText();
if (contents != nil)
{
InsertString(contents);
delete contents;
}
}
}
else
{
fIgnoreNextKey = false;

View File

@ -649,25 +649,25 @@ UInt32 cyMisc::ConvertGMTtoDni(UInt32 gtime)
plUnifiedTime utime = plUnifiedTime();
utime.SetSecs(dtime);
// check for daylight savings time in New Mexico and adjust
if ( utime.GetMonth() >= 4 && utime.GetMonth() < 11 )
if ( utime.GetMonth() >= 3 && utime.GetMonth() <= 11 )
{
plUnifiedTime dstStart = plUnifiedTime();
dstStart.SetGMTime(utime.GetYear(),4,1,2,0,0);
// find first Sunday after 4/1 (first sunday of April)
dstStart.SetGMTime(utime.GetYear(),3,8,2,0,0);
// find first Sunday after (including) 3/8 (second Sunday of March)
UInt32 days_to_go = 7 - dstStart.GetDayOfWeek();
if (days_to_go == 7)
days_to_go = 0;
UInt32 dstStartSecs = dstStart.GetSecs() + days_to_go * kOneDay;
plUnifiedTime dstEnd = plUnifiedTime();
dstEnd.SetGMTime(utime.GetYear(),10,25,1,0,0);
// find first sunday after 10/25 (last sunday of Oct.)
dstEnd.SetGMTime(utime.GetYear(),11,1,1,0,0);
// find first sunday after (including) 11/1 (first Sunday of November)
days_to_go = 7 - dstEnd.GetDayOfWeek();
if (days_to_go == 7)
days_to_go = 0;
UInt32 dstEndSecs = dstEnd.GetSecs() + days_to_go * kOneDay;
if ( dtime > dstStartSecs && dtime < dstEndSecs )
if ( dtime >= dstStartSecs && dtime < dstEndSecs )
// add hour for daylight savings time
dtime += kOneHour;
}

View File

@ -196,7 +196,7 @@ PyObject* PythonInterface::dbgOut = nil;
PyObject* PythonInterface::dbgSlice = nil; // time slice function for the debug window
plStatusLog* PythonInterface::dbgLog = nil; // output logfile
#ifndef PLASMA_EXTERNAL_RELEASE
#if defined(HAVE_CYPYTHONIDE) && !defined(PLASMA_EXTERNAL_RELEASE)
bool PythonInterface::usePythonDebugger = false;
plCyDebServer PythonInterface::debugServer;
bool PythonInterface::requestedExit = false;
@ -205,7 +205,7 @@ bool PythonInterface::requestedExit = false;
// stupid Windows.h and who started including that!
#undef DrawText
#ifndef PLASMA_EXTERNAL_RELEASE
#if defined(HAVE_CYPYTHONIDE) && !defined(PLASMA_EXTERNAL_RELEASE)
// Special includes for debugging
#include <frameobject.h>
@ -856,7 +856,7 @@ void PythonInterface::initPython()
Py_SetProgramName("plasma");
Py_Initialize();
#ifndef PLASMA_EXTERNAL_RELEASE
#if defined(HAVE_CYPYTHONIDE) && !defined(PLASMA_EXTERNAL_RELEASE)
if (usePythonDebugger)
{
debugServer.SetCallbackClass(&debServerCallback);
@ -1528,7 +1528,7 @@ void PythonInterface::finiPython()
initialized--;
if ( initialized < 1 && Py_IsInitialized() != 0 && IsInShutdown )
{
#ifndef PLASMA_EXTERNAL_RELEASE
#if defined(HAVE_CYPYTHONIDE) && !defined(PLASMA_EXTERNAL_RELEASE)
if (usePythonDebugger)
debugServer.Disconnect();
#endif
@ -1675,7 +1675,7 @@ int PythonInterface::getOutputAndReset(std::string *output)
pyOutputRedirector::ClearData(stdOut);
// tell python debugger
#ifndef PLASMA_EXTERNAL_RELEASE
#if defined(HAVE_CYPYTHONIDE) && !defined(PLASMA_EXTERNAL_RELEASE)
if (UsePythonDebugger())
PythonInterface::PythonDebugger()->StdOut(strVal);
#endif

View File

@ -50,7 +50,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "hsStlUtils.h"
#include <python.h>
#ifndef PLASMA_EXTERNAL_RELEASE
#if defined(HAVE_CYPYTHONIDE) && !defined(PLASMA_EXTERNAL_RELEASE)
#include "../../Apps/CyPythonIDE/plCyDebug/plCyDebServer.h"
#endif
@ -82,7 +82,7 @@ private:
static PyObject* dbgSlice; // time slice function for the debug window
static plStatusLog* dbgLog;
#ifndef PLASMA_EXTERNAL_RELEASE
#if defined(HAVE_CYPYTHONIDE) && !defined(PLASMA_EXTERNAL_RELEASE)
static bool usePythonDebugger;
static bool requestedExit;
static plCyDebServer debugServer;
@ -228,7 +228,7 @@ public:
//
static pyKey* GetpyKeyFromPython(PyObject* pkey);
#ifndef PLASMA_EXTERNAL_RELEASE
#if defined(HAVE_CYPYTHONIDE) && !defined(PLASMA_EXTERNAL_RELEASE)
static bool UsePythonDebugger() { return usePythonDebugger; }
static void UsePythonDebugger(bool use) { usePythonDebugger = use; }

View File

@ -1363,12 +1363,19 @@ hsBool plPythonFileMod::MsgReceive(plMessage* msg)
// depending on the data type create the data
switch ( eventData->fDataType )
{
case proEventData::kNumber:
PyList_SetItem(event, 3, PyFloat_FromDouble(eventData->fNumber));
case proEventData::kFloat:
PyList_SetItem(event, 3, PyFloat_FromDouble(eventData->fNumber.f));
break;
case proEventData::kKey:
PyList_SetItem(event, 3, pyKey::New(eventData->fKey));
break;
case proEventData::kInt:
PyList_SetItem(event, 3, PyInt_FromLong(eventData->fNumber.i));
break;
default:
Py_XINCREF(Py_None);
PyList_SetItem(event, 3, Py_None);
break;
}
// add this event record to the main event list (lists within a list)
PyList_Append(levents, event);

View File

@ -151,6 +151,16 @@ void pyNotify::AddVarNumber(const char* name, hsScalar number)
fBuildMsg.AddVariableEvent(name,number);
}
void pyNotify::AddVarNumber(const char* name, Int32 number)
{
fBuildMsg.AddVariableEvent(name,number);
}
void pyNotify::AddVarNull(const char* name)
{
fBuildMsg.AddVariableEvent(name);
}
void pyNotify::AddVarKey(const char* name, pyKey* key)
{
fBuildMsg.AddVariableEvent(name, key ? key->getKey() : plKey() );

View File

@ -100,6 +100,8 @@ public:
virtual void AddPickEvent(hsBool enabled, pyKey* other, pyKey* self, pyPoint3 hitPoint);
virtual void AddControlKeyEvent( Int32 key, hsBool down );
virtual void AddVarNumber(const char* name, hsScalar number);
virtual void AddVarNumber(const char* name, Int32 number);
virtual void AddVarNull(const char* name);
virtual void AddVarKey(const char* name, pyKey* key);
virtual void AddFacingEvent( hsBool enabled, pyKey* other, pyKey* self, hsScalar dot);
virtual void AddContainerEvent( hsBool entering, pyKey* container, pyKey* contained);

View File

@ -194,18 +194,86 @@ PYTHON_METHOD_DEFINITION(ptNotify, addControlKeyEvent, args)
}
PYTHON_METHOD_DEFINITION(ptNotify, addVarNumber, args)
{
char* name;
PyObject* number = NULL;
if (!PyArg_ParseTuple(args, "s|O", &name, &number))
{
PyErr_SetString(PyExc_TypeError, "addVarNumber expects a string and optional number");
PYTHON_RETURN_ERROR;
}
if (number == NULL || number == Py_None)
self->fThis->AddVarNull(name);
else if (PyInt_Check(number))
self->fThis->AddVarNumber(name, PyInt_AsLong(number));
else if (PyLong_Check(number))
{
// try as int first
Int32 i = (Int32)PyLong_AsLong(number);
if (!PyErr_Occurred())
{
self->fThis->AddVarNumber(name, i);
}
else
{
// OverflowError, try float
PyErr_Clear();
self->fThis->AddVarNumber(name, (float)PyLong_AsDouble(number));
}
}
else if (PyNumber_Check(number))
{
PyObject* f = PyNumber_Float(number);
self->fThis->AddVarNumber(name, (float)PyFloat_AsDouble(f));
Py_DECREF(f);
}
else
{
PyErr_SetString(PyExc_TypeError, "addVarNumber expects a string and optional number");
PYTHON_RETURN_ERROR;
}
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptNotify, addVarFloat, args)
{
char* name;
float number;
if (!PyArg_ParseTuple(args, "sf", &name, &number))
{
PyErr_SetString(PyExc_TypeError, "addVarNumber expects a string and a float");
PyErr_SetString(PyExc_TypeError, "addVarFloat expects a string and a float");
PYTHON_RETURN_ERROR;
}
self->fThis->AddVarNumber(name, number);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptNotify, addVarInt, args)
{
char* name;
Int32 number;
if (!PyArg_ParseTuple(args, "sl", &name, &number))
{
PyErr_SetString(PyExc_TypeError, "addVarInt expects a string and a integer");
PYTHON_RETURN_ERROR;
}
self->fThis->AddVarNumber(name, number);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptNotify, addVarNull, args)
{
char* name;
if (!PyArg_ParseTuple(args, "s", &name))
{
PyErr_SetString(PyExc_TypeError, "addVarNull expects a string");
PYTHON_RETURN_ERROR;
}
self->fThis->AddVarNull(name);
PYTHON_RETURN_NONE;
}
PYTHON_METHOD_DEFINITION(ptNotify, addVarKey, args)
{
char* name;
@ -337,6 +405,13 @@ PYTHON_START_METHODS_TABLE(ptNotify)
PYTHON_METHOD(ptNotify, addPickEvent, "Params: enabledFlag,pickerKey,pickeeKey,hitPoint\nAdd a pick event record to the Notify message"),
PYTHON_METHOD(ptNotify, addControlKeyEvent, "Params: keynumber,downFlag\nAdd a keyboard event record to the Notify message"),
PYTHON_METHOD(ptNotify, addVarNumber, "Params: name,number\nAdd a number variable event record to the Notify message\n"
"Method will try to pick appropriate variable type\n"
"This event record is used to pass a number variable to another python program"),
PYTHON_METHOD(ptNotify, addVarFloat, "Params: name,number\nAdd a float variable event record to the Notify message\n"
"This event record is used to pass a number variable to another python program"),
PYTHON_METHOD(ptNotify, addVarInt, "Params: name,number\nAdd a int variable event record to the Notify message\n"
"This event record is used to pass a number variable to another python program"),
PYTHON_METHOD(ptNotify, addVarNull, "Params: name,number\nAdd a null (no data) variable event record to the Notify message\n"
"This event record is used to pass a number variable to another python program"),
PYTHON_METHOD(ptNotify, addVarKey, "Params: name,key\nAdd a ptKey variable event record to the Notify message\n"
"This event record is used to pass a ptKey variable to another python program"),
@ -402,8 +477,10 @@ void pyNotify::AddPlasmaConstantsClasses(PyObject *m)
PYTHON_ENUM_END(m, PtEventType);
PYTHON_ENUM_START(PtNotifyDataType);
PYTHON_ENUM_ELEMENT(PtNotifyDataType, kNumber, proEventData::kNumber);
PYTHON_ENUM_ELEMENT(PtNotifyDataType, kKey, proEventData::kKey);
PYTHON_ENUM_ELEMENT(PtNotifyDataType, kFloat, proEventData::kFloat);
PYTHON_ENUM_ELEMENT(PtNotifyDataType, kInt, proEventData::kInt);
PYTHON_ENUM_ELEMENT(PtNotifyDataType, kNull, proEventData::kNull);
PYTHON_ENUM_ELEMENT(PtNotifyDataType, kKey, proEventData::kKey);
PYTHON_ENUM_END(m, PtNotifyDataType);
PYTHON_ENUM_START(PtMultiStageEventType);