Mercurial > sumwars
changeset 18:577f1d378d41
windows C::B projekt fuer trunk
author | wuha |
---|---|
date | Fri, 03 Oct 2008 18:00:25 +0000 |
parents | 09edaddbcb97 |
children | 2c21cc2d5d5c |
files | src/core/document.cpp src/core/itemfactory.cpp src/core/objectfactory.cpp src/gui/application.cpp src/gui/main_gui.cpp src/gui/mainwindow.cpp src/gui/scene.cpp src/ogre.cfg src/plugins_win.cfg src/plugins_win_d.cfg |
diffstat | 10 files changed, 233 insertions(+), 194 deletions(-) [+] |
line wrap: on
line diff
--- a/src/core/document.cpp Fri Oct 03 14:11:12 2008 +0000 +++ b/src/core/document.cpp Fri Oct 03 18:00:25 2008 +0000 @@ -25,7 +25,7 @@ Document::Document() : m_special_keys() , m_shortkey_map() { - + /* DEBUG5("reading ip"); // IP aus Konfigurationsdatei einlesen { @@ -40,8 +40,10 @@ { ERRORMSG("config nicht gefunden"); } - } - + } + */ + strcpy(m_server_ip,"127.0.0.1"); + m_world =0; bool network_error = false; @@ -109,21 +111,21 @@ void Document::startGame(bool server) { m_server = server; - - - + + + m_world = new World(server); m_world->init(); - + if (server) { - + } else { ClientNetwork* net = static_cast<ClientNetwork*>(m_world->getNetwork()); net->serverConnect(m_server_ip,REQ_PORT); - + } m_state = LOAD_SAVEGAME; } @@ -136,7 +138,7 @@ char head[8]; int i; char* bp = head; - string fname = "../../save/"; + string fname = "../save/"; fname += m_save_file; /* if (m_gui_type == GL_GUI) @@ -145,7 +147,7 @@ } */ DEBUG5("savegame is %s",fname.c_str()); - + ifstream file(fname.c_str(),ios::in| ios::binary); if (file.is_open()) { @@ -169,15 +171,15 @@ { file.get(data[i]); } - + CharConv cv2((unsigned char*) data,len); - + m_world->handleSavegame(&cv2); // aktuelle Aktion setzen // TODO: aus dem Savegame einlesen - + /*int n=0; if (c==WorldObje) n=4; @@ -350,7 +352,7 @@ void Document::onButtonSaveExitClicked ( ) { - + if (m_state!=SHUTDOWN_REQUEST) { setState(SHUTDOWN_REQUEST); @@ -359,7 +361,7 @@ { setState(SHUTDOWN); } - + m_shutdown_timer =0; ClientCommand command; @@ -388,7 +390,7 @@ Player* pl = static_cast<Player*> (m_world->getLocalPlayer()); if (pl==0) return; - + // herstellen der Koordinaten im Koordinatensystem des Spiels m_gui_state.m_clicked_x =x; @@ -409,10 +411,10 @@ command.m_id=0; int id = getObjectAt(x,y); - + m_gui_state.m_clicked_object_id = id; command.m_id =id; - + command.m_number=0; if (command.m_id!=0) @@ -456,17 +458,17 @@ DEBUG4("angeklickte Koordinaten: %f %f",x,y); //TODO: suchen welches objekt angeklickt wurde - + m_gui_state.m_clicked_object_id=0; command.m_id=0; - - + + int id = getObjectAt(x,y); if (getGUIState()->m_cursor_object_id != 0) { id = getGUIState()->m_cursor_object_id; } - + m_gui_state.m_clicked_object_id = id; command.m_id =id; command.m_number=0; @@ -476,7 +478,7 @@ { command.m_id=0; } - + if (command.m_id!=0) { DEBUG5("angeklicktes Objekt %i",command.m_id); @@ -487,7 +489,7 @@ // Item angeklickt command.m_action = Action::TAKE_ITEM; command.m_id = m_gui_state.m_cursor_item_id; - + DEBUG5("clicked at item %i",m_gui_state.m_cursor_item_id); } @@ -503,16 +505,16 @@ ServerWObject* pl = m_world->getLocalPlayer(); if (pl==0) return 0; - + // Region in der sich der lokale Spieler befindet Region* reg = pl->getRegion(); if (reg ==0) return 0; - + ServerWObject* obj = reg->getSWObjectAt(x,y); if (obj != 0) return obj->getId(); - + return 0; } @@ -530,12 +532,12 @@ { ClientCommand command; command.m_button = BUTTON_PARTY_ACCEPT; - + // Party in der der Spieler Mitglied ist Party* party = getParty(); if (party ==0) return; - + if (party->getNrCandidates() > cnr) { command.m_id = party->getCandidates()[cnr]; @@ -618,7 +620,7 @@ { getGUIState()->m_shown_windows &= ~INVENTORY; - + // der lokale Spieler Player* pl = static_cast<Player*>( m_world->getLocalPlayer()); if (pl==0) @@ -715,14 +717,14 @@ installShortkey(m_gui_state.m_pressed_key,(ShortkeyDestination) (USE_SKILL_LEFT+act)); return; } - - + + // wenn kein Spieler gesetzt ist, dann keine Faehigkeit setzen // der lokale Spieler Player* player = static_cast<Player*>(m_world->getLocalPlayer()); if (player==0) return; - + int acti = (int) act; Action::ActionInfo* aci = Action::getActionInfo(act); @@ -767,7 +769,7 @@ Player* player = static_cast<Player*>(m_world->getLocalPlayer()); if (player==0) return; - + int acti = (int) act; Action::ActionInfo* aci = Action::getActionInfo(act); @@ -799,7 +801,7 @@ // der lokale Spieler Player* player = static_cast<Player*>(m_world->getLocalPlayer()); - + if (player !=0 ) { // Struktur mit Informationen zur Aktion @@ -953,9 +955,9 @@ if (m_world != 0) { m_world->update(time); - + } - + DEBUG5("modified is %i",m_modified); DEBUG5("State is %i",m_state); NetStatus status; @@ -977,9 +979,9 @@ if (status == NET_REJECTED || status == NET_SLOTS_FULL || status == NET_TIMEOUT) { // Verbindung abgelehnt - m_state = SHUTDOWN; + m_state = SHUTDOWN; } - + case RUNNING: updateContent(time); @@ -1004,8 +1006,8 @@ // Spielwelt abschalten delete m_world; m_world =0; - - + + m_state = SHUTDOWN; break; @@ -1025,7 +1027,7 @@ DEBUG5("no local player"); return; } - + if (m_gui_state.m_left_mouse_hold) { DEBUG5("linke Maustaste festgehalten"); @@ -1073,9 +1075,9 @@ } } - - - + + + /* ServerHeader headerp; @@ -1113,10 +1115,10 @@ if (headerp.m_content == PTYPE_S2C_DATA) { - + DEBUG5("got data pkg"); handleDataPkg(cv,&headerp); - + } else if (headerp.m_content == PTYPE_S2C_SAVEGAME) { @@ -1143,9 +1145,9 @@ // TODO: do something to fix this.... } - + delete cv; - + m_network_info.m_network->deallocatePacket(data); }
--- a/src/core/itemfactory.cpp Fri Oct 03 14:11:12 2008 +0000 +++ b/src/core/itemfactory.cpp Fri Oct 03 18:00:25 2008 +0000 @@ -156,7 +156,7 @@ modchance[RESIST_ICE_MOD]=0.033; modchance[RESIST_AIR_MOD]=0.033; modchance[ATTACK_SPEED_MOD]=0.2; - + if (subtype =="leath_gl") { min_enchant = 20; @@ -191,10 +191,10 @@ item->m_price = 45; item->m_size = Item::BIG; item->m_equip_effect->m_dblock = 20; - + } - - + + } else if (type == Item::RING) { @@ -207,7 +207,7 @@ modchance[DAMAGE_MULT_FIRE_MOD]=0.05; modchance[DAMAGE_MULT_ICE_MOD]=0.05; modchance[DAMAGE_MULT_AIR_MOD]=0.05; - + min_enchant = min(200.0,magic_power*0.2); max_enchant= min(850.0,magic_power*1.5); item->m_price = 350; @@ -224,7 +224,7 @@ min_enchant = min(200.0,magic_power*0.2); max_enchant= min(850.0,magic_power*1.5); item->m_size = Item::SMALL; - + } } else if (type == Item::WEAPON) @@ -277,7 +277,7 @@ } else if (subtype =="wood_bow") { - + min_enchant = 50; max_enchant= 200; item->m_price = 100; @@ -608,10 +608,10 @@ // Items aus XML Laden ItemLoader* itemloader = 0; itemloader = new ItemLoader; - + list<ItemBasicData*>* item_list; - item_list = itemloader->loadItemBasicData("../../data/items.xml"); - + item_list = itemloader->loadItemBasicData("../data/items.xml"); + if (item_list != 0) { list<ItemBasicData*>::iterator iter = item_list->begin(); @@ -622,7 +622,7 @@ cout << "m_useup_effect" << " = " << (*iter)->m_useup_effect << endl; cout << "m_equip_effect" << " = " << (*iter)->m_equip_effect << endl; cout << "m_weapon_attr" << " = " << (*iter)->m_weapon_attr << endl; - + cout << " m_damage.m_min_damage[Damage::PHYSICAL]" << " = " << (*iter)->m_weapon_attr->m_damage.m_min_damage[Damage::PHYSICAL] << endl; cout << " m_damage.m_max_damage[Damage::PHYSICAL]" << " = " << (*iter)->m_weapon_attr->m_damage.m_min_damage[Damage::PHYSICAL] << endl; cout << " m_damage.m_min_damage[Damage::AIR]" << " = " << (*iter)->m_weapon_attr->m_damage.m_min_damage[Damage::AIR] << endl; @@ -634,7 +634,7 @@ cout << " m_attack_range" << " = " << (*iter)->m_weapon_attr->m_attack_range << endl; cout << " m_two_handed" << " = " << (*iter)->m_weapon_attr->m_two_handed << endl; cout << " m_dattack_speed" << " = " << (*iter)->m_weapon_attr->m_dattack_speed << endl; - + cout << "m_level_req" << " = " << static_cast<int>((*iter)->m_level_req) << endl; cout << "m_char_req" << " = " << static_cast<int>((*iter)->m_char_req) << endl; cout << "m_subtype" << " = " << (*iter)->m_subtype << endl; @@ -649,11 +649,11 @@ *iter++; } } - - + + list<DropChanceData*>* drop_chance_list; - drop_chance_list = itemloader->loadDropChanceData("../../data/items.xml"); - + drop_chance_list = itemloader->loadDropChanceData("../data/items.xml"); + if (drop_chance_list != 0) { // Daten auslesen und registrieren @@ -663,7 +663,7 @@ registerItemDrop( (*iter)->m_type, (*iter)->m_subtype, DropChance( (*iter)->m_level, (*iter)->m_probability, (*iter)->m_size) ); *iter++; } - + // Liste aus Speicher loeschen iter = drop_chance_list->begin(); while (iter != drop_chance_list->end()) @@ -672,7 +672,7 @@ *iter++; } } - + delete item_list; item_list = 0; delete drop_chance_list;
--- a/src/core/objectfactory.cpp Fri Oct 03 14:11:12 2008 +0000 +++ b/src/core/objectfactory.cpp Fri Oct 03 18:00:25 2008 +0000 @@ -25,14 +25,14 @@ MonsterBasicData* mdata; int i; float p[4]; - + #ifdef USE_OBJECTLOADER // Objekte bzw. Monster aus XML Laden ObjectLoader* objectloader = 0; objectloader = new ObjectLoader; list<MonsterBasicData*>* monster_list; - monster_list = objectloader->loadObjects("../../data/monsters.xml"); - + monster_list = objectloader->loadObjects("../data/monsters.xml"); + if (monster_list != 0) { list<MonsterBasicData*>::iterator forward_iterator = monster_list->begin(); @@ -49,7 +49,7 @@ *forward_iterator++; } } - + delete monster_list; monster_list = 0; delete objectloader; @@ -230,7 +230,7 @@ { id = m_world->getValidId(); } - + if (type ==WorldObject::TypeInfo::TYPE_PLAYER) { if (subtype == "warrior") @@ -247,7 +247,7 @@ } else if(subtype == "priest") { - ret = new Priest( m_world, id ); + ret = new Priest( m_world, id ); } } else if (type ==WorldObject::TypeInfo::TYPE_MONSTER) @@ -288,7 +288,7 @@ } else if (subtype =="tree") { - + sp->m_type = Shape::CIRCLE; sp->m_radius = 2.8; }
--- a/src/gui/application.cpp Fri Oct 03 14:11:12 2008 +0000 +++ b/src/gui/application.cpp Fri Oct 03 18:00:25 2008 +0000 @@ -20,8 +20,12 @@ // Ogre Root erzeugen // pluginfile: plugins.cfg // configfile: keines - #ifdef WIN32 - m_ogre_root = new Ogre::Root("plugins_win.cfg", "ogre.cfg"); + #ifdef WIN32 + #ifdef DEBUG + m_ogre_root = new Ogre::Root("plugins_win_d.cfg", "ogre.cfg"); + #else + m_ogre_root = new Ogre::Root("plugins_win.cfg", "ogre.cfg"); + #endif #else m_ogre_root = new Ogre::Root("plugins.cfg", "ogre.cfg"); #endif @@ -129,9 +133,9 @@ { DEBUG5("overall frame time was %f",ftime*1000); } - + timer2.reset(); - + update(); ltime =timer2.getMicroseconds (); @@ -151,19 +155,19 @@ { DEBUG("message pump time was %f",time*1000); } - + timer2.reset(); - + // Document aktualisieren m_document->update(ftime*1000); - + ltime =timer2.getMicroseconds (); time = ltime / ( 1000000.0); if (time*1000 > 20) { DEBUG("document update time was %f",time*1000); } - + /* count ++; timesum += time; @@ -179,11 +183,11 @@ try { timer2.reset(); - + // View aktualisieren DEBUG5("main window update"); m_main_window->update(); - + ltime =timer2.getMicroseconds (); time = ltime / ( 1000000.0); if (time*1000 > 20) @@ -199,7 +203,7 @@ timer2.reset(); //DEBUG("frame time in s %f",time); m_cegui_system->injectTimePulse(ftime); - + ltime =timer2.getMicroseconds (); time = ltime / ( 1000000.0); if (time*1000 > 20) @@ -218,10 +222,10 @@ { DEBUG("ogre frame time was %f",time*1000); } - + } - + } @@ -274,23 +278,23 @@ bool Application::setupResources() { DEBUG("initalizing resources"); - Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../resources/models", "FileSystem", "General"); - Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../resources/materials/scripts", "FileSystem", "General"); - Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../resources/materials/textures", "FileSystem", "General"); - Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../resources/particle", "FileSystem", "General"); + Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../resources/models", "FileSystem", "General"); + Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../resources/materials/scripts", "FileSystem", "General"); + Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../resources/materials/textures", "FileSystem", "General"); + Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../resources/particle", "FileSystem", "General"); // CEGUI Resourcen laden - Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../resources/gui/configs", "FileSystem", "GUI"); - Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../resources/gui/fonts", "FileSystem", "GUI"); + Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../resources/gui/configs", "FileSystem", "GUI"); + Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../resources/gui/fonts", "FileSystem", "GUI"); - Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../resources/gui/imagesets", "FileSystem", "GUI"); - Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../resources/gui/layouts", "FileSystem", "GUI"); - Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../resources/gui/looknfeel", "FileSystem", "GUI"); - Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../resources/gui/schemes", "FileSystem", "GUI"); + Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../resources/gui/imagesets", "FileSystem", "GUI"); + Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../resources/gui/layouts", "FileSystem", "GUI"); + Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../resources/gui/looknfeel", "FileSystem", "GUI"); + Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../resources/gui/schemes", "FileSystem", "GUI"); - Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../resources/gui/schemes", "FileSystem", "GUI"); + Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../resources/gui/schemes", "FileSystem", "GUI"); - Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../save", "FileSystem", "Savegame"); + Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../save", "FileSystem", "Savegame"); #if defined(WIN32) @@ -301,11 +305,11 @@ Ogre::ResourceGroupManager::getSingleton().initialiseResourceGroup("General"); Ogre::ResourceGroupManager::getSingleton().initialiseResourceGroup("Savegame"); Ogre::ResourceGroupManager::getSingleton().initialiseResourceGroup("GUI"); - + Ogre::ResourceGroupManager::getSingleton().loadResourceGroup("General"); Ogre::ResourceGroupManager::getSingleton().loadResourceGroup("Savegame"); Ogre::ResourceGroupManager::getSingleton().loadResourceGroup("GUI"); - + // Debugging: Meshes direkt anlegen @@ -408,7 +412,7 @@ { DEBUG("create document\n"); m_document = new Document(); - + m_document->installShortkey(OIS::KC_ESCAPE,Document::CLOSE_ALL); m_document->installShortkey(OIS::KC_I,Document::SHOW_INVENTORY); m_document->installShortkey(OIS::KC_C,Document::SHOW_CHARINFO);
--- a/src/gui/main_gui.cpp Fri Oct 03 14:11:12 2008 +0000 +++ b/src/gui/main_gui.cpp Fri Oct 03 18:00:25 2008 +0000 @@ -5,11 +5,9 @@ #if defined(WIN32) #include "windows.h" - -INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { -#else +#endif +//INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { int main (int argc, char *argv[]) { -#endif // Applikation anlegen @@ -24,12 +22,12 @@ } else { - save = "default.sav"; + save = "../save/default.sav"; } #else - save = "default.sav"; + save = "../save/default.sav"; #endif - + bool server = true; if (argc>=3) { @@ -40,14 +38,14 @@ } Document* doc = app->getDocument(); doc->setSaveFile(save); - + doc->setServer(server); doc->setState(Document::START_GAME); doc->getGUIState()->m_sheet= Document::GAME_SCREEN; doc->getGUIState()->m_shown_windows = Document::NO_WINDOWS; // laufen lassen - + try {
--- a/src/gui/mainwindow.cpp Fri Oct 03 14:11:12 2008 +0000 +++ b/src/gui/mainwindow.cpp Fri Oct 03 18:00:25 2008 +0000 @@ -65,9 +65,9 @@ m_window->getCustomAttribute("WINDOW", &hWnd); // OIS mitteilen fuer welches Fenster die Eingaben abgefangen werden sollen pl.insert(OIS::ParamList::value_type("WINDOW", Ogre::StringConverter::toString(hWnd))); - pl.insert( std::make_pair(std::string("x11_mouse_grab"), std::string("false") ) ); - pl.insert( std::make_pair(std::string("x11_keyboard_grab"), std::string("false"))); - + pl.insert( std::make_pair(std::string("x11_mouse_grab"), std::string("false") ) ); + pl.insert( std::make_pair(std::string("x11_keyboard_grab"), std::string("false"))); + m_ois = OIS::InputManager::createInputSystem( pl ); // Maus initialisieren @@ -2114,7 +2114,7 @@ DEBUG("file found %s",it->c_str()); //File oeffnen - file.open(("../../save/"+(*it)).c_str(),ios::in| ios::binary); + file.open(("../save/"+(*it)).c_str(),ios::in| ios::binary); if (file.is_open()) { savelist->addRow(); @@ -2127,7 +2127,7 @@ // nicht benoetigte Headerdaten ueberspringen bp = head+7; - + char ctmp[11]; ctmp[10] = '\0'; strncpy(ctmp,bp,10); @@ -2496,7 +2496,7 @@ std::string name; Player* player = m_document->getLocalPlayer(); - + // Balken fuer HP CEGUI::ProgressBar* bar = static_cast<CEGUI::ProgressBar*>(win_mgr.getWindow( "HealthProgressBar")); float hperc = player->getDynAttr()->m_health / player->getBaseAttrMod()->m_max_health; @@ -2517,7 +2517,7 @@ bar = static_cast<CEGUI::ProgressBar*>(win_mgr.getWindow( "LeftClickAbilityProgressBar")); timernr = Action::getActionInfo(player->getLeftAction())->m_timer_nr; perc = player->getTimerPercent(timernr); - + if (bar->getProgress() != perc) { bar->setProgress(perc); @@ -2571,7 +2571,7 @@ CEGUI::WindowManager& win_mgr = CEGUI::WindowManager::getSingleton(); CEGUI::Window* label; ostringstream out_stream; - + Player* player = m_document->getLocalPlayer(); // Label Ruestung @@ -2658,7 +2658,7 @@ { label->setText(out_stream.str()); } - + // Label Amulet out_stream.str(""); if (equ->getItem(Equipement::AMULET)!=0) @@ -2783,7 +2783,7 @@ Item* item = m_document->getLocalPlayer()->getEquipement()->getItem(pos); if (item ==0) return; - + DEBUG5("setting tool tip for item at %i",pos); CEGUI::WindowManager& win_mgr = CEGUI::WindowManager::getSingleton(); CEGUI::Window* label; @@ -2819,11 +2819,11 @@ } label = win_mgr.getWindow(out_stream.str()); - + std::string msg =item->getDescription(); label->setTooltipText(msg); - + DEBUG5("Label: %s \ndescription: \n%s",out_stream.str().c_str(),msg.c_str()); if (pos>= Equipement::SMALL_ITEMS && pos< Equipement::SMALL_ITEMS+10) @@ -2834,12 +2834,12 @@ label = win_mgr.getWindow(out_stream.str()); label->setTooltipText(msg); } - + } void MainWindow::updateAbilityTooltip(unsigned int pos) { - + if (pos!=Action::NOACTION) { DEBUG5("update tooltip for %i", pos); @@ -2857,13 +2857,13 @@ label->setTooltipText(tooltip); } - + } void MainWindow::updateObjectInfo() { Player* player = m_document->getLocalPlayer(); - + // Ogre Name des Objektes auf das der Mauszeiger zeigt std::string objname = ""; @@ -2972,7 +2972,7 @@ ServerWObject* cwo; cwo = m_document->getWorld()->getSWObject(id,rid); Creature* cr; - + if (cwo !=0) { // Objekt existiert @@ -3030,7 +3030,7 @@ int id; stream >> id; string_stream<<name; - + DEBUG5("item hover id %i",id); Item* itm = player->getRegion()->getItem(id); @@ -3330,23 +3330,23 @@ bool MainWindow::onItemHover(const CEGUI::EventArgs& evt) { - + const CEGUI::MouseEventArgs& we = static_cast<const CEGUI::MouseEventArgs&>(evt); unsigned int id = we.window->getID(); updateItemTooltip(id); - + } bool MainWindow::onAbilityHover(const CEGUI::EventArgs& evt) { - + const CEGUI::MouseEventArgs& we = static_cast<const CEGUI::MouseEventArgs&>(evt); unsigned int id = we.window->getID(); DEBUG5("mouse entered Ability %i",id); updateAbilityTooltip(id); - + } bool MainWindow::onIncreaseAttributeButtonClicked(const CEGUI::EventArgs& evt) @@ -3404,7 +3404,7 @@ DEBUG("start single player game"); // Spieler ist selbst der Host m_document->setServer(true); - + // Verbindung aufbauen m_document->setState(Document::START_GAME); } @@ -3426,7 +3426,7 @@ // Spieler ist selbst der Host m_document->setServer(true); - + // Verbindung aufbauen m_document->setState(Document::START_GAME); }
--- a/src/gui/scene.cpp Fri Oct 03 14:11:12 2008 +0000 +++ b/src/gui/scene.cpp Fri Oct 03 18:00:25 2008 +0000 @@ -29,7 +29,7 @@ m_projectiles = new map<int,std::string>; registerMeshes(); - + m_region_id = -1; } @@ -133,10 +133,10 @@ // Item Meshes aus XML-Datei Laden ItemLoader* itemloader = 0; itemloader = new ItemLoader; - + list<ItemMeshData*>* item_mesh_list; - item_mesh_list = itemloader->loadItemMeshData("../../data/items.xml"); - + item_mesh_list = itemloader->loadItemMeshData("../data/items.xml"); + if (item_mesh_list != 0) { // Daten auslesen und registrieren @@ -146,7 +146,7 @@ registerItem((*iter)->m_subtype, (*iter)->m_mesh); *iter++; } - + // Liste aus Speicher loeschen iter = item_mesh_list->begin(); while (iter != item_mesh_list->end()) @@ -155,7 +155,7 @@ *iter++; } } - + delete item_mesh_list; item_mesh_list = 0; delete itemloader; @@ -266,20 +266,20 @@ void Scene::update(float ms) { DEBUG5("update scene"); - + // Spielerobjekt Player* player = m_document->getLocalPlayer(); - + if (player ==0) return; if (player->getRegion() ==0) return; - + // Nummer der region in der sich der Spieler befindet short region_nr = player->getGridLocation()->m_region; - - - + + + if (region_nr != m_region_id) { @@ -290,9 +290,9 @@ createScene(); m_document->setModified(m_document->getModified() & ~Document::REGION_MODIFIED); - + m_region_id = region_nr; - + } else { @@ -300,43 +300,43 @@ return; } } - + // Koordinaten des Spielers float x=player->getGeometry()->m_shape.m_coordinate_x; float y=player->getGeometry()->m_shape.m_coordinate_y; - + // Kamera auf Spieler ausrichten m_camera->setPosition(Ogre::Vector3(x*50, 1000, y*50+300)); m_camera->lookAt(Ogre::Vector3(x*50,0,y*50)); - + // alle Objekte aktualisieren updateObjects(); - + DEBUG5("update items"); // alle Items aktualisieren updateItems(); - + updateProjectiles(); - + } void Scene::updateObjects() { Timer timer; timer.start(); - + DEBUG5("update objects"); // Spielerobjekt Player* player = m_document->getLocalPlayer(); - + // aktuelle Liste der Objekte holen float x,y; x = player->getGeometry()->m_shape.m_coordinate_x; y = player->getGeometry()->m_shape.m_coordinate_y; - + list<ServerWObject*> objs; ServerWObject* obj; list<ServerWObject*>::iterator it; @@ -346,14 +346,14 @@ s.m_type = Shape::RECT; s.m_extent_x = 20; s.m_extent_y = 20; - + ServerWObject* wo, *cwo; Creature* cr; - + player->getRegion()->getSWObjectsInShape(&s,&objs, WorldObject::Geometry::LAYER_ALL,WorldObject::CREATURE); player->getRegion()->getSWObjectsInShape(&s,&objs, WorldObject::Geometry::LAYER_ALL,WorldObject::DEAD); - - + + // Liste der aktuell in der Szene vorhanden Objekte durchmustern map<int, string>::iterator it2; int id; @@ -375,7 +375,7 @@ ++it2; } } - + // aller Objekte im Dokument durchmustern for (it = objs.begin();it != objs.end(); ++it) @@ -384,13 +384,13 @@ // Darstellung fuer das Objekt aktualisieren updateObject(obj); } - + } void Scene::updateItems() { Player* player = m_document->getLocalPlayer(); - + // Liste der aktuell in der Szene vorhandenen Items durchmustern map<int,DropItem*>* itms; map<int,DropItem*>::iterator it; @@ -441,10 +441,10 @@ // Koordinaten des Objektes float x=di->m_x; float y=di->m_y; - + // Ortsvektor des Objektes Ogre::Vector3 vec(x*25,0,y*25); - + // an die richtige Stelle verschieben m_scene_manager->getSceneNode(node_name)->setPosition(vec); } @@ -496,13 +496,13 @@ std::string mod_name; int i; Ogre::ParticleSystem *mod_part; - - + + // Animation anpassen // Status der Animation Ogre::AnimationState* anim; Ogre::AnimationStateSet* anim_set; - + DEBUG5("animation"); // Aktion des Objeks Creature* cr=0; @@ -518,25 +518,25 @@ { anim_name = animations[cr->getAction()->m_animation_number % animations.size()]; } - + obj_ent = m_scene_manager->getEntity(name); if (obj_ent == 0) { ERRORMSG("object %s not found",name.c_str()); } - + if (anim_name != "") { // status der Animation setzen //Iterator ueber alle aktiven Animationen anim_set = obj_ent->getAllAnimationStates(); - + // Testen ob das Objekt animiert ist if (anim_set != 0) { - + Ogre::ConstEnabledAnimationStateIterator anim_it = anim_set->getEnabledAnimationStateIterator(); - + //deaktiviert alle animationen, die gerade nicht verwendet werden while(anim_it.hasMoreElements()) { @@ -545,14 +545,14 @@ //if(anim->getAnimationName!=anim_name) anim->setEnabled(false); } - + try { if (anim_set->hasAnimationState(anim_name)) { anim = obj_ent->getAnimationState(anim_name); anim->setEnabled(true); - + // prozentsatz zu dem die Animation fortgeschritten ist float perc = cr->getAction()->m_elapsed_time / cr->getAction()->m_time ; DEBUG5("setting animation %s to %f",anim_name.c_str(),perc); @@ -570,7 +570,7 @@ //keine Animation } } - + DEBUG5("extra meshes"); // angehaengte Meshes an die verwendeten Items anpassen if (obj->getTypeInfo()->m_type == WorldObject::TypeInfo::TYPE_PLAYER) @@ -682,31 +682,31 @@ { num.str(""); num <<"mod"<< i; - + mod_name = name + num.str(); - + mod_part = m_scene_manager->getParticleSystem(mod_name); vis = mod_part->isVisible(); - + if ( (status_mods[i]>0) ^ vis) { mod_part->setVisible(!vis); } } - + // weitere Effekte anpassen float* effects = cr->getDynAttr()->m_effect_time; - + for (i=0;i<NR_EFFECTS;i++) { num.str(""); num <<"effect"<< i; - + mod_name = name + num.str(); - + mod_part = m_scene_manager->getParticleSystem(mod_name); vis = mod_part->isVisible(); - + if ( (effects[i]>0) ^ vis) { mod_part->setVisible(!vis); @@ -729,7 +729,7 @@ { Timer timer; timer.start(); - + DEBUG5("creating object %s",name.c_str()); std::string node_name = name + "Node"; @@ -861,7 +861,7 @@ void Scene::updateProjectiles() { Player* player = m_document->getLocalPlayer(); - + map<int,DmgProjectile*>* projectiles; map<int,DmgProjectile*>::iterator it; projectiles = player->getRegion()->getProjectiles(); @@ -1158,17 +1158,17 @@ clearObjects(); // Liste der statischen Objekte - list<ServerWObject*> stat_objs; - + list<ServerWObject*> stat_objs; + Region* region = m_document->getLocalPlayer()->getRegion(); - + Shape s; s.m_coordinate_x = 0; s.m_coordinate_y = 0; s.m_type = Shape::RECT; s.m_extent_x = 10000; s.m_extent_y = 10000; - + region->getSWObjectsInShape(&s,&stat_objs, WorldObject::Geometry::LAYER_ALL,WorldObject::FIXED); list<ServerWObject*>::iterator it; std::string name; @@ -1177,7 +1177,7 @@ name = (*it)->getNameId(); DEBUG5("create static object %s",name.c_str()); - + // Objekt in der Szene erzeugen createObject((*it),name,true);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ogre.cfg Fri Oct 03 18:00:25 2008 +0000 @@ -0,0 +1,7 @@ +Render System=OpenGL Rendering Subsystem + +[OpenGL Rendering Subsystem] +FSAA=0 +Full Screen=No +RTT Preferred Mode=PBuffer +Video Mode=940 x 705
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/plugins_win.cfg Fri Oct 03 18:00:25 2008 +0000 @@ -0,0 +1,14 @@ +# Defines plugins to load + +# Define plugin folder +PluginFolder=..\lib + +# Define plugins +Plugin=RenderSystem_Direct3D9 +Plugin=RenderSystem_GL +Plugin=Plugin_ParticleFX +Plugin=Plugin_BSPSceneManager +Plugin=Plugin_OctreeSceneManager +Plugin=Plugin_CgProgramManager + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/plugins_win_d.cfg Fri Oct 03 18:00:25 2008 +0000 @@ -0,0 +1,14 @@ +# Defines plugins to load + +# Define plugin folder +PluginFolder=..\lib + +# Define plugins +Plugin=RenderSystem_Direct3D9_d +Plugin=RenderSystem_GL_d +Plugin=Plugin_ParticleFX_d +Plugin=Plugin_BSPSceneManager_d +Plugin=Plugin_OctreeSceneManager_d +Plugin=Plugin_CgProgramManager_d + +