Commit Graph

136 Commits

Author SHA1 Message Date
nethack.allison
46f4a4e5c5 win32 IDE fix
A recent change described as:
"changed the IDE files to build NetHackW.exe instead of
nethackw.exe. This is only cosmetic, but consistent with the
other executable."

was not just cosmetic. The changes prevented the
executable from being copied to the target binary
directory at all, due to the removal of the necessary
trailing tab.
2002-12-11 03:52:06 +00:00
nethack.allison
bea789ea2d win32 updates (from <Someone>)
- restructured Install.nt quite a bit. It now contains instructions
to build a graphical nethack using NMAKE, too. I merged
the instructions for command line builds, and separated the IDE
build; that made more sense to me. It is shorter, too.
- added some lines to all Makefiles so they now build
NetHackW.exe when GRAPHICAL is "Y", and NetHack.exe
otherwise. I espacially did not test this on Borland.
Previously, the makefiles would always build NetHack.exe.
- changed the IDE files to build NetHackW.exe instead of
nethackw.exe. This is only cosmetic, but consistent with the
other executable.
- made a small change to pcmain.c, as the MinGW linker
cannot decide between main() and WinMain() when both are
present, as explained in <Someone>'s original
message. (I used a #ifndef instead of comments ;-)
The MinGW graphical build indeed seems to work.
2002-12-09 03:12:47 +00:00
nethack.allison
fded4ca778 B08003 (from <Someone>) 2002-11-04 03:26:59 +00:00
nethack.allison
04f845f87b splash screen patches (from <Someone>)
- Show splash on "Help - About" with all version information
- Show splash with news on startup (if show_splash is on of course).
I made another small patch to the splash screen. Because the greenish background colour always seemed a little odd to me, I decided
to make it transparent. Doing that, I found the following:
- The splash picture was a 24-bit bitmap, although it had less than 256 colours. That makes the size of the final executable about
200K larger than necessary. I changed it to a 256-colour bitmap. I also changed the background colour to the default tile background
colour, for consistency. The new bitmap is attached here. My excuses if the large file means a problem to anyone.
- In Microsoft's documentation (see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_2y9g.asp) is is
stated that on Windows 95/98 "TransparentBlt contains a memory leak that can exhaust system resources." It is recommended to use
different code to draw transparent bitmaps, to be precise: the alternative code that is already in nhapply_image_transparent(). I'm
almost convinced that this is the cause for Betabug B08008 reported bij <Someone>. Can anyone confirm he is using 95/98? I decided
for the easy way out and removed the code that uses TransparentBlt completely. I see not much reason to use it if it is a) buggy and
b) we have an alternative that works perfectly. This is attached as trans.patch.
- The rest of the patch only changes the BitBlt() in mhsplash.c to a nhapply_image_transparent().
2002-11-03 15:26:41 +00:00
nethack.allison
2b31ea2c96 NH 3.4.0 fonts on Win2K / Japanese (from <Someone>)
Here is one more patch (see attachment). It does TranslateCharsetInfo
to map codepage to a character set. I am not sure if it will help though.
Japanese Windows is using codepage 932 and I don't think IBMgraphics
will work too well in this codepage.
AFAIK, there is no way in win32 to force arbitrary codepage for a font
(CP 437  in case of Nethack). That means IBMgraphics is unlikely to work
if the system locale is set to something other than US or Western Europe
(CP 437 & 850).

-<Someone>
2002-11-03 15:16:22 +00:00
nethack.allison
b9a3376fc5 stray files (from <Someone>)
winhack.h is not being used anywhere now and can safely be deleted.
There 2 instances of this file:

sys\wince\winhack.h
win\win32\winhack.h

The patch is also attached that adjusts for this.
2002-09-19 00:16:10 +00:00
nethack.allison
ffb22245a9 (from <Someone>) 2002-09-17 03:32:07 +00:00
nethack.allison
6bebdbb135 win32 USER_SOUNDS
This uses pmatch() as a default pattern matcher,
and #defines USER_SOUNDS_REGEX for Qt
to enable the code for regular expressions.

This is enabled for win32tty and win32gui.
2002-09-02 23:28:54 +00:00
nethack.allison
71eb636e14 win32 (from <Someone>)
This patch is an improvement for menu/text dialogs.
This is a code carried over from Windows CE port. It changes
text and menu windows from "system popup" to plain "child"
windows of the main nethack window. Nethack main window can
now be resized/moved/minimized when menu/text window is up.
Menu/text windows will always stay inside the main window and
move along with it.

