1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-06-27 01:25:35 +00:00
Commit Graph

262 Commits

Author SHA1 Message Date
Tim Sarbin
954670da5f
Fixed linting issues (#438) 2020-06-24 10:13:11 -04:00
dk
46ccce56bd
minor edits to d2map engine, added methods for converting between index and tile coordinates (#433) 2020-06-24 08:10:48 -04:00
nicholas-eden
329e2f0fab
Use closest path if path not found (#431)
When clicking on the other side of a wall or in an an inaccessible area,
route the player the closest possible node.  This allows running along
walls and matches the original closely.

Co-authored-by: Nicholas Eden <neden@zigzagame.com>
2020-06-24 08:09:00 -04:00
Tim Sarbin
a24c05efa9
Map generation and test fixes (#430)
* More mapgen updates

* Added east generation

* Added west town generation

* Fixed test errors
2020-06-24 00:04:27 -04:00
David Carrell
37ae98d81b
Abstract away remaining ebiten references (#409)
* 337 - remove ebiten from character selection

* 337 - abstract d2input away from ebiten implementation

* WIP 337 - remove ebiten use from d2ui

* 337 - fix accidental left->right change

* 337 - fix ui button selection bugs

* 337 - fix textbox bugs

* 337 - fix scrollbar bugs

* 337 - address PR comments

* 337 - fix invalid hero selection bug

Co-authored-by: David Carrell <carrelda@Davids-MacBook-Pro.local>
2020-06-23 18:12:08 -04:00
Ripolak
f729ff6101
Feature/load misc items (#424)
* Add InventoryItemMisc struct

* Add GetMiscItemByCode function

* Implement InventoryItem interface for InventoryItemMisc

* Add rings and amulets to the example items loading.

* Fix Y of LeftHand and RightHand equipment slots.

* Add "Ripolak" name to CONTRIBUTORS

* Remove double item
2020-06-23 15:28:03 -04:00
nicholas-eden
dd21809288
Pull go-astar code into the repo, improve perf (#411)
Copied go-astar into d2common/d2astar, made a few optimizations.  Runs
roughly 30% faster according to my benchmarking.

Added a `maxCost` param to prevent searching the entire map for a path.
This probably needs tweaked a bit, but follows the original game more
closely.

Co-authored-by: Nicholas Eden <neden@zigzagame.com>
2020-06-23 02:04:17 -04:00
Tim Sarbin
c2db7ede66
Added basic map generation for first area of south town (#408)
* Map engine updates. Limited rendering to specific area.

* Added south town border generation
2020-06-23 01:05:01 -04:00
Ziemas
15b78372b2
Update textboxes in their advance function (#407)
Fixes wonky input
2020-06-22 23:51:23 -04:00
Tim Sarbin
4dc4654750
Fixed map stamp offset issue (#403) 2020-06-22 19:33:12 -04:00
dk
953271b8e6
minor edits (#401)
* make game update at 25fps, ui update at max fps

* minor edits to func names, d2resource constants

* renamed `loadDictionary` to `loadTextDictionary` to avoid confusion with `LoadDataDictionary`
* updated line in main.go that calls `loadTextDictionary`
* added tokens as constants inside of `d2resource/resource_paths.go` that are used in font/language paths
* moved locale string handling stuff into it's own func, now uses tokens defined in d2resource

* minor edits to func names, d2resource constants

* renamed `loadDictionary` to `loadTextDictionary` to avoid confusion with `LoadDataDictionary`
* updated line in main.go that calls `loadTextDictionary`
* added tokens as constants inside of `d2resource/resource_paths.go` that are used in font/language paths
* moved locale string handling stuff into it's own func, now uses tokens defined in d2resource

* fix: accidentally renamed func in d2asset

* git is hard

accidentally added changes not meant for this commit
2020-06-22 17:36:45 -04:00
presiyan-ivanov
2835ff4cf1
Improve run/walk/neutral animation handling. Initial parsing of Level… (#372)
* Improve run/walk/neutral animation handling. Initial parsing of LevelDetail records. Support for holding mouse buttons.

- Run/walk/neutral positions now map to a different animation mode(and speed) depending if in or out of town.

- Run/walk toggle which can be activated/deactivated with R key.

- Temporary(and incorrect) loading and mapping for LevelDetails records.

- Zone change label which shows the level name from LevelDetailsRecord when the player enters a different zone.

- Allow holding mouse left/right button to repeatedly generate an action.

* Remove duplicate load of LevelDetails. Replace numbers in zone change logic with their corresponding RegionIdType

* Move zone change check at the correct place

Co-authored-by: Presiyan Ivanov <presiyan-ivanov@users.noreply.github.com>
2020-06-22 15:55:32 -04:00
Haashi
5e1725dd7d
385/lintissues (#391)
* camera offset for ui panels :

added maprenderer viewport to be aligned left or right

calling alignement on keyPress in game_controls

* check if already aligned

* fix bugs

-forgot to assign alignement
-defaultScreenRect instead of screenRect because of issue mentionned in original comment

* remove config.json and replace go.mod line

* removing duplicate import of d2common

replacing all dh to d2common

* remove useless breaks from switch statement

* better range when value unused + prettying import

* item_affix rewrite

using return values instead of pointer references in arguments

* ebiten deprecated calls

* small fixes
2020-06-22 11:53:44 -04:00
Haashi
711cae2d69
fix for #358 from recent PRs (#390)
* camera offset for ui panels :

added maprenderer viewport to be aligned left or right

calling alignement on keyPress in game_controls

* check if already aligned

* fix bugs

-forgot to assign alignement
-defaultScreenRect instead of screenRect because of issue mentionned in original comment

* remove config.json and replace go.mod line

* update with new renderer and escape menu
2020-06-22 09:23:56 -04:00
Tim Sarbin
e81450b9d5
Re-fix map starting location bug (#388) 2020-06-21 23:23:00 -04:00
Ziemas
75112ec736
Show special tiles in mapdebug (#386)
More useful than the floor stuff

Also method for testing if special
2020-06-21 22:14:06 -04:00
Tim Sarbin
4b6065b2bf
Fixed vertical centering for the player (#384) 2020-06-21 21:49:32 -04:00
dk
145aa92d20
hacky bugfix to keep game from crashing tf out with other languages (#383) 2020-06-21 20:45:34 -04:00
Tim Sarbin
912aaf044c
Re-tooled rendering engine (#379) 2020-06-21 18:40:37 -04:00
Haashi
7ba3cb702d
fix bug from PR#369 (#370)
* camera offset for ui panels :

added maprenderer viewport to be aligned left or right

calling alignement on keyPress in game_controls

* check if already aligned

* fix bugs

-forgot to assign alignement
-defaultScreenRect instead of screenRect because of issue mentionned in original comment

* remove config.json and replace go.mod line
2020-06-21 16:06:11 -04:00
Haashi
afe4a3a25a
camera offset for ui panels : (#369)
* camera offset for ui panels :

added maprenderer viewport to be aligned left or right

calling alignement on keyPress in game_controls

* check if already aligned
2020-06-21 15:26:07 -04:00
Tim Sarbin
0de7516a53
Fixed entity and object position bug (#366)
* Performance improvements

* fix readbytes variable

* Fixed entity/object position bug.

* Fixed subTileY capitalization issue
2020-06-20 21:26:26 -04:00
Tim Sarbin
b9f17f433f
Performance/Memory Improvements (#365)
* Performance improvements

* fix readbytes variable
2020-06-20 21:07:36 -04:00
Tim Sarbin
e510674b42
Added more temporary mapgen. (#359) 2020-06-20 14:04:51 -04:00
Tim Sarbin
0a206ce024
Fixed issues from last merge (#346) 2020-06-20 01:06:42 -04:00
Tim Sarbin
a8c6bbec9d
Fixed walking animations and pathing bugs. (#345) 2020-06-20 00:40:49 -04:00
Tim Sarbin
7b38a9d818
Updates (#340) 2020-06-19 02:19:27 -04:00
Tim Sarbin
2da08884c4
Added multiplayer support (#336) 2020-06-18 14:11:04 -04:00
Tim Sarbin
16dc775be1
Renamed scene to screen to avoid confusion of intent. (#334) 2020-06-13 20:36:20 -04:00
Tim Sarbin
52f8cd6d0c
Initial work to separate client and server logic (#330)
* Switched to json formatted characters

* Added infrastructure for networking

* Minor updates.

* more updates for map engine/rendering

* More map engine changes and fixes
2020-06-13 18:32:09 -04:00
Robin Eklind
ff4f0b0bfa
all: use goimports to format code and fix two minor typos in comments (#326)
Typos located using misspell: https://github.com/client9/misspell

Formatting done using goimports: https://godoc.org/golang.org/x/tools/cmd/goimports
2020-04-11 14:56:47 -04:00
dk
019bb920c9
Feature pl2 asset manager (#319)
* adding pl2 as a fiel format and an asset manager for pl2 files

* adding pl2 as a file format and an asset manager for pl2 files

* pl2 asset manager and file format

* added call in main.go to load palette transforms
* removed incorrect PaletteTransformType declarations from main.go

* removingn bad resource path for palette transform

* PL2 file format added, added to asset management

PL2 files are beside palette files in the mpq
These files define palette transforms of their respective base palette.

I've bound a command to d2term (in d2asset.go)
	load_pl2 <path>

* Clean up PL2 asset stuff

removed pl2 stuff from d2datadict, didn't belong in there
removed d2term debug binding

* minor cleanup for d2pl2
2020-02-26 22:52:05 -05:00
Alex Yatskov
664b8416f1
Remove global palettes; everything goes through d2asset now (#322)
* Configuration cleanup

* Cleanup

* remove global palettes
2020-02-26 22:46:47 -05:00
nicholas-eden
1011b2f030
Add simple index to query map (#321)
`renderPass2` is looping over every entity for every frame, this updates the method so it only evaluates each entity once.

Adds ability to query by rectangle or circle.
2020-02-26 08:40:32 -05:00
Alex Yatskov
a4efd41383
File format cleanup (#320)
* Configuration cleanup

* Cleanup

* cleanup file formats

* make palettes a proper fileformat
2020-02-26 08:39:38 -05:00
Ziemas
0f7571a5b9
Render animations from their origin in composite. (#318) 2020-02-25 09:49:21 -05:00
Alex Yatskov
418c798c2c
Add RenderFromOrigin method to Animation (#317)
* Configuration cleanup

* Cleanup

* Add RenderFromOrigin option
2020-02-24 23:04:01 -05:00
Alex Yatskov
6f2c212417
Continued work on GUI (#316)
* Configuration cleanup

* Cleanup

* Continued UI work
2020-02-24 22:35:21 -05:00
Ziemas
2285c31b53
Fix wall location by removing extraneous offset (#314) 2020-02-24 13:36:12 -05:00
nicholas-eden
f6014498ba
Use missile range and subloop (#311)
Turn on blending.  Calculate target using based on range and angle of hero to click.
2020-02-23 03:23:18 -05:00
Alex Yatskov
423cef304d
Screenshot and GIF recording capability (#310)
* Configuration cleanup

* Cleanup

* Gif animation and screenshot support
2020-02-22 23:59:45 -05:00
Ziemas
e4c84c4fb9
Direction changes. (#309)
* Take directions in the range of 0-63

* Shift direction handling in animation further back

* Don't need to get the DCC direction here.

Because it was added to animation.

* Check direction is within range
2020-02-22 22:33:58 -05:00
nicholas-eden
bdfdeda67b
Add support for missiles (#308)
* WIP: Add support for missiles

Break AnimatedEntity into two parts to support single and composite animations.  Summon misssiles on right click.

* Break animated entity down further

Move npc only logic to npc struct, reduce duplication in map entities

* Change a bunch of int32s to int
2020-02-22 20:44:30 -05:00
Alex Yatskov
2953d2171b
Configuration improvements (#307)
* Configuration cleanup

* Cleanup
2020-02-20 08:41:41 -05:00
Alex Yatskov
810b168ebf
Work in progress on GUI (#304)
* Work in progress on GUI refactor

* Remove WIP file

* Remove WIP style
2020-02-17 22:11:52 -05:00
Alex Yatskov
1983ec395d Cleanup error handling (#303) 2020-02-09 14:12:04 -05:00
Tim Sarbin
9478e2c2be
Fixed pathfinding crash (#301) 2020-02-08 21:33:14 -05:00
Alex Yatskov
5e958b9174
Scene and GUI rework (#300) 2020-02-08 21:02:37 -05:00
Nick
99e6acf2bb
Write default configuration file if one is not found. (#298) 2020-02-07 22:21:15 -05:00
Alex Yatskov
a04d2389c3
Fix terminal taking input when not visible, fix timescale command (#294) 2020-02-02 21:26:08 -05:00
Tim Sarbin
0c618bd31b
Fixed refactor bug for d2config (#293) 2020-02-02 18:58:26 -05:00
Ziemas
0b7a433ed2
Fix up subtile flag stuff (#288)
* Switch to a 2d array for looking up subtile flags

Also fix up the walkableArea generation

* Check correct tiletype for walls

And fix the subtile tooltip text.
2020-02-02 17:56:58 -05:00
Alex Yatskov
f33535cd5d
Add commands for vsync, fullscreen; move timescale implementation (#286)
* Add commands for vsync, fullscreen; move timescale implementation

* add binding for mapdebugvis
2020-02-02 14:04:37 -05:00
Tim Sarbin
3412c4338c
Added pathfinding and (buggy) collision data. (#285) 2020-02-02 12:46:19 -05:00
Tim Sarbin
935789dccf
Added more debugging to map test (#284) 2020-02-02 02:57:23 -05:00
Tim Sarbin
6606774ece
Refectoring to reduce code warnings (#283) 2020-02-01 21:51:49 -05:00
Alex Yatskov
ea4450f207
Move d2config to d2core, remove d2helper (#282) 2020-02-01 21:06:22 -05:00
Alex Yatskov
b5c1f5222d
Move rendering stuff out of d2common into d2render (#281)
* Move rendering stuff out of d2common into d2render

* Remove d2interface
2020-02-01 20:39:28 -05:00
Alex Yatskov
8a547ebf0e
Moving files around to make more sense (#279)
* Prevent input fighting between terminal and other input listeners.

* Moving files around, removing exports

* Add missing line
2020-02-01 18:55:56 -05:00
Alex Yatskov
e878ebcbcd
Prevent input fighting between terminal and other input listeners. (#278) 2020-02-01 14:35:55 -05:00
Tim Sarbin
2461142fbd
Minor changes to project layout (#276)
* Minor changes to reduce interdependencies on modules.
2020-01-31 23:18:11 -05:00
Tim Sarbin
6832a5a0db
merged d2shared into the core package (#275) 2020-01-26 00:39:13 -05:00
Alex Yatskov
8de0cde818 Event-based input manager with priority system (#274) 2020-01-25 23:28:21 -05:00
nicholas-eden
d6769975cd Initial inventory handling (#270)
Add struct to display inventory panel.
Add struct to handle inventory and merchant grids.

Hook up `i` key to toggle inventory panel.
2019-12-28 23:32:53 -05:00
Alex Yatskov
c01bedaedf Do not advance state in render (#269)
* Do not advance state in render

* Update advance logic for sprite and region
2019-12-28 23:32:24 -05:00
Alex Yatskov
49b9a190f2 Render to surface, not ebiten texture (#268)
* Render to surface, not ebiten texture

* Fix debug text
2019-12-28 16:46:08 -05:00
Ziemas
0c2b7cfd8d Advance hero animations on char select screen. (#267) 2019-12-26 11:14:26 -05:00
Alex Yatskov
b7e50bf098 Add terminal, surface, assetmanager commands (#266)
* Add terminal, surface, assetmanager commands

* echo command

* add verbose logging

* more logging, word wrap

* add timescale command
2019-12-26 11:13:05 -05:00
Alex Yatskov
0ee937f01b Rename Paperdoll to Composite (#265)
Make AnimatedEntity use Composite
2019-12-24 01:48:45 -05:00
Alex Yatskov
1b03e691b9 High level resource caching; resource cleanup (#264)
* Work on resource loading

* Use new material flag name. (#261)

Update ebiten ref while at it

* Hopefully fix CI (#262)

* Don't try to copy config.json on travis (#263)

I doesn't exist anymore

* Update D2Shared references

* Fix character selection rect

Co-authored-by: Ziemas <ziemas@ziemas.se>
2019-12-21 20:53:18 -05:00
Alex Yatskov
4ebe199a8e Move save game location to ~/.config/OpenDiablo2/Save (#258) 2019-12-17 23:20:06 -05:00
Alex Yatskov
d5a0038125 Configuration cleanup (#257)
* Cleanup config file loading, move defaults to code

* Default to fullscreen

* Cleanup

* Store configuration in UserConfigDir

* print config path on load and save
2019-12-17 21:32:37 -05:00
Alex Yatskov
cead000c3f Fix case sensitivity when loading MPQ files (#256)
* Fix case sensitivity when loading MPQ files

* remove print
2019-12-17 20:06:01 -05:00
Alex Yatskov
cc678ba747 Add asset manager (#253)
* Add asset manager

* Fix rebase

* Update asset manager to support mpq hash caching

* Update vendoring
2019-12-16 22:23:01 -05:00
nicholas-eden
d033c63e18 Initial in-game ui and keyboard controls (#254)
Move player movement out of `Game`, add arrow key movement.  Render bottom panel.
2019-12-16 11:04:39 -05:00
Alex Yatskov
a194913609 Engine and region reorganization in preperation for spatial partitioning (#249)
* Engine and region reorg
* Remove unnecessary file diff
* Remove extra render of debug mesh
2019-12-13 00:33:11 -05:00
Alex Yatskov
1262c80e6b Create viewport and camera types (#246) 2019-12-08 22:18:42 -05:00
nicholas-eden
9a8e16c411 Pause npcs at each target location for a random time (#245)
Loop through neutral animation a random number of repetitions before moving on.  Only run the skill animation once, it is not designed for looping.
2019-12-06 23:58:36 -05:00
nicholas-eden
b5db51800c Setup NPCs to follow paths (#243)
Change location to contain canonical location, add field to get rounded location for tile rendering.
If NPC has path, loop through path.
2019-12-06 09:44:51 -05:00
j0y
c6235411b7 Add basic movement (#240)
* Add basic movement

* Calculate step length based on tick time between updates, teleport to target if within one step.

* Smooth camera, hero movement

removed float to int conversions in Render and IsoToScreen functions

* Render hero in the center of the screen (assuming 800x600 resolution)

* Revert changing Render() parameters type

* Render hero in the tile loop

hero will naturally render in front of the walls of the current tile but behind the walls of the tile below

* Smoother steps near target coordinates

remove jitter from trying to get one step away from target on both axis
2019-12-02 16:55:48 -05:00
Ziemas
51d78bfcbf Draw object layers in order and generally untangle the direction mess. (#239)
* Implement drawing COF Layers by priority

Hack it up by using always draw order for direction 0 until we get a
better handle on directions in the engine.

* Take directions in "cof directions"

Transform into dcc directions for loading frames.

* Set characters to dir 0 in char select.

Direction 0 is now facing down universally
2019-11-26 21:04:36 -05:00
nicholas-eden
19257abddb Extract sprite from dc6 from D2Shared (#234)
Remove processing of dc6 file type from sprite creation.  Use dc6 loader from D2Shared.
2019-11-24 17:58:23 -05:00
負弌
30c3bb7330 Fix CJK render problem partially (#222)
* Fixed CJK render problem
* Add partial support of loading CJK fonts
2019-11-21 21:40:12 -05:00
Ziemas
e70378d627 Increase draw distance up and down (#209)
* Scroll slowly in map test by holding shift
* Increase draw distance up and down
Avoid issues with long tiles popping in and out of view. (As long as
camera is reasonably within bounds)
2019-11-18 18:23:33 -05:00
Ziemas
9117616b0c Fix the tile coordinates shown in the top left (#208) 2019-11-18 17:42:38 -05:00
Tim Sarbin
7f6e14c5d0
More map engine improvements. (#203) 2019-11-17 16:06:02 -05:00
Averrin
5eafa9cc0b Create tiles cache on region loading (#200)
* tile choice algo
* cycle region files
* switcher limited by preset
* create tile caches befor rendering
* remove keyLocked
2019-11-17 08:09:54 -05:00
Tim Sarbin
4254b0f020
Finished orientation values. (#198)
* Finished directions for entity.
2019-11-17 02:54:22 -05:00
Tim Sarbin
297184376f
Phase 1 prep work for gameplay (#196)
* Updates
* More merge adjustments.
* Don't commit local changes...
2019-11-17 01:14:58 -05:00
Averrin
c3ba3f71e4 Switcher with presets & better tiles randomizing (#173)
* tile choice algo
* cycle region files
* switcher limited by preset
2019-11-17 00:52:13 -05:00
ndechiara
1c2b4869a1 Migrate out d2common d2helper d2data modules (#195)
* Switch items to dynamic load with a common struct, add misc.txt loading
* Update Ebiten Reference
* Switch references to point to D2Shared
* Migrate part 2
2019-11-17 00:16:33 -05:00
ndechiara
f13433f299 Switch items to dynamic load with a common struct, add misc.txt loading (#185) 2019-11-15 22:31:10 -05:00
axx
c72c4d5768 Some corrections for credits (#183)
Related to issue #77
2019-11-15 19:47:58 -05:00
Ziemas
0475a11512 Toggle tile display in map test with F7 (#172)
* Toggle tile display in map test with F7
* Sub-tile display
Cycle through tile display modes with F7
2019-11-15 09:04:27 -05:00
Myles
b9209541c8 Closes Issue#176 (#178) 2019-11-14 23:55:51 -05:00
Tim Sarbin
b97bf6353d
Added inventory objects. (#177) 2019-11-14 22:20:01 -05:00
Averrin
78a70c2d2b add map switcher (#162) 2019-11-13 14:26:42 -05:00
TehGoat
055fcd72ed Idle animation and hover gets out of sync (#161) 2019-11-13 12:56:54 -05:00
TehGoat
358fa1481c Modified hero animation speed (#160) 2019-11-13 12:32:17 -05:00
Averrin
f83ab90d96 Add CONTRIBUTORS file content to credits screen (#159) 2019-11-13 11:56:45 -05:00
Tim Sarbin
a8171145f9
Started work on gameplay scene. (#153) 2019-11-13 00:31:52 -05:00
Tim Sarbin
4fa66988d4
Added the scrollbar. (#152) 2019-11-12 23:44:04 -05:00
Robin Eklind
e1d9f676cf fix permissions on .OpenDiablo2 directory (#144) 2019-11-12 08:15:50 -05:00
Tim Sarbin
a6a9434267
Added more functionality to character select screen. (#143) 2019-11-11 23:48:55 -05:00
Tim Sarbin
352ff81b72
Fixed texture atlas. Added GC debugging. (#140) 2019-11-10 20:13:10 -05:00
Tim Sarbin
3f01ad09ae
Renamed files to lowercase. (#137) 2019-11-10 17:36:25 -05:00
Ziemas
d4d3fdfad3 Checkboxes! (#136)
And add them to the hero class scene.
2019-11-10 17:17:42 -05:00
Tim Sarbin
5d5009208b
Renamed all files to proper go conventions. (#134) 2019-11-10 14:06:05 -05:00
Tim Sarbin
f156475731
Added text entry. Fixed performance issue. Added error checking. (#132) 2019-11-10 12:28:41 -05:00
Tim Sarbin
e8292e9c42
More optimizations and cleanup. (#131) 2019-11-10 10:44:13 -05:00
Tim Sarbin
f2b1bdfba4
More package cleanup. (#130) 2019-11-10 08:51:02 -05:00
Tim Sarbin
b41f7f4dab
Restructured everything. (#128) 2019-11-10 03:36:53 -05:00