00001 /* 00002 Copyright (C) 2001 The Exult Team 00003 00004 This program is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU General Public License 00006 as published by the Free Software Foundation; either version 2 00007 of the License, or (at your option) any later version. 00008 00009 This program is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 GNU General Public License for more details. 00013 00014 You should have received a copy of the GNU General Public License 00015 along with this program; if not, write to the Free Software 00016 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00017 */ 00018 00019 #ifdef HAVE_CONFIG_H 00020 # include <config.h> 00021 #endif 00022 00023 #include "Face_button.h" 00024 #include "Paperdoll_gump.h" 00025 #include "actors.h" 00026 #include "gamewin.h" 00027 00028 Face_button::Face_button(Gump *par, int px, int py, Actor *a) 00029 : Gump_button(par, 0, px, py), actor(a) 00030 { 00031 Paperdoll_gump::Paperdoll_npc *npcinfo = 00032 Paperdoll_gump::GetCharacterInfo(a->get_shapenum()); 00033 00034 if (!npcinfo) npcinfo = Paperdoll_gump::GetCharacterInfoSafe(a->get_sexed_coloured_shape()); 00035 if (!npcinfo) npcinfo = Paperdoll_gump::GetCharacterInfoSafe(a->get_shape_real()); 00036 00037 set_shape(npcinfo->head_shape); 00038 set_frame(npcinfo->head_frame); 00039 set_file(npcinfo->file); 00040 } 00041 00042 00043 void Face_button::double_clicked(int x, int y) 00044 { 00045 actor->show_inventory(); 00046 } 00047 00048 void Face_button::update_widget() 00049 { 00050 Paperdoll_gump::Paperdoll_npc *npcinfo = 00051 Paperdoll_gump::GetCharacterInfo(actor->get_shapenum()); 00052 00053 if (!npcinfo) npcinfo = Paperdoll_gump::GetCharacterInfoSafe(actor->get_sexed_coloured_shape()); 00054 if (!npcinfo) npcinfo = Paperdoll_gump::GetCharacterInfoSafe(actor->get_shape_real()); 00055 00056 if (get_shapenum() != npcinfo->head_shape || 00057 get_framenum() != npcinfo->head_frame || 00058 get_shapefile() != npcinfo->file) 00059 { 00060 gwin->add_dirty(get_rect()); 00061 set_shape(npcinfo->head_shape); 00062 set_frame(npcinfo->head_frame); 00063 set_file(npcinfo->file); 00064 gwin->add_dirty(get_rect()); 00065 } 00066 00067 }