<Someone>
2002-08-28 04:53:50 +00:00
nethack.allison
ea31aa03dc (from <Someone>)
> Questions are being appended in the message window, some showing
> up on the same line. This is really noticeable with the
> end-of-game disclosure questions. Questions should always be
> presented on a new line.

At end of game is probably the only place, since then more than one
question is asked in the same turn. Anyhow, here's the patch, in
mswproc.c  [...]

- No checkboxes in menu if menu is PICK_NONE. mhmenu.c

- About box changed to splash screen. This last thing is open
for discussion, as the splash screen currently does not give
exactly the ame information as the about box (or the v command).
Maybe the splash should be enhanced? Anyway, it looks better than
the About-box. I didn't remove the About-box code and resource yet
until this discussion is had. mhmain.c

<Someone>
2002-08-25 12:29:35 +00:00
nethack.allison
706f95ca7d misc bits: options, also win32 follow-up from <Someone>
(from <Someone>):
I guess that this:
      mcam += iflags.wc_scroll_amount;
should be his:
      mcam += iflags.wc_scroll_amount - 1;
In words: If scroll amount is 1, the behaviour should be as it was
before the option existed, which means: no addition to mcam.
2002-08-24 15:33:00 +00:00
nethack.allison
2ce6152d63 B08021 scroll_amount wincap option
> - I'd like to see another option added: scroll_amount. In
>   combination with scroll_margin, this would control the amount
>   of squares the screen is scrolled when the scroll_margin is
>   reached (currently, this amount is 1, but if I recall
>   correctly, it used to be more). For example, if both were 5,
>   when you came within 5 spaces of the left screen border, the
>   screen would shift 5 spaces to the right).
2002-08-23 01:03:59 +00:00
nethack.allison
b3417655da B08002 - win32gui: message window sizing (from <Someone>)
>>>  - When I set font and font size of the message window, the
>>>  message window size doesn't calculate correctly to show the
>>>  number of message lines specified. For example, I set the font
>>>  size to 6, and the number of messages to display to 8. Now
>>>  there is whitespace at the top of my message window. When I
>>>  set the font size to 14 now, I see only 5.5 message lines.
>>>  This is unintuitive: the interface should recalculate the
>>>  window size needed to display the correct number of lines.
>>>
>>  I agree, especially since the message window size is
>>  recalculated correctly if you save and restore. An easy way out
>>  would be to set those options to DISP_IN_GAME.
>
>  That seems like a good work-around until the proper fix is done.

The patch is attached. I moved the code that was computing the font
size to mswin_message_window_size(). This will cause the message
window to resize properly if the message font size changes. There
are also 2 minor bits in mswproc.c to invalidate the message window
when the font changes.
2002-08-21 23:14:27 +00:00
nethack.allison
411195c75f suggestions from <Someone> 2002-08-21 11:02:56 +00:00
nethack.allison
c5c963e5ca (from <Someone>)
> - When I pick up something, the count is displayed to the right.
>   I'd like this count to stay visible when I switch to another
>   item in the list.
2002-08-20 00:04:34 +00:00
nethack.allison
289c2635bb win32gui: hide perm_invent option from the options menu in the game 2002-08-18 01:53:05 +00:00
nethack.allison
0c31ade8df fix reported beta-tester problem of not being able
to select capital letter at some prompts.
2002-08-18 00:16:43 +00:00
nethack.allison
3ea4cad695 (from <Someone>)
there is a maximum of 200 characters for a message line
now. That should be TBUFSZ.
2002-08-13 00:38:03 +00:00
nethack.allison
0fef89bfe3 win32 message window (from <Someone>)
three new features for the message window we discussed:
- Graying out lines that are old -- slightly cleaner than <Someone>'s version.
- Message concatenation.
- --More-- prompt if there are more messages this turn than fit in the
  window.
As a by-product of these changes, some other things have changed, too:
- The message lines array is now used in a round-robin way, i.e. the
  messages are no longer copied one line up when adding a new message.
- clear_nhwindow no longer redraws the window, which significantly
  reduces screen flicker.
- A caret bug was fixed.
- The last line is no longer highlighted, as this seems unnecessary
  since the most recent messages are in a different colour
- A bug was fixed that caused two lines too many to be drawn on each
  paint.
