チェンジセット 638:f0e586985b62

差分発生行の前後
無視リスト:
コミット日時:
2007/09/17 23:26:27 (1 年前)
コミッタ:
Issei Suzuki <issei@issei.org>
branch:
default
ログメッセージ:

ICO 初期設定用スクリプト組み込み

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • GameObj.vcproj

    r630 r638  
    10391039            </File> 
    10401040            <File 
     1041                RelativePath=".\tool\src\icodata\polyinfo.h" 
     1042                > 
     1043            </File> 
     1044            <File 
    10411045                RelativePath=".\Project.h" 
    10421046                > 
     
    11151119                > 
    11161120                <File 
    1117                     RelativePath=".\tool\src\icodata\polyinfo.h" 
    1118                     > 
    1119                 </File> 
    1120                 <File 
    11211121                    RelativePath=".\scr\sys\vm_sys_vm.h" 
    11221122                    > 
     
    11431143                > 
    11441144                <File 
     1145                    RelativePath=".\scr\sys\scr_ico_app.h" 
     1146                    > 
     1147                </File> 
     1148                <File 
    11451149                    RelativePath=".\ico\TaskIco.h" 
    11461150                    > 
     
    11501154                Name="Source Files" 
    11511155                > 
     1156                <File 
     1157                    RelativePath=".\scr\sys\scr_ico_app.cc" 
     1158                    > 
     1159                </File> 
    11521160                <File 
    11531161                    RelativePath=".\ico\TaskIco.cpp" 
  • data/polyinfo.ptxt

    r626 r638  
     1scr/ico/ico_app.scb 
    12res/ico/a03 
    23res/ico/a04 
  • data/resource.txt

    r626 r638  
    1111scr/test/for.scb 
    1212# ico 
     13scr/ico/ico_app.scb 
    1314res/ico/a03 
    1415res/ico/a04 
  • ico/TaskIco.cpp

    r635 r638  
    3333#include "PackfileManager.h" 
    3434#include "PackfileHandle.h" 
     35#pragma warning(push) 
     36// 4200:サイズ0の配列 
     37// 4819:現在のコードページで表示できない文字を含んでいる 
     38#pragma warning(disable : 4200 4819) 
     39#include "CScriptVM/vm_loader.h" 
     40#include "CScriptVM/vm.h" 
     41#pragma warning(pop) 
     42#include "scr/sys/scr_ico_app.h" 
    3543#include "../tool/src/icodata/polyinfo.h" 
    3644#include "data/polyinfo.packh" 
    3745 
    38 // TODO デバイス消失時に頂点バッファを作り直す 
    39  
    4046ANON_NAMESPACE_BEGIN 
    4147 
    4248class TaskIco; 
    4349 
     50/*! 
     51    TaskIco 階層型状態遷移用シグナル 
     52 */ 
    4453class Event 
    4554    : public HsmEventBase<TaskIco, Event> 
     
    6574 
    6675 
     76/*! 
     77    ICO for Win32 メインタスク 
     78 */ 
    6779class TaskIco 
    6880    : public ITask 
    6981    , public ID3DRes 
     82    , public CScript::ISyscallIcoApp 
    7083    , public D3DResBase<TaskIco> 
    7184    , public HsmBase<TaskIco, Event> 
    7285{ 
    7386public: 
     87    typedef CScript::vm_float_t vm_float_t; 
     88 
    7489    TaskIco(); 
    7590    virtual ~TaskIco(); 
     
    8499    virtual void onResetDevice(); 
    85100 
     101    // ISyscallIcoApp 
     102    virtual void scr_icoSetColor(vm_float_t r, vm_float_t g, vm_float_t b); 
     103    virtual void scr_icoSetRotSpeed(vm_float_t avec); 
     104 
    86105private: 
     106    // 頂点バッファ 
    87107    struct CUSTOMVERTEX 
    88108    { 
     
    94114    PackfileHandle<MEM_SEG_ICO> m_pack; 
    95115    int m_load_count; 
     116    D3DCOLORVALUE m_color; 
     117    FLOAT m_angle_vel; 
    96118    PolyVertList const* m_pPoly; 
    97119    CComPtr<IDirect3DVertexBuffer9> m_spVtxBuf; 
    98120    FLOAT m_fAngle; 
    99121 
     122    void _initConfig(); 
    100123    bool _initModel(); 
    101124    void _releaseModel(); 
     
    117140    : HsmBase<TaskIco, Event>(&TaskIco::_stateLoad) 
    118141    , m_load_count(0) 
     142    , m_angle_vel(0.0f) 
    119143    , m_pPoly(NULL) 
    120144    , m_fAngle(0.0f) 
    121145{ 
    122146    initHsm(); 
     147    m_color.r = m_color.g = m_color.b = m_color.a = 1.0f; 
    123148} 
    124149 
    125150TaskIco::~TaskIco() 
    126151{} 
     152 
     153void TaskIco::scr_icoSetColor(vm_float_t r, vm_float_t g, vm_float_t b) 
     154{ 
     155    dbAbortRange(r, 0.0f, 1.0f, _T("color out of range [0.0f, 1.0f]")); 
     156    dbAbortRange(g, 0.0f, 1.0f, _T("color out of range [0.0f, 1.0f]")); 
     157    dbAbortRange(b, 0.0f, 1.0f, _T("color out of range [0.0f, 1.0f]")); 
     158 
     159    m_color.r = r; 
     160    m_color.g = g; 
     161    m_color.b = b; 
     162    m_color.a = 1.0f; 
     163} 
     164 
     165void TaskIco::scr_icoSetRotSpeed(vm_float_t avel) 
     166{ 
     167    m_angle_vel = avel; 
     168} 
    127169 
    128170void TaskIco::exec(ICtxTask& /*ctx*/, TASK_PRIO_TYPE /*prio*/) 
     
    148190} 
    149191 
     192void TaskIco::_initConfig() 
     193{ 
     194    void const* scb = NULL; 
     195    m_pack.getRes(&scb, SCR_ICO_ICO_APP_SCB); 
     196 
     197    CScript::VirtualMachine vm; 
     198    vm.setScrArgH(0, this); 
     199    vm.setByteCode(scb, m_pack.getResSize(SCR_ICO_ICO_APP_SCB)); 
     200    vm.run(); 
     201    dbAbort(vm.getState() == CScript::VirtualMachine::STATE_HALT, _T("script runtime error : %d"), vm.getState()); 
     202} 
     203 
    150204bool TaskIco::_initModel() 
    151205{ 
    152206    PolyVertList const* pPoly = NULL; 
    153     m_pack.getResIdx(&pPoly, 1); 
     207    m_pack.getResIdx(&pPoly, 2); 
    154208 
    155209    CComPtr<IDirect3DVertexBuffer9> spVtxBuf; 
     
    181235    m_pPoly = NULL; 
    182236    m_spVtxBuf.Release(); 
    183  
    184237} 
    185238 
     
    231284    D3DMATERIAL9 mtrl; 
    232285    ::ZeroMemory(&mtrl, sizeof(mtrl)); 
    233     mtrl.Diffuse.r = mtrl.Ambient.r = 1.0f; 
    234     mtrl.Diffuse.g = mtrl.Ambient.g = 1.0f; 
    235     mtrl.Diffuse.b = mtrl.Ambient.b = 0.0f; 
    236     mtrl.Diffuse.a = mtrl.Ambient.a = 1.0f; 
     286    mtrl.Diffuse = mtrl.Ambient = m_color; 
    237287    g_d3ddev.SetMaterial(&mtrl); 
    238288 
     
    282332    case Event::NSIG_ENTER: 
    283333    case Event::NSIG_RESET_DEVICE: 
     334        _initConfig(); 
    284335        _initModel(); 
    285336        return 0; 
     
    293344            HSM_TRAN(&TaskIco::_stateTerm); 
    294345 
    295         m_fAngle += D3DX_PI / EXEC_PER_SEC; 
     346        m_fAngle += m_angle_vel / EXEC_PER_SEC; 
    296347        if ((padGetRep() & (PAD_SE | PAD_ST)) == (PAD_SE | PAD_ST)) 
    297348            HSM_TRAN(&TaskIco::_stateTerm); 
  • scr/Makefile

    r601 r638  
    11# Makefile 
    22 
    3 .PHONY: all sys sysclean test testclean 
     3.PHONY: all sys sysclean test testclean ico icoclean 
    44 
    55TOP=.. 
    66include $(TOP)/scr/scrcfg.mak 
    77 
    8 all: sys test 
     8define scr-make-target 
     9    $(MAKE) -C $@ -f ../scrmak.mak TOP=../.. all 
     10endef 
     11 
     12define scr-clean-target 
     13    $(MAKE) -C $@ -f ../scrmak.mak TOP=../.. clean 
     14endef 
     15 
     16all: sys test ico 
     17 
     18clean: sysclean testclean icoclean 
    919 
    1020sys: 
     
    1525 
    1626test: 
    17     $(MAKE) -C test -f ../scrmak.mak TOP=../.. all 
     27    $(scr-make-target) 
    1828 
    1929testclean: 
    20     $(MAKE) -C test -f ../scrmak.mak TOP=../.. clean 
     30    $(scr-clean-target) 
     31 
     32ico: 
     33    $(scr-make-target) 
     34 
     35icoclean: 
     36    $(scr-clean-target) 
     37 
  • scr/cscript/cscript.sch

    r601 r638  
    6363#define CSCR_VM_SYSNO_SYSFUNC_TEST_BEGIN        CSCR_VM_SYSNO_SYSFUNC_USER_BEGIN 
    6464#define CSCR_VM_SYSNO_SYSFUNC_TEST_COUNT        (32) 
    65 #define CSCR_VM_SYSNO_SYSFUNC_TEST_END          (CSCR_VM_SYSNO_SYSFUNC_USER_BEGIN + CSCR_VM_SYSNO_SYSFUNC_USER_COUNT - 1) 
     65#define CSCR_VM_SYSNO_SYSFUNC_TEST_END          (CSCR_VM_SYSNO_SYSFUNC_USER_BEGIN + CSCR_VM_SYSNO_SYSFUNC_TEST_COUNT - 1) 
     66 
     67#define CSCR_VM_SYSNO_SYSFUNC_ICO_BEGIN         (CSCR_VM_SYSNO_SYSFUNC_TEST_END + 1) 
     68#define CSCR_VM_SYSNO_SYSFUNC_ICO_COUNT         (32) 
     69#define CSCR_VM_SYSNO_SYSFUNC_ICO_END           (CSCR_VM_SYSNO_SYSFUNC_ICO_BEGIN + CSCR_VM_SYSNO_SYSFUNC_ICO_COUNT - 1) 
    6670 
    6771#endif // CSCRIPT_CSCRIPT_SCH__INCLUDED 
  • scr/scrsys.mak

    r601 r638  
    66include $(TOP)/scr/scrcfg.mak 
    77 
    8 all: vm_sys_vm.h vm_sys_d.cc scr_stdfunc.cc 
    9     pwd 
     8define scr_sys_target 
     9    $(CPP) $(CPPFLAGS) $< | $(SYSDECL) > $@ 
     10endef 
     11 
     12all: vm_sys_vm.h vm_sys_d.cc scr_stdfunc.cc scr_ico_app.cc scr_ico_app.h 
    1013 
    1114vm_sys_vm.h: vm_sys_d.cc 
     
    1518 
    1619scr_stdfunc.cc: $(SCRDIR)/cscript/stdfunc.sch 
    17     $(CPP) $(CPPFLAGS) $< | $(SYSDECL) > $@ 
     20    $(scr_sys_target) 
     21 
     22scr_ico_app.h: scr_ico_app.cc 
     23 
     24scr_ico_app.cc: $(SCRDIR)/cscript/ico.sch 
     25    $(scr_sys_target) 
    1826 
    1927clean: 
    20     $(RM) vm_sys_vm.h vm_sys_d.cc scr_stdfunc.cc 
     28    $(RM) vm_sys_vm.h vm_sys_d.cc scr_stdfunc.cc scr_ico_app.cc scr_ico_app.h 
    2129 
    2230