2002-08-12 11:19:04 +00:00
nethack.allison
00653d2f9a win32gui: case insensitive mswin_yn_function()
Address a complaint by <Someone> about
mswin_yn_function() requiring lowercase 'n',
when the tty port tty_yn_function() accepts
upper or lower.
2002-08-06 02:44:08 +00:00
nethack.allison
8a9c09a8b1 (From <Someone>)
> It's probably best to empty
> mswin_update_inventory() in win\win32\. If I
> remember correctly there is some code in there now
> which probably behaves badly if perm_invent is
> switched on
2002-07-19 13:42:24 +00:00
nethack.allison
d70a3772f3 WIN32: File Save still enabled during #quit disclosure processing
> Below is the result of your feedback form.  It was submitted by
> <email deleted> on Tuesday, June 4, 2002 at 21:04:54
> After alt-Q or F)ile, Q)uitting, it is still possible to F)ile, S)ave your
> game.  By doing this after you are shown your inventory [fully identified] and
> attributes (It must be done before the last "Do you want to view your %1"
> dialog is answered--usually conduct), which means you can know what you are
> holding-- although it won't be officially identified.  But you can use it to
> avoid putting on, say, an amulet of strangulation by mistake.
2002-06-29 17:43:01 +00:00
nethack.allison
e996f36748 from <Someone>
In item-selection menus, as you know one can press "=" to select all
rings, say.  This doesn't work if the letters run out before you get to
the rings, however (because there are so many items).

Menu code did not check group accelerators on items without assigned letters
(if the letters run out). Fixed.
2002-06-01 23:55:07 +00:00
nethack.allison
31e40def94 (from <Someone>)
Allow someone to resume their game by clicking on a saved game, if they
have an association set up.
2002-04-21 13:22:57 +00:00
nethack.allison
20472e645c (from <Someone>)
W340-6 fix
fixed: mswin_menu_size incremented width of the actual menu window
each time being called. This only happens if "show window content
while dragging" option is set in Windows desktop settings.
2002-04-18 22:21:05 +00:00
nethack.allison
d493eb8d90 (from <Someone>)
The pet image was garbled because it was reduced to the size of the pet mark
bitmap
in the function that draws pet mark transparently over the pet tile (32x32
image was reduced to 16x16 and then stretched again)

Also added: use Windows-provided TransparentBlt where available.
2002-04-18 22:11:34 +00:00
nethack.allison
841db8164d Get rid of some win32 warnings from recent patches
mhmenu.c(798) : warning C4101: 'dtp' : unreferenced local variable
mhmenu.c(1273) : warning C4101: 'wbuf' : unreferenced local variable
mhmenu.c(1290) : warning C4101: 'drawRect' : unreferenced local variable
mhmenu.c(1289) : warning C4101: 'dtp' : unreferenced local variable
2002-04-16 21:40:55 +00:00
nethack.allison
a41aec240e W340-3 menu columns
In some menus the options columns didn't line up perfectly
when very long items were present.
2002-04-11 14:08:46 +00:00
nethack.allison
817bdf58e7 B/U/C Priest suggestion by Pat
- also a win32 dsp file modification
2002-04-07 12:51:28 +00:00
nethack.allison
28e7cd5c0e #741 (from <Someone>)
Another fatal bug in win32 graphical interface
"Too many "dead" NHW_TEXT windows around. Repeating #? 15 times will produce
the same result."

>Wizard, wearing gray dragon scale mail and wielding Magicbane. The
>Dark One teleports next to me and I get the message "The Dark One
>casts a spell at you! A field of force surrounds you!". Then I get
>3 windows popping up: "Oops." "The dungeon collapses." "ERROR: No
>windows available..." and the game exits.

> I wish I could reproduce this reliably.  Here's the method I've been using
> to do it:
>
> - Equip character (+4 gdsm, Magicbane, unicorn horn, see invisible,
> telepathy, key, "gain ability" potions to max out, enhance dagger skill
> to max, level change to 14)
> - Teleport down to the portal entrance.  Go through the portal, get
> permission to go down to see the Dark One.
> - Go down to the Dark One's level, teleport over, open up his door, and
> basically just try to head back to the entrance and kill him.
>
> Two different things have happened while doing this so far.  (I've been
> able to get errors something like 5 times out of many tries, and I haven't
> been about to do it at all in the TTY version - only the windows
> one.)  Either I get the above message I mentioned to you, which seems to
> happen at a random time, or I get a slightly different result - "Oops,
> program initialization failed, ERROR: No windows available".  This second
> result happened once _after_ I had killed the Dark One and was trying to
> #quit.
>
2002-04-02 01:26:25 +00:00
nethack.allison
d3cef1b49b (from Yitzhak)
fixes a little problem noticed in mhsplash.c while trying to
figure out my debugger problems.
2002-04-01 21:27:23 +00:00
nethack.allison
df39d363b2 #R733 (from <Someone>)
- fix a buffer overflow in the win32 graphical interface
2002-04-01 21:23:38 +00:00
nethack.allison
add3dcf7ee (from Yitzhak) 2002-04-01 19:55:37 +00:00
nethack.allison
14ec6fe03b some 3.4.1 preparation
Update patchlevel.h
Update some strings from 3.4.0 to 3.4.1.
2002-03-29 06:30:33 +00:00
nethack.allison
e52620da26 (from Yitzhak)
- mostly from Yitzhak, with a modification based on subsequent discussion.

After installing everything (mail, cvs, etc) I found the compile was
broken.

Yitzhak: This fixes the compile.  I used LONG for the types because using DWORD
conflicted in Borland with signed/unsigned compare mismatches.

[Also works around some perm_invent code destined for a later patch that got
rolled in prematurely]
2002-03-28 14:24:29 +00:00
nethack.allison
63e0b1ec2d (from <Someone>)
Two things:
1. This patch causes the window placement of the main window to be
written to the registry, and to be restored upon the next start
of the program. I had to move the creation of the main window to init_nhwindows,
as the registry is not read until then.

2.  Implement support for wc_popup_dialog (or rather, support for not having
popup windows.) It asks getlin questions and get_ext_cmd on the
message window, much like the TTY port does it.

The get_ext_cmd procedure is almost but not quite the same as the
one for TTY, and I think it is better: It autocompletes the extended
command you type, but if you keep on typing it doesn't add those letters
after the completed command, but just keeps track of how many (correct)
characters you typed. If you type a different character than the
autocompleted command has, it shows you what you typed again. If you
press backspace, it deletes the characters you typed, and if autocompletion
is no longer possible, it removes the autocompleted part. The effect
of this is that you can type as many letters as you want when typing
an extended command, as long as it is enough to identify one command;
and you only have to delete the characters you actually typed if you made
a mistake. I think autocompletion is a lot less obtrusive this way.

Some notes about the patch:
- Both mswin_getlin and mswin_get_ext_cmd now have two versions, with
  and without a popup.
- yn_question was changed so that it displays a caret, which is a lot
  nicer IMHO.
- I had to implement a new NetHack Windows Message parameter,
  "MSNH_MSG_CARET", to make it possible to show and hide the caret in
  the message window. Normally the caret is created and destroyed by the
  window that owns it, but in NetHack the input focus is always on the
  main window, while the caret is in the message window, which happens
  to be the only one that knows how large the caret should be.
- mswin_putstr_ex's last parameter changed from boolean to int; the
  semantics are enhanced so that a negative last parameter means "delete
  that many characters from the input line". The string to be deleted is
  passed in as well, although it is currently not used.
- A rather large chunk of code finds out where the last string that was
  displayed on the message window ended. This is necessary to place the
  caret at the right spot. The caret is always positioned there, even if
  it is hidden or non-existing.
- mswin_get_nh_event was changed to actually process and empty the
  message queue, and called from mswin_putstr_ex to make sure the
  message window is updated before the next step is done. Without this,
  the caret is positioned before the last message is painted, which
  makes its x-position after the last character of the previous line.
2002-03-27 12:17:26 +00:00
nethack.allison
1b705ec5e2 (from <Someone>)
- use windowcolors settings for text backgroud/foreground color
2002-03-25 00:01:31 +00:00
nethack.allison
c624f53776 W340-4 (from <Someone>)
Date: Sun, 24 Mar 2002 15:40:30 -0800
<email deleted>
Subject: patch: nethack-graphical - menu window colors

- W340-4  (menu checkboxes have a hard-coded white inner part)
- use windowcolors settings for menu backgroud/foreground color

<Someone>
2002-03-24 23:57:19 +00:00
nethack.allison
20779fba75 #R675: bug in win32 GUI (division by zero)
(from <Someone>)

>The tile size is actually set just once in mhmap.c so validation can be done
>in one place. The patch is attached.
>
><email deleted>
on Sunday, March 24, 2002 at 16:15:50
---------------------------------------------------------------------------

mailversion: 1.10

nhversion: 3.4.0

nhfrom: 3.4.0 Official binary release for Windows 95/98/NT/2000/Me/XP
(nh340win.zip)

hardware: 1 Ghz AMD Athlon, 512 MB RAM etc. etc.
I don't think that the hardware is related to the problem because I found it.

software: I used Win 98 (1st edition) and MS VC++ 6.0 to find/fix the bug in
Nethack 3.4.0.

comments: steps to crash: start nethackw.exe - start a game - select "fit to
sreen" in the map menue - rezize the map until it is very very small -> crash
2002-03-24 23:53:28 +00:00
nethack.allison
4ac38da4d9 (from Yitzhak)
-Yitzhak provided this prior to release
 but it never made it in.
2002-03-23 20:17:18 +00:00
nethack.allison
f72ed65d1a (final patch from <Someone>)
This patch implements two things:
- space now dismisses a menu, text or menutext window when you are
  at the bottom of that window
- Page scrolling in menus now works as follows:
  pressing PgDn (or Space in NH mode) moves the focus down one page,
  and moves the scroll position down one page. The effect of this
  is that you always get a full new page of items (which is what
  NetHack players expect), and that the focus moved down one page
  (what Windows users expect.)
  The same (revers) goes for scrolling up a page.

A Windows user will still be a bit surprised when the focus is on
the top item, and he presses '>': he gets a new page of things instead
of the focus moving to the bottom of the page.
However, the PgUp/PgDn keys (which he probably uses) still have the
old Windows behaviour.
2002-03-20 13:05:58 +00:00
nethack.allison
bff7b7e431 (from Yitzhak)
This band adds handling for the "5" key in the numeric keypad.  This is
called VK_CLEAR in the VK_ constants.  Using this band, and with
NumLock off, doing 5 will send NetHack the letter 'g'.  Doing SHIFT-5 will
send 'G'.  Without this band and with NumLock off, 5 does nothing.  With
NumLock on, 5 sends 5.
2002-03-20 10:44:13 +00:00
nethack.allison
184ce30dad (from <Someone>)
This implements some items on the ToDo list:
- H0005: Space does the same as PgDn in text, menu and 'menutext'
        windows if NetHack mode is on.
- M0004: The cursor (caret) is hidden in text windows and menu
         windows.
         PgUp/PgDn/Up/Dn don't move the cursor, but scroll the
         window.
2002-03-19 22:37:22 +00:00
nethack.allison
e55d3509a1 (from Yitzhak)
accelerators
2002-03-18 21:44:09 +00:00
nethack.allison
ac5851dbf6 (from Yitzhak) mhmain, ntty 2002-03-18 00:43:15 +00:00
nethack.allison
dce21606ab (from Yitzhak) ALT-?
This patch allows ALT-? to do #? in NetHack mode by not doing
TranslateAccelerator in NetHack mode.  This relies on the short circuit
logic of || (much of NetHack code relies on it, it's just an explanatory note).
2002-03-17 17:07:22 +00:00
nethack.allison
855e6eef88 (from Yitzhak) ALT-H
This patch disables ALT-H in NetHack mode.  Before patch: ALT-H in NetHack
mode brings down the Help menu in the menu bar.  After patch: ALT-H does
nothing in NetHack mode.  In both cases, in Windows mode, ALT-H brings
down the Help menu in the menu bar.   I can easily write a patch to have
ALT-H in NetHack mode act the same as '?'.

Explanation:
return 0: this window proc has processed this event.
return DefWindowProc(): process using default window proc.

ALT-H is the only key for which DefWindowProc() does something special AND
reaches the else.
2002-03-17 17:03:45 +00:00
nethack.allison
723e17b6ee (from Yitzhak)
This is the part of Yitzhak's patch not currently under discussion.
2002-03-16 18:54:16 +00:00
nethack.allison
6c749785e8 Move tile2bmp.c to win/share
This is so it can be shared with Qt.
If, for some reason, we have to cut another source tarball for
3.4.0, then this will be included.  Otherwise, this will
turn out to be a post-3.4.0 patch.
2002-03-14 12:54:06 +00:00
nethack.allison
e8845e452f (from <Someone>)
- fixed bug as From a bug report.
  validxxxx functions cannot handle ROLE_RANDOM and ROLE_NONE
  parameters like ok_xxxx functions do
2002-03-12 23:07:59 +00:00